Ich habe ein Hauptskript, in dem einige Konstanten definiert sind. Ich habe dann ein Modul (psm1), um Hilfsfunktionen einzuschließen. Die Details sind:Variablen in Modulen in PowerShell
Im Haupt Skript, ich habe das Modul als ein Objekt importiert:
$cud2ADhleper = Import-Module -Force $cud2ADhelperModule -AsCustomObject
Im Modul, ich habe zwei Variablen,
[string]$SQLServer = $null
Function SetSQLServerAddr ([string] $name)
{
$SQLServer = $name
}
Function GetSQLServerAddr
{
return $SQLServer
}
Mein Verständnis ist, dass, weil Ich exportiere nicht $SQLServer
aus dem Modul, diese Variable sollte lokal sein, und ich sollte Set/Get es sein können.
Es stellt sich heraus, anders. Nachdem ich SetSQLServerAddr ([string] $name)
angerufen habe, gibt der Aufruf GetSQLServerAddr
$ null zurück. Was habe ich verpasst?
Ich habe überall gesucht und about_scopes gelesen, aber es war mir immer noch nicht klar, dass eine in einem Modul definierte Variable mit dem Skriptbereich in einer Funktion innerhalb des Moduls festgelegt werden kann. Der Skriptbereich klingt wie er ist im Kontext eines Moduls falsch und sollte Modulumfang oder etwas ähnliches genannt werden. Vielen Dank für Ihre Antwort! –
@ChrisMagnuson Ich stimme zu, der Name ist nicht groß, aber es macht Sinn (der relevante Unterschied zu einem "normalen" Skript ist, dass der Modulstatus nach dem Zurückkehren zum Aufrufer bestehen bleibt). – Richard