【问题标题】:Unable to pass argument in invoke powershell script无法在调用 powershell 脚本中传递参数
【发布时间】:2018-10-23 17:07:37
【问题描述】:

我正在尝试在名为 install.ps1 的命令脚本中为参数传递值。我通过 ./install.ps1 HD1 执行它

invoke-command -Session $session -ScriptBlock {G:\usr\sap\$($args[0])\hdbclient\hdbuserstore.exe list}

但它给了我一个错误

术语“G:\usr\sap\$($args[0])\hdbclient\hdbuserstore.exe”不是 识别为 cmdlet、函数、脚本文件或可操作的名称 程序。检查名称的拼写,或者是否包含路径, 验证路径是否正确,然后重试。 + CategoryInfo : ObjectNotFound: (G:\usr\sap\$($a...dbuserstore.exe:String) [], CommandNotFoundException +fullyQualifiedErrorId:CommandNotFoundException + PSComputerName : 主机名

【问题讨论】:

  • ($args[0]) 应该包含什么?它作为字符串文字而不是扩展变量传递,因此操作系统正在寻找错误的路径。
  • 它应该接受我作为 install.ps1 的参数传递的 HD1 值。

标签: powershell powershell-3.0


【解决方案1】:

您没有在Invoke-Command 上使用-Argumentlist 参数。让我在下面展示一个例子。如果要使用自定义变量名称,请使用脚本块中的 Param 方法。

$Directory = "HD1"
$Scriptblock = {
    param($Var1)
    G:\usr\sap\$Var1\hdbclient\hdbuserstore.exe list
}
invoke-command -Session $session -ScriptBlock $Scriptblock -ArgumentList $Directory

【讨论】:

    猜你喜欢
    • 2017-04-06
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2012-12-10
    相关资源
    最近更新 更多