32

いくつかの定数が定義されているメインスクリプトがあります。次に、ヘルパー関数を含めるモジュール(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)、calllingGetSQLServerAddrは$nullを返します。私は何を取りこぼしたか?

4

1 に答える 1

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

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

module()スコープで変数を更新する場合は.psm1、名前の前に次のことを示す必要があります。

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

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

于 2013-01-21T13:47:41.657 に答える