web-dev-qa-db-ja.com

PowerShellのモジュールの変数

いくつかの定数が定義されているメインスクリプトがあります。次に、ヘルパー関数を含めるモジュール(psm1)があります。詳細は次のとおりです。

メインスクリプトでは、モジュールをオブジェクトとしてインポートしました。

_$cud2ADhleper = Import-Module -Force $cud2ADhelperModule -AsCustomObject
_

モジュールには、2つの変数があります。

_[string]$SQLServer = $null

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

私の理解では、モジュールから_$SQLServer_をエクスポートしていないため、この変数はローカルであり、設定/取得できるはずです。

それ以外の場合は判明します。 SetSQLServerAddr ([string] $name)を呼び出した後、GetSQLServerAddrを呼び出すと$ nullが返されます。私は何を取りこぼしたか?

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

これにより、その関数のスコープ内に新しいlocal$SQLServerが作成されます。

モジュール(.psm1)スコープで変数を更新する場合は、名前にプレフィックスを付けて、次のことを示す必要があります。

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

スコープの詳細については、 get-help about_scopes を参照してください。

38
Richard