2012-11-16 27 views
7

C言語や他の言語と同様に、スクリプトを物理的に実行するときに、スクリプト/ .exe引数を与えることができます。たとえば:Powershellスクリプトの起動時の引数

myScript.exe Hello 10 P

これによりこんにちは、10およびPは、プログラム自体にいくつかの変数に渡されます。

これはPowershellで可能ですか?もしそうなら、与えられた$変数にこれらの引数を与える方法

ありがとう!

答えて

16

ので、同様のparamブロックを使用してスクリプトを定義します。

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

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

あなたはさらに例えば、同様のパラメータを修飾入力することができます。

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

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

ます。また、デフォルト値と必要な値などを指定することができます。

-- 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" 

さらに高度な機能(属性パラメーターを検証するためのテストなど)。しかし、これはあなたを得る必要があります。

7

@Keithヒルの答えにだけ補足...

あなたは「C」についての話として、あなたもautomatic variable$argsを使用してパラメータを持つスクリプトを書くことができます。

$Args関数、スクリプト、またはスクリプトブロックに渡される宣言されていないパラメータやパラメータ値の配列が含まれています。

-- 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] 
} 

あなたは

.\foo3.ps1 coucou bonjour "hello world" 
first param is coucou 
0) coucou 
1) bonjour 
2) hello world 
THRスクリプトを呼び出すことができます
関連する問題