使用自动化账户托管标识执行Get-Service报错,需配置哪些权限?
解决方法
1. 为系统托管标识分配VM本地管理员权限
虚拟机参与者是Azure RBAC角色,仅能管理VM生命周期,无法访问VM内部的服务控制管理器(SCM)。需将自动化账户的系统托管标识加入VM本地管理员组:
- Azure AD加入的VM:创建Azure AD安全组,将系统托管标识加入该组,再在VM的「本地管理员分配」中添加此组。
- 混合/本地AD加入的VM:通过组策略或本地用户和组管理,将系统托管标识的SID(格式为
S-1-12-1-<ObjectID>,<ObjectID>可在自动化账户→标识→系统分配中查看)添加到本地管理员组。
2. 确保WinRM服务配置正确
Get-Service -Computer依赖WinRM协议远程访问SCM,需确认:
- VM上的WinRM服务已启动(服务名:WinRM)。
- 执行
winrm quickconfig完成WinRM基础配置,确保防火墙开放默认端口(5985 HTTP/5986 HTTPS)。 - 若直接远程执行,需确保VM网络允许自动化账户的出站IP访问WinRM端口;或改用Hybrid Runbook Worker在VM内部执行命令,简化权限配置。
3. 改用Azure VM Run Command执行命令
若不想分配本地管理员权限,可通过Azure平台API执行操作,无需WinRM:
Invoke-AzVMRunCommand -ResourceGroupName $rgName -VMName $vmName -CommandId 'RunPowerShellScript' -ScriptString "Get-Service -Name $service"
此方式仅需自动化账户拥有虚拟机参与者/操作员角色即可。
4. 验证权限与连接
- 检查VM的「访问控制(IAM)」中是否存在系统托管标识的角色分配,本地管理员组的配置需等待同步(Azure AD加入的VM可能需数分钟至数小时)。
- 在Runbook中添加调试步骤,比如用
Test-WSMan -ComputerName $vmName验证WinRM连接是否正常。
内容的提问来源于stack exchange,提问作者Narendra
相关产品推荐
相关产品推荐

