powershell: сценарий с переменной args

Я хочу запустить script1.ps1 из другого сценария с аргументами, сохраненными в переменной.

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

args я вхожу в script1.ps1, похож:

args [0]: - имя имени - GUI-desc "это - описание" - пробный прогон

таким образом, это не то, что я хотел получить. У кого-либо есть идея, как решить эту проблему?
спасибо lepi

PS: Это не уверено, сколько аргументов переменная будет содержать и как они собираются быть оцениваемыми.

6
задан lepi 2 August 2010 в 13:07
поделиться

2 ответа

Использование Invoke-Expression - еще одна альтернатива:

$para = '-Name name -GUI -desc "this is the description" -dryrun'
Invoke-Expression -Command ".\script1.ps1 $para"
5
ответ дан 9 December 2019 в 20:38
поделиться

Вам необходимо использовать оператор splatting . См. блог команды 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
7
ответ дан 9 December 2019 в 20:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: