PowerShell中的模块中的变量

时间:2013-01-21 13:12:25

标签: powershell module

我有一个主脚本,其中定义了一些常量。然后我有一个模块(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。我错过了什么?

1 个答案:

答案 0 :(得分:34)

Function SetSQLServerAddr ([string] $name)
{
    $SQLServer = $name
}

在该功能的范围内创建一个新的本地 $SQLServer

如果要更新模块(.psm1)范围内的变量,则需要在名称前加上以表示:

Function SetSQLServerAddr ([string] $name)
{
    $script:SQLServer = $name
}

有关范围的更多信息,请参阅get-help about_scopes