6

変数に引数を格納して、他のスクリプトからscript1.ps1を開始したいと思います。

$para = "-Name name -GUI -desc ""this is the description"" -dryrun"
. .\script1.ps1 $para

script1.ps1で取得する引数は次のようになります。

args [0]:-Name name -GUI-desc"これは説明です"-dryrun

だからこれは私が欲しかったものではありません。誰かがこの問題を解決する方法を考えていますか?
thx lepi

PS:変数に含まれる引数の数と、それらがどのようにランク付けされるかはわかりません。

4

2 に答える 2

7

スプラッティング演算子を使用する必要があります。powershellチームのブログまたはここstackoverflow.comをご覧ください。

次に例を示します。

@'
param(
  [string]$Name,
  [string]$Street,
  [string]$FavouriteColor
)
write-host name $name
write-host Street $Street
write-host FavouriteColor $FavouriteColor
'@ | Set-Content splatting.ps1

# you may pass an array (parameters are bound by position)
$x = 'my name','Corner'
.\splatting.ps1 @x

# or hashtable, basically the same as .\splatting -favouritecolor blue -name 'my name'
$x = @{FavouriteColor='blue'
  Name='my name'
}
.\splatting.ps1 @x

あなたの場合、あなたはそれをこのように呼ぶ必要があります:

$para = @{Name='name'; GUI=$true; desc='this is the description'; dryrun=$true}
. .\script1.ps1 @para
于 2010-08-02T14:22:48.673 に答える
5

使用Invoke-Expressionは別の代替手段です:

$para = '-Name name -GUI -desc "this is the description" -dryrun'
Invoke-Expression -Command ".\script1.ps1 $para"
于 2010-08-02T15:03:31.417 に答える