8

括弧付きのpowershellでパラメーターを使用して関数を呼び出す方法。

私は例としてこの機能を持っています

function Greet([string]$name , [int]$times)
{
    for ([int]$i = 1; $i -le $times;$i++)
    {
        Write-Host Hiiii $name
    }
}

Greet Ricardo 5orを使用して関数を呼び出すと、 Greet "Ricardo" 5動作します。しかし、Greet ("Ricardo",5)または使用するGreet("Ricardo" ; 5)と失敗します。

なにが問題ですか?

4

1 に答える 1

18

関数はコマンドレットのように動作します。つまり、dir(c:\ temp)とは入力しません。関数は同様に、スペースで区切られたパラメーターを取り、コマンドレットのように、位置パラメーター、名前付きパラメーター、およびオプションのパラメーターをサポートします。

Greet Recardo 5
Greet -times 5 -name Ricardo

PowerShellは()を使用して、次のような式を指定できるようにします。

function Greet([string[]]$names, [int]$times=5) {
    foreach ($name in $names) {
        1..$times | Foreach {"Hi $name"}
    }
}

Greet Ricardo (1+4)

Great Ricardo    # Note that $times defaults to 5

カンマ区切りのリストを使用して、単純な配列を指定することもできます。例:

Greet Ricardo,Lucy,Ethyl (6-1)

したがって、そのようなものを渡すと、 2つの要素と("Ricardo",5)を含む配列である単一のパラメータ値として評価されます。これはパラメーターに渡されますが、パラメーターの値はありません。"Ricardo"5$name$times

括弧で囲まれたパラメータリストを使用するのは、.NETメソッドを呼び出すときだけです。

"Hello World".Substring(6, 3)
于 2012-06-16T06:24:16.693 に答える