web-dev-qa-db-fra.com

Variables dans les modules dans PowerShell

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é?

29
user1866880
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 .

38
Richard