Azure Powershell Runbook - 在远程 VM 上调用命令 (ARM a.k.a.V2)

Azure Powershell Runbook - Invoke commands on remote VM (ARM a.k.a. V2)

我需要的

我想要一本在远程 VM 上执行命令的自动化 运行 书籍(VM 是 V2 或 "Resource Manager" VM)。

我找到了使其适用于经典 VM 的示例,但我无法使其适用于 RM VM(我发现的最佳示例:https://alexandrebrisebois.wordpress.com/2015/08/14/azure-automation-remote-powershell-and-a-virtual-machine/)。

是否有人在自动化 运行 书籍中有在远程 V2 VM 上使用 运行ning powershell 命令的示例?

我目前卡在哪里

我尝试调整示例代码的第二段(调用命令的部分),但出现以下错误:

[vm-template] Connecting to remote server vm-template failed with the following error 
message : The WinRM client cannot process the request. If the authentication scheme is 
different from Kerberos, or if the client computer is not joined to a domain, then HTTPS 
transport must be used or the destination machine must be added to the TrustedHosts 
configuration setting. Use winrm.cmd to configure TrustedHosts. Note that computers in the 
TrustedHosts list might not be authenticated. You can get more information about that by
running the following command: winrm help config. For more information, see the 
about_Remote_Troubleshooting Help topic.
+ CategoryInfo          : OpenError: (vm-template:String) [], PSRemotingTransportException
+ FullyQualifiedErrorId : ServerNotTrusted,PSSessionStateBroken

我的理解是,由于我没有使用 Kerberos(甚至不知道那是什么),所以我必须使用 HTTPS。为此,我必须完成示例代码的前半部分,它是关于导入证书的(顺便说一下,导入 where since 运行book 运行s "in azure"?).

我找到了一些解释如何启用 HTTPS 的页面 (Connecting to remote server failed using WinRM from PowerShell) and create the certificate (http://www.jayway.com/2011/11/21/winrm-w-self-signed-certificate-in-4-steps/),但它们要求某些命令在两台机器上都是 运行;我当然可以在我的远程 VM 上执行 运行 命令,但我不明白如何为客户端机器执行此操作,因为 运行book 是 运行ning 直接在蔚蓝

非常感谢任何帮助,谢谢!

您的网络安全组是否配置为打开端口 5985(winrm http 端口)或 5986(如果使用 https)?如果你计划使用 winrm 而不是来自 Azure 自动化,你可能还需要一个 public IP。您还应该能够使用 http,所以我认为您看到的错误是一般的连接失败错误。

注意:默认情况下,winrm over http 和侦听器应该在您的计算机上设置和侦听。 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

一旦您验证了这一点,我将验证您是否可以从您自己的计算机使用 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)

请注意,您可能必须在自己的计算机上设置受信任的主机,以信任 Azure 计算机来创建 winrm 会话。这可以通过以下方式完成: Set-Item WSMan:localhost\Client\TrustedHosts -value * -Force

请注意,出于安全考虑,您应该使用 Azure VM 的实际名称,而不是通配符。