我已经为我们的自定义 DevOps 构建代理设置了一个带有 Windows 10 Pro 的 Azure VM。我创建的用户是管理员,也属于管理员组。
但是,如果我这样做:
- 通过具有管理员权限的该用户到 VM 的 RDP
- 运行 PowerShell(不具有管理员权限)
- 尝试运行例如
Import-Certificate
命令
在 PowerShell 中,我收到一个Access Denied
错误。
我的所有 PowerShell 实例是否有可能自动拥有管理员权限?
该解决方案将服务于该托管的 DevOps 代理。现在我无法在我们的 DevOps 管道中运行任何最终需要管理员权限的脚本。
所以我在没有任何第三方工具的情况下弄清楚了。
启动自定义构建代理的原始命令是:
C:\windows\system32\cmd.exe /D /S /C start "Agent with AutoLogon" "C:\agent\run.cmd" --startuptype autostartup
以上生成的非管理员命令提示符通过它 DevOps 没有管理员/提升权限。
您可以使用
Start-Process
PowerShell 命令启动上述命令以-Verb RunAs
获得提升的权限:powershell -Command "Start-Process powershell -ArgumentList 'C:\windows\system32\cmd.exe /D /S /C start C:\agent\run.cmd --startuptype autostartup' -Verb RunAs"
但是,这种方法牺牲了命令提示符的标题,因为我没有弄清楚如何正确转义它所需的双引号。
如果要在管道中运行需要管理员提升的任务,则需要确保代理服务正在使用管理员帐户运行。这仅适用于自托管代理。如果您使用的是 Microsoft 托管代理,您将无法提升为管理员。