Vous réinventez la roue. Les scripts PowerShell normaux ont des paramètres commençant par -
, commescript.ps1 -server http://devserver
Ensuite, vous les gérez dans la param
section au début du fichier.
Vous pouvez également attribuer des valeurs par défaut à vos paramètres, les lire depuis la console s'ils ne sont pas disponibles ou arrêter l'exécution du script:
param (
[string]$server = "http://defaultserver",
[Parameter(Mandatory=$true)][string]$username,
[string]$password = $( Read-Host "Input password, please" )
)
Dans le script, vous pouvez simplement
write-output $server
puisque tous les paramètres deviennent des variables disponibles dans la portée du script.
Dans cet exemple, le $server
obtient une valeur par défaut si le script est appelé sans lui, le script s'arrête si vous omettez le -username
paramètre et demande une entrée de terminal si -password
est omis.
Mise à jour: vous pouvez également vouloir passer un "indicateur" (un paramètre booléen vrai / faux) à un script PowerShell. Par exemple, votre script peut accepter une "force" où le script s'exécute dans un mode plus prudent lorsque la force n'est pas utilisée.
Le mot clé pour cela est le [switch]
type de paramètre:
param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
À l'intérieur du script, vous travailleriez avec comme ceci:
if ($force) {
//deletes a file or does something "bad"
}
Maintenant, lorsque vous appelez le script, vous définissez le paramètre switch / flag comme ceci:
.\yourscript.ps1 -server "http://otherserver" -force
Si vous souhaitez explicitement indiquer que l'indicateur n'est pas défini, il existe une syntaxe spéciale pour cela
.\yourscript.ps1 -server "http://otherserver" -force:$false
Liens vers la documentation Microsoft pertinente (pour PowerShell 5.0; les versions 3.0 et 4.0 sont également disponibles sur les liens):
[string]$username = $(throw "-username is required.")
il y a syntaxe des paramètres obligatoires:[Parameter(Mandatory=$true)][string]$username
. Voici plus d'informations sur la différence entre ces techniques: blogs.technet.com/b/heyscriptingguy/archive/2011/05/22/…