【问题标题】:Powershell: How to pass parameter with invoke-command and -filepath remotely?Powershell:如何使用invoke-command和-filepath远程传递参数?
【发布时间】:2016-09-24 17:41:57
【问题描述】:

所以我发现了很多与此类似的主题,但我找不到与我的问题相关的任何内容。

invoke-command -computername $serverLocation -Credential $cred -filepath "C:\path\script2.ps1" -ArgumentList $configPath

我正在调用存储在我本地计算机上的脚本以在另一台服务器上运行。除了传递“configPath”变量外,一切都按预期工作。这就是我启动脚本的方式 -

. .\script1.ps1 -serverLocation 'serverNameHere' -username 'userNameHere' -configPath 'configPathHere' 

它正确地抓取了我传递给第一个脚本的所有其他参数。它只是不会将 configPath 传递给“文件路径”中的第二个脚本。

我怎样才能让这个参数通过?非常感谢。

【问题讨论】:

    标签: powershell parameters arguments invoke-command


    【解决方案1】:

    script2.ps1 中,你应该定义一个接受参数的param() 块,然后你可以用你给它的任何名字来引用它。如果您不想使用 param() 块,那么使用 $args[0] 应该可以。

    【讨论】:

    • 是的,我控制/创建了这个过程中的所有脚本。我很困惑为什么你把它列在第三位?我只将一个参数传递给正在远程服务器上启动的脚本,所以它不只是 -ArgumentList $configPath 吗?我明白你的意思是它不知道名字 - 那么我如何在我的其他脚本中调用它呢? args[0] 还是什么?另外,我需要在调用它的脚本的 param() 列表中列出它吗?再次感谢。
    • 我把它放在第三个位置,因为您的示例调用显示它在第三个位置,但它的实际位置将基于它在被调用脚本的参数块中定义的位置(也可以用覆盖常规订单的特定位置)。
    • 哦,我想我知道现在发生了什么。 script1.ps1 包含 Invoke-Command 调用,script2.ps1 是不同的脚本。在这种情况下,在script2.ps1 中,您应该定义一个接受参数的param() 块,然后您可以使用您给它的任何名称来引用它。如果您不想使用 param() 块,那么使用 $args 应该可以。
    • 嘿,在您根据您最初的回答做出回应之前,我正在玩它。所以我做了 -ArgumentList $configPath,然后转到我的第二个脚本并将 $configPath 放在参数块顶部的第一行。它通过了 :) 非常感谢您的帮助和及时回复!
    • @crystallinity 酷,我用更准确地反映问题的评论替换了答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多