2012-11-16 4 views
7

Come in C e in altre lingue, è possibile assegnare gli argomenti script/.exe quando si esegue fisicamente lo script. Ad esempio:Argomenti con script Powershell all'avvio

myScript.exe Hello 10 P

Per cui Ciao, 10 e P sono passati a qualche variabile nel programma stesso.

È possibile in PowerShell? e, in caso affermativo, come si danno a tali argomenti una variabile $ data

Grazie!

risposta

16

Definire lo script con un blocco param in questo modo:

-- Start of script foo.ps1 -- 
param($msg, $num, $char) 

"You passed in $msg, $num and $char" 

si può ulteriormente digitare qualificarsi parametri così ad esempio:

-- Start of script foo2.ps1 -- 
param([string]$msg, [int]$num, [char]$char) 

"You passed in $msg, $num and $char" 

È inoltre possibile specificare i valori di default e valori necessari Es:

-- Start of script foo3.ps1 -- 
param([string]$msg=$(throw "Msg param is required"), [int]$num, [char]$char="P") 

"You passed in $msg, $num and $char" 

È possibile ottenere ancora più elaborato con funzioni avanzate (specificare attributo tes per validare i parametri, ecc.). Ma questo dovrebbe farti andare.

7

Solo un complemento @Keith Hill risposta ...

Come si parla di 'C', è anche possibile scrivere uno script con i parametri utilizzando il automatic variable$args.

$Args Contiene un array di parametri non dichiarati e/o valori di parametro passati a una funzione, script o blocco di script.

-- Start of script foo3.ps1 -- 
if ($args.length -gt 0) 
{ 
    write-host "first param is $($args[0])" 
} 

for ($i=0 ; $i -lt $args.length ; $i++) 
{ 
    write-host "$i) " $args[$i] 
} 

è possibile chiamare lo script thr

.\foo3.ps1 coucou bonjour "hello world" 
first param is coucou 
0) coucou 
1) bonjour 
2) hello world