Передача переменных Powershell в блок скриптов - PullRequest
12 голосов
/ 11 августа 2011

Я пытаюсь взять переменные 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) \ Исследования в движении \ BlackBerry Enterprise ServerResource Kit \ Клиент инструмента администрирования пользователя BlackBerry Enterprise Server "+ CategoryInfo: InvalidArgument: (:) [Invoke-Command], ParameterBindingException + FullyQualifiedErrorId: PositionalParameterNotFound, Microsoft.PowerShell.Commands.InvokeCommandCommand </p>

1015 * для чтения за 1015 * *1014* 1015 * для чтения 1015 * *1014*

для чтения 1015 * *1014* * 1015ура Colm.

1 Ответ

24 голосов
/ 11 августа 2011

Вы можете передавать значения через параметр -arguments и именовать их как $ args [0] и т. Д. Внутри блока скрипта:

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

Или определить параметры внутри блока скрипта и использовать namedпараметры:

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
...