我有一个主脚本,其中定义了一些常量。然后我有一个模块(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。我错过了什么?
最佳答案
Function SetSQLServerAddr ([string] $name)
{
$SQLServer = $name
}
这会在该函数的范围内创建一个新的本地 $SQLServer
。
如果您想更新模块 (.psm1
) 范围内的变量,则需要在名称前添加前缀以表明:
Function SetSQLServerAddr ([string] $name)
{
$script:SQLServer = $name
}
有关范围的更多信息,请参阅 get-help about_scopes
.
关于powershell - PowerShell 模块中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14439431/