9

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

myScript.exe Hello 10 P

これにより、Hello、10、および P がプログラム自体の変数に渡されます。

これは Powershell で可能ですか? もしそうなら、それらの引数を特定の $variable にどのように与えますか

ありがとう!

4

2 に答える 2

17

次のように 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"

高度な機能 (属性を指定してパラメーターを検証するなど) を使用すると、さらに手の込んだものにすることができます。しかし、これでうまくいくはずです。

于 2012-11-16T00:45:31.793 に答える
10

@Keith Hillの回答を補完するだけです...

「C」について話しているように、自動変数 $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
于 2012-11-16T04:53:12.247 に答える