Подтвердить что ты не робот

Передача переменных 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

Спасибо, что прочитал, приветствует Колма.

4b9b3361

Ответ 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