Overblog Tous les blogs Top blogs Technologie & Science Tous les blogs Technologie & Science
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

[PS1] wscript.arguments.named.exists en Powershell

Publié le par damcuvelier

Sur le technet, il est dit, qu'il n'existe pas d'équivalence en Powershell à wscript.arguments.named.exists... bah si en fait:

Par l'exemple:

en vbscript, si vous voulez faire un script avec un paramètre simple.
Comme /install et /uninstall.

Il suffit de faire:

if wscript.arguments.named.exists("install") then
<action pour install>
elseif wscript.arguments.named.exists("uninstall") then
<action pour uninstall>
end if

stricto sensu, oui, le technet n'est pas tord, c'est vrai, il n'existe pas de fonction powersell
qui serait de la forme $arguments.named.exists("install").

Mais, il existe une solution:

vous déclarez vous arguments comme faux dès le début avec une déclaration [switch]:

param (
    [switch]$arg1 = $false,
    [switch]$arg2
= $false,
    [switch]$arg3 = $false

<...>
 )


puis dans votre script, vous analysez qu'ils éxistent ou non:
if ($arg1)
{<action pour arg1>}

if ($arg2)
{<action pour arg2>}

if ($arg3)
{<action pour arg3>}

<...>


Et voilà, l'équivalence de wscript.arguments.named.exists, est possible:

 

if wscript.arguments.named.exists("arg%") =

param (
    [switch]$arg%= $false
)

+

if ($arg%)

 

----------------------------

C'est ma solution, elle fonctionne avec plusieurs arguments.

Par contre, il ne s'agit pas d'argument en [string], il n'accepte pas de valeur.

 

mais c'est toujours mieux (et plus propre) d'écrire:

"toto.ps1 -install" ou "toto.ps1 -uninstall"

que

"toto.ps1 -action:install" "toto.ps1 -action:uninstall"

 

Commenter cet article

K
Zoom by Itsvan Banyai &#8211; An amazing wordless book that exemplifies that there is always more to things than meets the eye.
Répondre