Visual Studio Team Services - 发布定义 - 以管理员身份运行任务(PowerShell)

3
在VSTS中,我有一个发布定义,需要以管理员身份运行PowerShell脚本。
发布代理配置为运行作为一个账户,该账户是本地管理员并具有所需的权限,但UAC限制了这些权限,除非以“管理员”身份执行PowerShell。
我能在VSTS上以管理员身份运行PS而无需完全禁用服务器上的UAC吗?

你的PowerShell脚本中哪些操作需要管理员权限?我有一个PowerShell脚本,用于在HKLM下添加和更新注册表。当代理以管理员帐户运行时,它可以在我的构建代理上成功运行。 - Eddie Chen - MSFT
我正在使用SPFarm帐户运行脚本,并将WSP解决方案收回/部署到SharePoint农场中。当以内置管理员身份执行时,脚本可以正常工作,但对于任何其他帐户都无法工作,即使权限相同也是如此。我认为这是因为内置管理员帐户已禁用UAC,而其他帐户没有。 - tsw_mik
4个回答

1
我认为没有使用PS任务完成这个任务的方法。您可以尝试在目标服务器上运行"Run PS on target servers"并提供管理员凭据。您需要将代理机器的名称(因此这不是理想的)作为任务的输入。那可能不需要UAC。我们将把这个作为一个功能请求进行记录。

“在目标服务器上运行PS”并不理想。为了解决这个问题,我也考虑执行一个升级的任务,该任务必须在服务器上预定义,但最终重新配置代理以作为内置管理员运行,从而可以绕过用户帐户控制(UAC)。再次强调,这并不理想,因为我更喜欢使用另一个更受限制的帐户。因此,在下一个VSTS版本中开发此功能绝对值得考虑。 - tsw_mik
你知道这个是否被实现了吗?我正在寻找一个任务,让我以管理员身份运行我的PowerShell脚本。 "远程机器上的PowerShell"任务在我的情况下不适用,因为我需要放置内联脚本而不是文件路径,因为目标机器不包含该脚本。 - Tomasz Wida

1
我遇到了同样的问题。为了解决它,我做了以下操作(可能会因人而异):
  1. 卸载Azure DevOps代理
  2. 确认代理用户是管理员
  3. 重新安装Azure DevOps代理
当我最初安装代理时,代理运行的用户不是管理员(我在安装代理后将该用户添加到了Builtin\Administrators组中)。我不确定是否会导致问题,但是卸载/重新安装对我有用。

0

我认为Inline或Path选项不是问题所在。也许在部署环境计算机上安装代理程序,并在安装过程中分配某个用户的凭据(您确定该用户在SharePoint Farm上具有管理特权)可能会有所帮助。然后在VSTS中验证代理是否在线,并在部署组部分中正常工作。


-1
我们通过创建一个轻量级的 .Netcore Worker 服务,具有 http 请求功能,并在提升的服务特权状态下运行,来解决无法使用提升的 Powershell 命令的问题。您可以从常规的 Powershell YML 任务发送 Invoke-RestMethod 命令,并触发 ASP 控制器另一端的自定义逻辑。我们使用它在单元测试之前删除 Appx 包以进行重新安装。该存储库位于 AzureAdmin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接