Ho uno script principale, in cui sono definite alcune costanti. Quindi ho un modulo (psm1) per includere le funzioni di supporto. I dettagli sono:Variabili nei moduli in PowerShell
Nello script principale, ho importato il modulo come un oggetto:
$cud2ADhleper = Import-Module -Force $cud2ADhelperModule -AsCustomObject
Nel modulo, ho due variabili,
[string]$SQLServer = $null
Function SetSQLServerAddr ([string] $name)
{
$SQLServer = $name
}
Function GetSQLServerAddr
{
return $SQLServer
}
la mia comprensione è che, a causa Non sto esportando $SQLServer
dal modulo, questa variabile dovrebbe essere locale e dovrei essere in grado di impostarla/ottenerla.
Risulta altrimenti. Dopo aver chiamato SetSQLServerAddr ([string] $name)
, il callling GetSQLServerAddr
restituisce $ null. Cosa mi sono perso?
Ho cercato dappertutto e ho letto about_scopes ma non mi era ancora chiaro che una variabile definita in un modulo può essere impostata utilizzando l'ambito dello script in una funzione all'interno del modulo. L'ambito dello script suona come se fosse un termine improprio nel contesto di un modulo e dovrebbe essere chiamato scope del modulo o qualcosa del genere. La ringrazio per la risposta! –
@ChrisMagnuson Concordo sul fatto che il nome non sia eccezionale, ma ha senso (la differenza rilevante rispetto a uno script "normale" è che lo stato del modulo persiste dopo essere tornato al chiamante). – Richard