Vous êtes en train de réinventer la roue. Normal scripts PowerShell ont des paramètres de départ avec -
, comme script.ps1 -server http://devserver
Puis de les manipuler en param
section dans le début du fichier (voir le tutoriel: http://devcentral.f5.com/weblogs/Joe/archive/2009/01/13/powershell-abcs---p-is-for-parameters.aspx)
Vous pouvez également affecter des valeurs par défaut pour votre params, de les lire à partir de la console en cas de non disponibilité ou d'arrêter l'exécution du script:
param (
[string]$server = "http://defaultserver",
[string]$username = $(throw "-username is required."),
[string]$password = $( Read-Host "Input password, please" )
)
Dans le script, vous pouvez tout simplement
write-output $server
puisque tous les paramètres sont des variables disponibles dans le script de la portée.
Dans cet exemple, l' $server
obtient une valeur par défaut si le script est appelé sans elle, le script s'arrête si vous omettez l' -username
de paramètre et de la demande d'entrée de la borne s' -password
est omis.
Mise à jour:
Vous pourriez aussi bien souhaitez passer un "drapeau" (un booléen (true/false paramètre) pour un script PowerShell. Par exemple, votre script peut accepter une "force" où le script s'exécute dans une plus prudent mode lorsque la force n'est pas utilisée.
Le mot clé, c'est - [switch]
type de paramètre:
param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
Dans le script, alors vous pouvez travailler avec elle comme ceci:
if ($force) {
//deletes a file or does something "bad"
}
Maintenant, lors de l'appel du script, vous définissez le commutateur/indicateur de paramètre comme ceci:
.\yourscript.ps1 -server "http://otherserver" -force
Si vous souhaitez explicitement à l'état du pavillon n'est pas défini, il y a une syntaxe particulière pour que
.\yourscript.ps1 -server "http://otherserver" -force:$false