22
我有一个主脚本,其中定义了一些常量。然后我有一个模块(psm1)来包含帮助函数。详情如下:PowerShell模块中的变量
在主脚本,我已导入模块的对象:
$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。我错过了什么?
我一直在寻找并阅读about_scopes,但仍然不清楚模块中定义的变量是否可以使用模块中函数的脚本范围来设置。脚本范围听起来像是在模块上下文中使用不当,应称为模块范围或类似的东西。谢谢您的回答! –
@ChrisMagnuson我同意这个名字不是很好,但它确实有意义(与“普通”脚本相关的区别在于模块状态在返回给调用者后仍然存在)。 – Richard