<p>Vous réinventez la roue. Les scripts PowerShell normaux ont des paramètres commençant par <code>-</code>, comme <code>script.ps1 -server http://devserver</code></p>
<p>Ensuite, vous les gérez dans une section <code>param</code> (notez que cela <strong>doit</strong> commencer à la première ligne non commentée de votre script).</p>
<p>Vous pouvez également assigner 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 :</p>
<pre><code class="lang-auto"> param (
[string]$server = "http://defaultserver",
[Parameter(Mandatory=$true)][string]$username,
[string]$password = $( Read-Host "Input password, please" )
)
</code></pre>
<p>À l’intérieur du script, vous pouvez simplement écrire</p>
<pre><code class="lang-auto">write-output $server
</code></pre>
<p>puisque tous les paramètres deviennent des variables disponibles dans la portée du script.</p>
<p>Dans cet exemple, <code>$server</code> reçoit une valeur par défaut si le script est appelé sans ce paramètre, le script s’arrête si vous omettez le paramètre <code>-username</code> et demande une saisie au terminal si <code>-password</code> est omis.</p>
<p>Mise à jour :<br>
Vous voudrez peut-être aussi passer un “drapeau” (un paramètre booléen vrai/faux) à un script PowerShell. Par exemple, votre script peut accepter un paramètre “force” où le script s’exécute dans un mode plus prudent lorsque force n’est pas utilisé.</p>
<p>Le mot-clé pour cela est le type de paramètre <code>[switch]</code> :</p>
<pre><code class="lang-auto"> param (
[string]$server = "http://defaultserver",
[string]$password = $( Read-Host "Input password, please" ),
[switch]$force = $false
)
</code></pre>
<p>À l’intérieur du script, vous travailleriez avec comme ceci :</p>
<pre><code class="lang-auto">if ($force) {
//deletes a file or does something "bad"
}
</code></pre>
<p>Maintenant, lors de l’appel du script, vous définissez le paramètre switch/drapeau comme ceci :</p>
<pre><code class="lang-auto">.\yourscript.ps1 -server "http://otherserver" -force
</code></pre>
<p>Si vous voulez explicitement indiquer que le drapeau n’est pas activé, il existe une syntaxe spéciale pour cela</p>
<pre><code class="lang-auto">.\yourscript.ps1 -server "http://otherserver" -force:$false
</code></pre>
<p>Liens vers la documentation Microsoft pertinente (pour PowerShell 5.0 ; les versions 3.0 et 4.0 sont également disponibles aux liens) :</p>
<ul>
<li>
<p><a href="https://technet.microsoft.com/en-us/library/hh847841.aspx">about_Scripts</a></p>
</li>
<li>
<p>[about_Functions](<a href="https://technet.microsoft.com/">https://technet.microsoft.com/</a></p>
</li>
</ul>
<p><em>(Réponse tronquée)</em></p>