J'ai un script principal, où quelques constantes sont définies. J'ai ensuite un module (psm1) pour inclure des fonctions d'assistance. Les détails sont:
Dans le script principal, j'ai importé le module en tant qu'objet:
$cud2ADhleper = Import-Module -Force $cud2ADhelperModule -AsCustomObject
Dans le module, j'ai deux variables,
[string]$SQLServer = $null
Function SetSQLServerAddr ([string] $name)
{
$SQLServer = $name
}
Function GetSQLServerAddr
{
return $SQLServer
}
Ma compréhension est que parce que je n'exporte pas $SQLServer
À partir du module, cette variable doit être locale et je devrais pouvoir la définir/l'obtenir.
Il en est autrement. Après avoir appelé SetSQLServerAddr ([string] $name)
, alors callling GetSQLServerAddr
renvoie $ null. Qu'est-ce que j'ai raté?
Function SetSQLServerAddr ([string] $name)
{
$SQLServer = $name
}
Cela crée un nouveau local $SQLServer
dans le cadre de cette fonction.
Si vous souhaitez mettre à jour une variable sur le module (.psm1
) alors vous devez préfixer le nom pour indiquer que:
Function SetSQLServerAddr ([string] $name)
{
$script:SQLServer = $name
}
Pour plus d'informations sur les étendues, voir get-help about_scopes
.