Azure VM托管运行命令中RunAsUser与RunAsPassword参数被忽略
以下是针对RunAsUser和RunAsPassword参数被忽略、脚本仍以systemprofile执行的排查要点:
参数传递方式错误:必须将
RunAsUser和RunAsPassword作为受保护参数传递。通过门户操作时,需在参数设置中勾选「将参数标记为安全」;用Azure CLI/ARM模板时,要把参数放在protectedParameters字段,而非普通parameters。示例CLI命令:az vm run-command create --resource-group <资源组名> --vm-name <VM名> --name <命令名> --script "whoami" --protected-parameters RunAsUser=<本地用户名> RunAsPassword=<密码>用户类型不支持:
RunAs参数仅支持VM本地Windows账户,Azure AD用户无法通过此参数切换身份。确认你指定的是VM上已创建的本地管理员账户,而非Azure AD身份。账户状态异常:检查指定用户的密码是否符合VM本地密码策略,账户是否被锁定或禁用。可手动登录VM验证该账户能否正常登录并执行脚本。
Guest Agent问题:VM上的Azure Guest Agent负责处理RunAs身份切换,若Agent未运行、版本过旧或损坏,会导致参数失效。可登录VM查看
WindowsAzureGuestAgent服务状态,必要时重新安装Agent。权限配置细节:虽然已分配
Virtual Machine Administrator Login角色,需确认该角色是直接分配到VM级别,而非父资源组/订阅(避免权限继承问题);同时确保执行托管命令的身份(如你的账户或服务主体)拥有Microsoft.Compute/virtualMachines/runCommands/write权限。脚本检测逻辑验证:确认脚本中检测当前用户的代码是否准确,比如用
whoami或[System.Security.Principal.WindowsIdentity]::GetCurrent().Name输出当前用户,排除脚本误判的可能。
内容的提问来源于stack exchange,提问作者ggirodda

