use*_*880 28 powershell module
我有一个主脚本,其中定义了一些常量.然后我有一个模块(psm1)来包含辅助函数.细节是:
在主脚本中,我将模块作为对象导入:
$cud2ADhleper = Import-Module -Force $cud2ADhelperModule -AsCustomObject
Run Code Online (Sandbox Code Playgroud)
在模块中,我有两个变量,
[string]$SQLServer = $null
Function SetSQLServerAddr ([string] $name)
{
$SQLServer = $name
}
Function GetSQLServerAddr
{
return $SQLServer
}
Run Code Online (Sandbox Code Playgroud)
我的理解是因为我没有$SQLServer从模块导出,这个变量应该是本地的,我应该能够设置/获取它.
事实证明不然.在我调用之后SetSQLServerAddr ([string] $name),然后callling GetSQLServerAddr返回$ null.我错过了什么?
Ric*_*ard 38
Function SetSQLServerAddr ([string] $name)
{
$SQLServer = $name
}
Run Code Online (Sandbox Code Playgroud)
这会在该函数的范围内创建一个新的本地 $SQLServer.
如果要在module(.psm1)范围更新变量,则需要在名称前添加前缀以指示:
Function SetSQLServerAddr ([string] $name)
{
$script:SQLServer = $name
}
Run Code Online (Sandbox Code Playgroud)
有关范围的更多信息,请参阅get-help about_scopes.
| 归档时间: |
|
| 查看次数: |
21627 次 |
| 最近记录: |