1

我们需要从 Linux 机器到 Windows 10 远程执行带有参数的 .exe。所以我们在 CentOS 中安装了 PowerShell。以下是我们使用的命令:

Invoke-Command -HostName abcdefg -Credential $creds -ScriptBlock { Start-Process -FilePath "C:\sip\GetProcessInstance.exe" -$args[0] } -ArgumentList "http://hostname:8080/jbpm-console/rest/task/listUserTasks?potentialOwner=abc@xyz.com"

Invoke-Command -HostName abcdefg -Credential $creds -ScriptBlock { Start-Process -FilePath "C:\sip\GetProcessInstance.exe" -ArgumentList "http://hostname:8080/jbpm-console/rest/task/listUserTasks?potentialOwner=abc@xyz.com" }

Invoke-Command -HostName abcdefg -Credential $creds -ScriptBlock { Get-ChildItem C:\ }

收到以下错误

Invoke-Command:无法使用指定的命名参数解析参数集。发出的一个或多个参数不能一起使用或提供的参数数量不足。
在行:1 字符:1

在此处输入图像描述

同样适用于 Windows 到 Windows。

4

1 回答 1

2

如错误消息中所述,您正在尝试使用无效的参数集。打开文档后,Invoke-Command您可以找到可以使用的集合。

看看我链接的文档开头的块。只有两个可能的-HostName参数集:

Invoke-Command
      -ScriptBlock <scriptblock>
      -HostName <string[]>
      [-Port <int>]
      [-AsJob][-HideComputerName]
      [-UserName <string>]
      [-KeyFilePath <string>]
      [-SSHTransport]
      [-RemoteDebug][-InputObject <psobject>]
      [-ArgumentList <Object[]>]
      [<CommonParameters>]

Invoke-Command
      -FilePath <string>
      -HostName <string[]>
      [-Port <int>]
      [-AsJob]
      [-HideComputerName][-UserName <string>]
      [-KeyFilePath <string>]
      [-SSHTransport]
      [-RemoteDebug]
      [-InputObject <psobject>][-ArgumentList <Object[]>]
      [<CommonParameters>]

如您所见,它们都没有-Credential可用的参数。您的选择是:

  1. 使用WinRM代替SSH

在这种情况下,您必须使用-ComputerNameparam 而不是-HostName

  1. 利用-SSHConnection

从文档:

此参数采用一组哈希表,其中每个哈希表包含一个或多个建立安全外壳 (SSH) 连接所需的连接参数(主机名、端口、用户名、密钥文件路径)。

  1. 使用我上面粘贴的一组

 

由于我不了解您的配置,我无法告诉您哪一个最适合您,因此您必须自己选择。

于 2018-07-02T07:30:44.123 回答