这是针对现有机器的:确保您的虚拟机具有通过NIC设置的公共IP。接下来,如果您要使用笔记本电脑,请确保您的防火墙对公共交通开放。这可以用一个简单的netsh命令来完成:
netsh advfirewall firewall add rule name="WinRM HTTP" dir=in action=allow protocol=TCP localport=5985 profile=public
一旦你有一个公网IP和防火墙上打开你可以输入一个WinRM的会话:
$username = '<admin-user>'
$pass = ConvertTo-SecureString -string '<password>' -AsPlainText -Force
$cred = New-Object -typename System.Management.Automation.PSCredential -argumentlist $username, $pass
Enter-PSSession -ComputerName <public-IP> -Credential $cred -SessionOption (New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck)
注:默认情况下,WinRM的通过HTTP和应该在你的机器上设置和监听。 HTTPS未启用,因为它不清楚在哪里获取证书。但是,WinRM使用消息级加密,因此它不完全是纯文本。您可以验证:
winrm e winrm/config/listener
这应该告诉你的东西,如监听器:
Listener [Source="GPO"]
Address = *
Transport = HTTP
Port = 5985
Hostname
Enabled = true
URLPrefix = wsman
CertificateThumbprint
ListeningOn = 1.1.1.1
这不是我实际使用过的 - 但这可能会指向正确的方向 - https://github.com/Azure/azure-quickstart-templates/tree/master/ 201-winrm-windows-vm –
感谢这看起来非常有前途 - 将试用! –
完成 - 使用来自Azure Key Vault的证书配置SSL上的WinRM的工作方式看起来是正确的方式。我现在可以对JSON模板中的这些选项配置的虚拟机执行远程PowerShell。此PS命令现在可以从我的笔记本电脑客户端运行:Invoke-Command - 计算机名称 .westeurope.cloudapp.azure.com -Credential $ cred -UseSSL -ScriptBlock $ script -SessionOption(New-PSSessionOption -SkipCACheck -SkipRevocationCheck -SkipCNCheck) –