Чтобы передать аргумент одному сценарию powershell из другого сценария powershell - PullRequest
0 голосов
/ 24 мая 2019

У меня есть два сценария powershell a.ps1 и b.ps1.Я вызываю скрипт b.ps1 внутри скрипта a.ps1.Мне нужно передать две переменные в качестве аргументов из a.ps1 в b.ps1, как показано ниже.

//a.ps1 Script starts here
 $variable1 ="This is Variable1"
 $variable2 ="This is Variable2"

Примечание: я вызываю скрипт b.ps1 внутри этого скрипта a.ps1, как показано ниже, и передаю вышеупомянутые переменные в качестве аргументов для b.ps1

. C:\filepath\b.ps1 $variable1 $variable2 //Calling b.ps1 script

//b.ps1 contains below code
$getVariable1= $args[0]
$getVariable2= $args[1]
echo $getVariable1

Но эхо вышекоманда из b.ps1 ничего не печатает.Что не так с передачей приведенных выше аргументов?

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Что с дополнительным пробелом в вызове b.ps1?

Как только я исправлю это, я получу ожидаемые результаты.Кроме того, вам никогда не понадобится Write- * (echo), если все, что вы делаете, это отправляете на экран.Вывод на экран является настройкой по умолчанию.

Наконец, здесь не нужно // для комментариев, # и <##> отлично работают на этом сайте, как показано ниже.

Окружающая среда

$PSVersionTable

<#
Name                           Value
----                           -----
PSVersion                      5.1.17763.503
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0, 5.0, 5.1.17763.503}
BuildVersion                   10.0.17763.503
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
#>

Get-ExecutionPolicy
RemoteSigned

Содержимое

# a.ps1
'running a.ps1 script, calling b.ps1'
$variable1 = "This is Variable1"
$variable2 = "This is Variable2"

.\b.ps1 $variable1 $variable2

Содержимое

# b.ps1
'running b script'
'Showing output from a.ps1 variables'
$getVariable1= $args[0]
$getVariable2= $args[1]

$getVariable1

Результаты

 .\a.ps1
running a.ps1 script, calling b.ps1
running b script
Showing output from a.ps1 variables
This is Variable1
0 голосов
/ 24 мая 2019

Есть 2 возможных вопроса:

  • Префикс комментария к строке: # (вместо //)
  • Политики выполнения (особенно их значения по умолчанию) могут препятствовать вызову сценария b.ps1. Подробности этой статьи MS (однако вам будет подсказка PowerShell на эту статью после попытки запустить a.ps из командной строки).
    В связанной статье также подробно рассказывается, как правильно устанавливать политики (в двух словах для выполнения из командной строки: Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
...