我有一个主脚本,其中定义了一些常量。然后我有一个模块(psm1)来包含辅助函数。详情如下:
在主脚本中,我已将模块导入为对象:
$cud2ADhleper = Import-Module -Force $cud2ADhelperModule -AsCustomObject
在模块中,我有两个变量,
[string]$SQLServer = $null
Function SetSQLServerAddr ([string] $name)
{
$SQLServer = $name
}
Function GetSQLServerAddr
{
return $SQLServer
}
我的理解是因为我没有从模块中导出$SQLServer
,所以这个变量应该是本地的,我应该可以设置/获取它。
事实证明不然。在我调用SetSQLServerAddr ([string] $name)
之后,然后调用GetSQLServerAddr
返回$ null。我错过了什么?
答案 0 :(得分:34)
Function SetSQLServerAddr ([string] $name)
{
$SQLServer = $name
}
在该功能的范围内创建一个新的本地 $SQLServer
。
如果要更新模块(.psm1
)范围内的变量,则需要在名称前加上以表示:
Function SetSQLServerAddr ([string] $name)
{
$script:SQLServer = $name
}
有关范围的更多信息,请参阅get-help about_scopes
。