在Azure上通过API部署Windows VM时配置WinRM的问题

时间:2015-01-22 14:35:08

标签: powershell azure winrm

当通过REST API在Azure上部署具有Windows2008-SQL-Server模板的VM时,我们需要使用powershell脚本配置WinRM以启用基本身份验证。为此,我们使用Azure扩展程序' CustomScriptExtension'从我们的blobstorage加载脚本并运行它。

脚本输出有错误,Powershell没有响应端口5985.

  • 我们使用SQL-Server-2008R2-SP2-10.50.4319.0-Standard-ENU-Win2008R2模板。
  • 在部署中,我们设置了一个使用协议'Http'的侦听器。
  • 我们打开5985端口,在VM配置结束时,我们可以在其上打开一个套接字。

代码:

winrm quickconfig -q
winrm set winrm/config/winrs '@{MaxMemoryPerShellMB="300"}'
winrm set winrm/config '@{MaxTimeoutms="1800000"}'
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
winrm set winrm/config/service/auth '@{Basic="true"}'

对于每个脚本的命令,我们都有以下错误:

Message = Access is denied. \\n\\nError number: -2147024891 0x80070005\\nAccess is denied.

完成VM的配置后,我们可以使用远程桌面登录,如果我们从那里启动powershell脚本,它就完美无缺。

经过一些研究,我们发现这个article提出了一个可能的解决方案,但问题是它暴露了一个安全问题,因为脚本需要一个管理员密码作为参数。

我们正在寻找其他建议或解决方法。我们正在使用完全自动化的工作流程,所以遗憾的是“手工制作的解决方案”对我们来说不是一个选择。提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我这样做是为了让Chef客户端引导程序在Azure Windows VM上运行。就我而言,除了你所做的,我还必须在Windows防火墙上打开5985,并在云服务上启用5985端点。这是一个PITA,但它完成了工作。