【问题标题】:Execute a powershell script on multiple servers remotely远程在多台服务器上执行powershell脚本
【发布时间】:2018-06-24 18:23:55
【问题描述】:

我写了一个powershell 脚本,它卸载一个程序并在我的服务器上安装一个更新版本的程序(更新程序)。现在我想创建另一个在服务器上运行上述脚本的脚本。考虑到我必须通过使用 IP、用户名和密码连接到我的服务器,并且使用域不是一个选项。 这怎么可能? Powershell 版本为 4

我已经尝试过这段代码来简单地获取日期:

$User = "administrator"
$PWord = ConvertTo-SecureString -String "Password1234" -AsPlainText -Force
$Credential = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $User, $PWord
$session = New-PSSession -ComputerName '10.60.60.100' -Credential $Credential
Invoke-Command -Session $session -ScriptBlock {Get-Date}

我得到了这个错误:

New-PSSession : [10.60.60.100] 连接到远程服务器 10.60.60.100 失败并显示以下错误消息:WinRM 客户端无法处理请求。如果身份验证方案与 Kerberos 不同,或者客户端计算机未加入域,则必须使用 HTTPS 传输或必须将目标计算机添加到 TrustedHosts 配置设置。使用 winrm.cmd 配置 TrustedHosts。请注意,TrustedHosts 列表中的计算机可能未经过身份验证。您可以通过运行以下命令获取更多信息:winrm help config。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。

【问题讨论】:

  • 你尝试了什么?
  • @JeroenHeier 我添加了我的最后一次尝试
  • 对于任何与远程处理相关的问题,始终值得查看帮助中的故障排除指南,以确保您没有遗漏明显的内容:about_remote_troubleshooting

标签: powershell powershell-4.0 working-remotely


【解决方案1】:

这是因为您没有从受信任的主机运行命令,或者因为远程计算机 wsman 服务配置不正确。我首先运行以下命令在远程机器上配置 wsman:

wsman quickconfig

如果这不能解决问题,那么您需要将您的计算机添加到远程计算机受信任的主机。您可以通过运行以下命令来做到这一点:

winrm s winrm/config/client '@{TrustedHosts="RemoteComputer"}'

【讨论】:

  • 谢谢,trustedhosts 是问题所在。现在我用powershell -file C:\Test.ps1 替换get-date,但脚本在本地机器上运行,而不是在远程机器上运行。我该如何解决这个问题?
  • 我发现使用 invoke-command 进行会话管理有时会表现得很奇怪。尝试将凭据直接传递到命令中。它看起来像“Invoke-Command -Computername $comps -Credential $creds -FilePath C:\Test.ps1”
  • 感谢您的帮助。问题相对解决了。只剩下 1 个问题。现在我可以通过在远程服务器上运行脚本来卸载旧版本并安装新版本,但是在代码的最后几句中,我尝试运行 .exe 文件来运行我的新程序,但没有任何反应。如果我运行 .ps1 文件,它的工作但以远程方式存在上述问题。即使我使用了-scriptblcok {invoke-item "C:\Test.exe"}-scriptblock {& "C:\Test.exe"},但没有发生任何变化
  • 我认为您不能远程运行可执行文件。将 .exe 传输到远程计算机上的“C:\Temp”之类的文件可能是明智之举,然后远程调用可执行文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-06
  • 2017-03-29
  • 1970-01-01
  • 2022-10-12
  • 1970-01-01
相关资源
最近更新 更多