【问题标题】:Passing Powershell variables into a scriptblock将 Powershell 变量传递到脚本块
【发布时间】:2011-08-11 08:36:07
【问题描述】:

我正在尝试获取 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 + 调用命令

感谢阅读,科尔姆干杯。

【问题讨论】:

    标签: blackberry powershell remoting


    【解决方案1】:

    您可以通过 -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
    

    或者在脚本块内定义参数并使用命名参数:

    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
    

    【讨论】:

    • 嗨,谢伊,感谢您的回复“有什么想法我哪里出错了吗?再次感谢,科尔姆
    • 你可以试试呼叫操作员(例如&):& BESUserAdminClient.exe -username $username -password $password -ad_auth -domain staging -b bbbes -u $u -change -wrandom
    • 已修复!感谢 Shay 为我指明了正确的方向 -username $args[0] -password $args[1] -ad_auth -domain staging -b bbbes -u $args[2] -change -wrandom } -argumentlist @($username , $password, $u) 在参数列表中使用 $args 和 @() 非常感谢
    • 我遇到了同样的问题。将 @($var1, $var2) 与 -ArgumentList 选项一起使用对我来说非常有效。谢谢大家。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 2018-02-28
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多