web-dev-qa-db-ja.com

powershellの$ args配列にアクセスする

次のようなテスト用のPowerShell V2スクリプトがあります。

    function test_args()
    {
      Write-Host "here's arg 0: $args[0]"
      Write-Host "here's arg 1: $args[1]"
    }


    test_args

PowerShellコマンドプロンプトからこれを呼び出すと、画面にこれが表示されます:

here's arg[0]: [0]

here's arg[1]: [1]

私が欲しかったものではありません。 $ args [0]と$ args [1]をスクリプト内の新しい変数にコピーしてから使用する必要があるようです。そうすれば、うまくアクセスできます。

コード内のインデックス付き$ argsにアクセスする方法はありますか?さまざまな方法で中括弧を使用してみましたが、運はありません。

最終的には名前付きパラメーターに移行しますが、作業中のスクリプト(このデモではありません)は、バッチファイルの単純な移植版です。

25
larryq

代わりにこれを試してください:

_function test_args()
{
  Write-Host "here's arg 0: $($args[0])"
  Write-Host "here's arg 1: $($args[1])"
}

test_args foo bar
_

_$args_ではなく_$arg_であることに注意してください。また、文字列でPowerShell変数を使用する場合、PowerShellは変数の値のみを置き換えます。 _$args[0]_のような式を直接使用することはできません。ただし、式を二重引用符で囲まれた文字列内の$()部分式グループに入れて、PowerShellで式を評価し、結果を文字列に変換できます。

38
Keith Hill