如何制作批处理脚本以使用凭据在远程计算机上运行命令

时间:2018-12-05 12:59:09

标签: c# docker batch-file remote-server

我编写了一些批处理脚本以在计算机上执行docker命令,并使其使用c#程序运行。我可以在本地计算机上成功运行那些批处理脚本,但是我希望它在远程计算机上运行。如何通过提供远程计算机访问凭据来做到这一点?我正在寻找批处理命令,这些命令将首先连接到远程计算机,然后在远程计算机中执行其主体。 批处理脚本示例如下。

::Start an exited container
::Iam expecting some code here to connect to a remote machine
@echo off
docker start %1

或者,是否可以通过c#程序进行选择?

3 个答案:

答案 0 :(得分:3)

我找不到在远程计算机上运行批处理脚本的方法,但是我使用Powershell脚本而不是批处理脚本。如果可以使用Powershell脚本代替批处理脚本,则可以使用此方法。

set-item wsman:localhost\client\trustedhosts -value <Remote_computer_name> -Force
$pword = ConvertTo-SecureString -String <Remote_machine_password> -AsPlainText -Force
$user = <Remote_userName>
$Credential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $user, $pword
Set-ExecutionPolicy -ExecutionPolicy Bypass
Invoke-Command -ComputerName <Remote_computer_name> -filepath <ps1_file_path> -Credential $Credential

在powershell管理员窗口中运行上述命令将在远程计算机上的<ps1_file_path>中运行脚本。


您必须考虑到该命令 set-item wsman:localhost\client\trustedhosts -value <Remote_computer_name> -Force 将远程计算机添加到“受信任的主机”列表中。 另外,命令Set-ExecutionPolicy -ExecutionPolicy Bypass将允许所有Powershell脚本在我们的计算机上运行,​​但我不确定使用该脚本是否安全。 希望它能以某种方式对某人有所帮助,但是您必须进行研究以确保此方法安全。 参考:

  

Execution Policies

答案 1 :(得分:2)

请尝试使用WinRM连接。一些示例信息-

remote command execution

winrm-command referance

Windows服务器上的

或ssh服务器-示例 WinSCP

希望有帮助。

答案 2 :(得分:2)

尝试使用PsExec https://docs.microsoft.com/en-us/sysinternals/downloads/psexec

这是telnet的轻巧替代品