LoïcMICHELの答えは正解ですが、内のどの位置引数がどれであるかを思い出すのが難しくなった場合は、キーワードScriptBlock
を使用してトリックを提供したいと思います。param
内で、高度な関数の場合と同じようScriptBlock
に本文を開始し、param
関数のようにコードを後に配置します。
注:ScriptBlock
param
名前は、現在のセッションで同じである必要はありません。同じでも、まったくScriptBlock
異なるものでもかまいません。重要なことは、正しい引数を。の位置に一致させることです-ArgumentList
。
Start-Job { param( $mysqlpath ) & "$mysqlpath\mysqld.exe" } -ArgumentList $mysqlpath
これは、aScriptBlock
が名前のない関数であるために機能します。したがって、適切な関数を定義する場合とほぼ同じ方法でパラメーターを定義できます。の引数は、指定された順序で位置引数として-ArgumentList
渡さScriptBlock
れます。したがって、デフォルトでは、引数が渡される順序は、の名前付きパラメーターにバインドされる順序と同じです。
スコープは構文的に操作が簡単ですが、現在のセッションではスコープを使用できないため$using:
、この方法では、ここですべての世界で最高のものを入手できます。これは、任意のコンテキストで実行できる必要$using:
がある非常に便利であり、インデックスによる引数の参照の管理が困難になるほど複雑です。このアプローチでは、パラメーターに名前を付けることができ、、、、、または呼び出し演算子を使用してを実行するかどうかに関係なく、すべての実行コンテキストで任意のパラメーターを操作できます。ScriptBlock
ScriptBlock
Start-Job
Invoke-Command
powershell.exe
ScriptBlock
&
$args[i]
これは、すべての変数を参照する代わりに名前付き変数を使用する場合の(そうでない場合でも)最も移植性の高いソリューションの1つです。