Comment fournir des attributs de param pour un script dans Powershell?
J'ai ce script peut être appelé de deux façons:
MyScript -foo path\to\folder
ou
MyScript -bar path\to\folder
(Qui est, je peux passer un commutateur ainsi que d'un dossier ou d'un argument de type chaîne, plus un dossier.)
J'ai essayé de mettre déclarations de paramètres dans mon script de manière à refléter cette syntaxe:
param(
[parameter(Mandatory=$false)] [switch]$foo,
[parameter(Mandatory=$false)] [String]$bar,
[parameter(Mandatory=$true)] [System.IO.FileInfo]$path
)
Mais puis-je passer path
explicitement pour appeler le script:
MyScript -l -path path\to\folder
Alors, comment puis-je le faire faire à la fois bar
et path
paramètres positionnels?
Note: Si j'ai choisi d'une manière extraordinairement stupide syntaxe pour appeler le script, je peux encore changer.
source d'informationauteur sbi
Vous devez vous connecter pour publier un commentaire.
Un couple de choses: Vous avez besoin d'utiliser des jeux de paramètres pour dire PowerShell qui y sont mutuellement exclusifs façons d'appeler votre script; c'est-à-dire, vous ne pouvez pas utiliser l'interrupteur et la chaîne en même temps. Les décors aussi servir pour vous permettre de définir la position des deux
$bar
et$filepath
être à l'indice 0. Les commutateurs n'ont pas besoin d'être placé en position, car ils ne sont pas ambigu de la reliure et être placé n'importe où. En outre, au moins un paramètre dans chaque jeu devrait être obligatoire.La
CmdletBinding
attribut est nécessaire de spécifier le jeu de paramètres doit être la valeur par défaut si la fonction est appelée sans paramètres.Voici la syntaxe de l'aide pour la configuration ci-dessus:
Et voici la sortie pour diverses invocations:
Espère que cette aide.
Comme expliquer ici vous pouvez spécifier le paramètre de position de votre paramètre.