Linux 到 windows - 远程执行 .exe
Linux to windows - Execute .exe remotely
我们需要从 Linux 机器远程执行带参数的 .exe 到 Windows 10。所以我们在 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 : Parameter set cannot be resolved using the specified named parameters. One or more parameters issued cannot be used together or an insufficient number of parameters were provided.
At line:1 char:1
同样适用于 Windows 到 Windows。
如错误消息中所述,您正在尝试使用无效的参数集。打开 the documentation for 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>]
如您所见,其中 none 个有 -Credential
个参数可用。您的选择是:
- 使用
WinRM
代替SSH
在这种情况下,您必须使用 -ComputerName
参数而不是 -HostName
- 使用
-SSHConnection
来自文档:
This parameter takes an array of hashtables where each hashtable contains one or more connection parameters needed to establish a Secure Shell (SSH) connection (HostName, Port, UserName, KeyFilePath).
- 使用我上面粘贴的一组
由于我不了解你的配置,我无法告诉你哪一个最适合你,所以你必须自己选择。
我们需要从 Linux 机器远程执行带参数的 .exe 到 Windows 10。所以我们在 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 : Parameter set cannot be resolved using the specified named parameters. One or more parameters issued cannot be used together or an insufficient number of parameters were provided.
At line:1 char:1
同样适用于 Windows 到 Windows。
如错误消息中所述,您正在尝试使用无效的参数集。打开 the documentation for 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>]
如您所见,其中 none 个有 -Credential
个参数可用。您的选择是:
- 使用
WinRM
代替SSH
在这种情况下,您必须使用 -ComputerName
参数而不是 -HostName
- 使用
-SSHConnection
来自文档:
This parameter takes an array of hashtables where each hashtable contains one or more connection parameters needed to establish a Secure Shell (SSH) connection (HostName, Port, UserName, KeyFilePath).
- 使用我上面粘贴的一组
由于我不了解你的配置,我无法告诉你哪一个最适合你,所以你必须自己选择。