如何以编程方式在Azure VM上设置Powershell远程处理

时间:2016-09-02 15:31:09

标签: powershell azure virtual-machine remote-desktop

我的目标是编写一个运行New-AzureRmResourceGroupNew-AzureRmResourceGroupDeployment的Powershell脚本,以便根据ARM .json模板文件配置资源组。所述资源组包括虚拟机,虚拟网络,网络安全组,公共IP地址,连接到虚拟机的网络接口,以及两个存储帐户。之后,我希望继续使用相同的脚本并将特定的程序安装程序复制到该资源组中的虚拟机,并自动运行该安装程序,而无需进一步的用户交互。但是,我似乎无法开始与虚拟机进行远程Powershell会话。我运行命令:

$sess = New-PSSession -ComputerName **.***.**.*** -Port XXXX -Credential $cred

其中*是虚拟机的IP地址; XXXX是根据与虚拟机所在的虚拟网络关联的网络安全组为RDP打开的端口;并且$cred包含虚拟机上admin用户的凭据。

该命令始终返回错误:

New-PSSession : [**.***.**.***] Connecting to remote server **.***.**.*** failed with the following error message : The client cannot connect to the destination specified in the request. Verify that the service on the destination is running and is accepting requests. Consult the logs and documentation for the WS-Management service running on the destination, most commonly IIS or WinRM. If the destination is the WinRM service, run the following command on the destination to analyze and configure the WinRM service: "winrm quickconfig". For more information, see the about_Remote_Troubleshooting Help topic.

请注意,我确实将虚拟机的IP地址添加到本地计算机上的可信主机列表中。 (直到我这样做,我收到了不同的错误消息。)此外,如果我点击Azure门户中的“连接”按钮然后单击.rdp,我能够连接到虚拟机已下载的文件。此远程会话使用与我正在尝试且未在Powershell中设置的IP地址,端口和凭据相同的IP地址,端口和凭据。这是我不明白的。

The Connect button that produces a working .rdp

为什么会这样?我是否需要做一些额外的工作来准备VM以接受远程Powershell会话?有没有办法在ARM模板中配置它,以便VM可以从一开始就接受它们? (如果我需要在VM上运行一些命令以设置Powershell远程处理,那将很困难,因为我不能通过Powershell远程运行它们因为这个问题。也许我可以将它们作为自定义脚本扩展运行?)

最后的注释:这个VM是“新”风格,而不是“经典”风格。我知道有很多关于“经典”风格Azure VM的文档,但这不是我正在使用的。此外,即使在建议的错误上在VM上运行winrm quickconfig并向本地用户远程启用管理权限,我在运行New-PSSession时也会收到相同的错误。

1 个答案:

答案 0 :(得分:2)

  1. 在您的NSG上打开5985-5986
  2. 删除命令中的端口部分:

    $ sess = New-PSSession -ComputerName -Credential $ cred

  3. 为新VM自动设置WinRM端点(如果您不以某种方式覆盖它)。但是你需要为非安全打开5985,为安全远程打开5986