Передача переменных Powershell в скриптовый блок
Я пытаюсь использовать переменные powershell и применять их к скриптблоку.
param(
[string]$username = $(throw "Blackberry Admin User Name is required"),
[string]$password = $(throw "Blackberry Admin Password is required"),
[string]$u = $(throw "Blackberry User Name is required")
)
$s = New-PSSession -computerName bbbes01
Invoke-Command -Session $s -Scriptblock {cd "C:\Program Files (x86)\Research In Motion\BlackBerry Enterprise Server Resource Kit\BlackBerry Enterprise Server User Administration Tool Client"
./BESUserAdminClient -username $username -password $password -ad_auth -domain staging -b bbbes -u $u -change -wrandom} -argumentlist $username $password $u
Я запускаю
.\RandomActivationEmail.ps1 -username besadmin -password Pa $$ word -u bb.user
Ошибка, которую я получаю: -
Invoke-Command: не может быть найден позиционный параметр, который принимает аргумент "Pa $$ word". В C:\Scripts\bb\RandomActivationEmail.ps1:12 char: 15 + Invoke-Command < < < -Session $s -Scriptblock {cd "C:\Program Files (x86)\Research In Motion\BlackBerry Enterprise Se rver Resource Kit\Клиент приложения BlackBerry Enterprise Server Client Client" + CategoryInfo: InvalidArgument: (:) [Invoke-Command], ParameterBindingException + FullyQualifiedErrorId: PositionalParameterNotFound, Microsoft.PowerShell.Commands.InvokeCommandCommand
Спасибо, что прочитал, приветствует Колма.
Ответы
Ответ 1
Вы можете передавать значения через параметр -arguments и ссылаться на них как $args [0] и т.д. внутри блока script:
Invoke-Command -Session $s -Scriptblock {
cd "C:\Program Files (x86)\Research In Motion\BlackBerry Enterprise Server Resource Kit\BlackBerry Enterprise Server User Administration Tool Client"
./BESUserAdminClient -username $args[0] -password $args[1] -ad_auth -domain staging -b bbbes -u $args[2] -change -wrandom
} -argumentlist $username $password $u
Или определите параметры внутри блока script и используйте именованные параметры:
Invoke-Command -Session $s -Scriptblock {
param(
$username,$password,$u
)
cd "C:\Program Files (x86)\Research In Motion\BlackBerry Enterprise Server Resource Kit\BlackBerry Enterprise Server User Administration Tool Client"
./BESUserAdminClient -username $username -password $password -ad_auth -domain staging -b bbbes -u $u -change -wrandom
} -argumentlist $username $password $u