【问题标题】:PowerShell Remote from VSTS Pipeline来自 VSTS 管道的 PowerShell 远程
【发布时间】:2019-06-04 09:31:53
【问题描述】:

我想在我的虚拟机上远程调用 PowerShell 命令。 我在管道中添加了“在目标机器上运行 PowerShell”任务。我提供了:我的远程虚拟机的 IP、用户名和密码。 这是我得到的错误:

无法创建 pssession。错误:'连接到远程服务器 失败并显示以下错误消息:WinRM 无法完成操作。验证指定的计算机名称 是有效的,计算机可以通过网络访问,并且 WinRM 服务的防火墙例外已启用并允许访问 从这台电脑。默认情况下,WinRM 防火墙例外 公共配置文件限制对同一范围内的远程计算机的访问 本地子网。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。'

在我的远程虚拟机上,我做了:

Enable-PSRemoting
Set-NetFirewallRule -Name "WINRM-HTTP-In-TCP-PUBLIC" -RemoteAddress Any

这里提到了这些命令:https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_remote_troubleshooting?view=powershell-6

我还能做什么?

【问题讨论】:

  • 不仅是VM中的防火墙规则,还应该在与VM关联的NSG中添加规则。
  • @CharlesXu 抱歉,忘了提及 - 我为 5985 和 5986 添加了“允许”规则,所以这应该不是问题。我使用的 IP 当然是公开且可访问的(我可以毫无问题地 RDP 到该 VM)
  • 您是否也在虚拟机中启用了 WinRM?并且您在 VM 的子网和 nic 中都添加了 NSG 规则?你可以在本地通过 WinRM 远程连接吗?
  • @CharlesXu WinRM 已由 Enable-PSRemoting 启用。我的子网没有分配任何 NSG,我在 NIC 的 NSG 上添加了我的规则
  • 您是否按照PowerShell on Target Machines task中的步骤操作?

标签: azure powershell azure-devops azure-pipelines


【解决方案1】:

要通过 Windows 机器 WinRM 在目标机器任务上运行 PowerShell 脚本,您需要先在目标机器中配置 WinRM。有两种协议适合您:HTTP 和 HTTPS。 HTTPS 更安全,值得推荐。如果使用 HTTPS,则需要在防火墙中打开 5986 端口并安装自签名证书。您可以按照PowerShell on Target Machines task 中的步骤进行操作。

对于您在评论中的问题,您可以在测试证书中找到描述,我认为原因是您使用了您创建的自我证书。

【讨论】:

  • @Charlex Xu - 虽然文档中提到了“测试证书”选项,但它在任务选项中不可用。
  • @Loreno 是的,没有确切的解释。但我相信这是最可能的原因:)
猜你喜欢
  • 2017-05-24
  • 2014-08-30
  • 2017-04-17
  • 2014-01-31
  • 1970-01-01
  • 2018-08-03
  • 2019-11-24
  • 2019-06-07
  • 1970-01-01
相关资源
最近更新 更多