Passer des paramètres à un script PowerShell
Vous pouvez transmettre des paramètres à un script PowerShell de deux manières différentes. (Si vous ne connaissez pas PowerShell, veuillez consulter le conseil, « ` link: / windows-Introduction_to_PowerShell [Introduction à PowerShell] ` ».) Les paramètres peuvent être passés par position ou par nom. Les deux sont également valables, alors regardons comment chacun est fait.
J’ai un script PowerShell nommé LookForFiles.ps1. Il recherche les fichiers dans un répertoire donné et affiche les fichiers dont la taille est supérieure à 20 Ko. En ce moment, mon script ressemble à ceci:
$files = Get-ChildItem C:\Temp foreach ($file in $files) { if ($file.length -gt 20000) { Write-Output $file } }
Comme vous pouvez le voir, mon nom de répertoire (C: \ Temp) et la taille à vérifier (20000) sont tous deux codés en dur. Je souhaite, à la place, passer le nom et la taille du répertoire afin que mon script soit plus flexible.
Tout d’abord, je vais changer les choses pour que je passe ces paramètres par position, c’est-à-dire que le premier paramètre sera le répertoire et le deuxième paramètre sera la taille. Mon nouveau script ressemble à ceci:
$files = Get-ChildItem args[0] foreach ($file in $files) { if ($file.length -gt args[1]) { Write-Output $file } }
Maintenant, j’appelle mon script et j’observe la sortie: (Voir la Figure 1.)
Figure 1. Passage des paramètres de position.
Notez que lorsque j’invoque le script, je passe deux paramètres, à savoir, « C: \ Temp » et « 20000 ». Ceux-ci sont remplis dans « $ args [0] » et « $ args [1] »
respectivement pour que le script s’exécute exactement comme précédemment. Modifions maintenant le script pour qu’il attende des paramètres nommés:
param([string] $dir = "C:\Temp", [int32] $size = 20000) $files = Get-ChildItem $dir foreach ($file in $files) { if ($file.length -gt $size) { Write-Output $file } }
Notez que j’ai supprimé les références aux variables « $ args ». Notez également que la première ligne (étendue à la deuxième ligne) est un « param »
déclaration. Cela indique à PowerShell d’attendre des paramètres nommés. Cette instruction « param » doit être la première ligne de votre script. Il définit deux variables et les initialise aux valeurs par défaut. Il définit la variable de chaîne $ dir et la met par défaut à « C: \ Temp » et il définit la variable int32 (numérique) $ size et la met par défaut à 20000. Ces valeurs sont initialisées avec des valeurs par défaut de sorte que si aucun paramètre n’est passé lorsque le script est appelé, il fonctionnera toujours et utilisera ces valeurs.
À la place de l’endroit où j’avais l’habitude d’avoir $ args [0], j’ai maintenant la variable $ dir et à la place de l’endroit où j’avais l’habitude d’avoir $ args [1], j’ai maintenant la variable $ size. Appelons le script, en spécifiant ces paramètres nommés:
(Voir la figure 2.)
Figure 2. Passage de paramètres nommés.
Maintenant, lorsque le script est appelé, je spécifie « -dir » suivi du répertoire qui m’intéresse, et je spécifie « -size » pour indiquer la taille qui m’intéresse. Comme il s’agit de paramètres nommés, je peux inverser leur ordre. que « -size » est spécifié en premier et « -dir » est spécifié en second.
Ou je peux les omettre entièrement et les valeurs à l’intérieur du script seront utilisées.
Cette astuce (2902) s’applique à Windows 7, 8 et 10.