我们正在尝试使用 Azure 服务总线队列和 Azure 工作角色的组合来自动化我们的大量天蓝色/服务维护任务。简而言之,概念如下......
- 维护任务发布到 SB 队列
- Worker 角色监听 SB Queue 上的任务
- Worker 角色连接到所需的 VM/Web 角色/云服务并执行远程 powershell 命令
在实践中,这在开发环境中运行时按预期工作,但是在发布工作角色后,远程 powershell 连接失败并响应“访问被拒绝”。建立连接的代码如下...
PSCredential cred = new PSCredential(config.Username, config.PrimaryPassword);
WSManConnectionInfo connection = new WSManConnectionInfo(true, config.PrimaryServer, 5986, "/wsman", "http://schemas.microsoft.com/powershell/Microsoft.PowerShell", cred);
using (Runspace runspace = RunspaceFactory.CreateRunspace(connection))
{
runspace.Open();
using (PowerShell shell = PowerShell.Create())
{
shell.Runspace = runspace;
// DO SOMETHING HERE
shell.Invoke();
}
runspace.Close();
}
最初,我怀疑这是 CA 证书问题,但后来我通过 RDP 连接到工作角色并确认证书已正确部署。此外,我还设法通过“winrs -r:”命令也使用远程桌面连接来实现与目标服务器的连接。
作为确认,辅助角色也在以提升的权限运行。
对此的任何帮助将不胜感激
提前致谢