Dans Powershell, comment définir les valeurs des variables dans une fonction et que la valeur disponible dans la portée parent?
Je suis en train de mettre les valeurs de certaines variables à l'aide d'une fonction. Mon code est ci-dessous:
$BackupFile = $null
$TaskSequenceID = $null
$OSDComputerName = $null
$capturedWimPath = $null
Function Set-OsToBuild
{
switch ($OsToBuild)
{
"Win7x64"
{
$BackupFile = "Win7x64-SP1.wim"
$TaskSequenceID = "WIN7X64BC"
$OSDComputerName = "Ref-Win7x64"
$capturedWimPath = "$($PathToMdtShare)\Captures$BackupFile"
}
}
}
Le problème est que ces valeurs pour $BackupFile, $TaskSequenceID, $OSDComputerName et $capturedWimPath sont en blanc/nul à l'extérieur de cette fonction.
Quelle est la bonne façon de le faire? Je veux mettre ces valeurs à l'intérieur de cette fonction et les valeurs disponibles plus tard dans le script, dans la portée parent.
Les liens sur le côté spectacle de cette stackoverflow.com/questions/1123634/... pour créer de portée mondiale sont variables et vous pouvez toujours retourner un objet personnalisé de cette information
OriginalL'auteur Dbloom | 2015-01-08
Vous devez vous connecter pour publier un commentaire.
Les variables sont créées dans votre fonction de
local
-portée. Ces variables sont supprimés lorsque votre fonction est effectuée.Source: about_Scopes
Si vous avez besoin des variables disponibles pour le script, puis de les écrire à la
script
portée.Si vous souhaitez conserver les valeurs pour l'ensemble des séances (jusqu'à ce que vous fermez le powershell-processus), alors vous devriez utiliser le
global
portée.OriginalL'auteur Frode F.
Le powershell
about_scope
document d'aide est ce que vous voulez lire pour cela.Plus particulièrement, la présente section:
Donc, en fonction de vos besoins, vous pouvez utiliser l'une des opérations suivantes je crois.
$global:BackupFile = "Win7x64-SP1.wim"
$script:BackupFile = "Win7x64-SP1.wim"
$1:BackupFile = "Win7x64-SP1.wim"
OriginalL'auteur Etan Reisner