【问题标题】:Run Powershell or Command Prompt as administrator during Visual Studio Team Services build在 Visual Studio Team Services 构建期间以管理员身份运行 Powershell 或命令提示符
【发布时间】:2016-08-01 17:05:57
【问题描述】:

我正在处理一个我们延迟签署程序集的项目。我需要在构建过程中使用强名称工具几次,关闭强名称验证,然后在打包程序集之前对其进行完全签名。我尝试使用 powershell 步骤关闭验证,但它返回此错误:

脚本:

$testprojs = gci Project.*.dll -r
$testprojs | % {
            sn -Vr $_
            write-output $("Turned off sn verification for " + $_.Name)
}

错误:

Failed to open registry key -- Administrator permissions are needed to use
the selected options. Use an administrator command prompt to complete these tasks.

所以我创建了一个脚本来运行第一个脚本,但添加了 -elevated 参数。这没什么区别。

我还尝试使用命令提示符步骤而不是 powershell。这也返回了同样的错误。

For /r %g in ("Project.*.dll") DO sn -Vr %g

当我尝试将相同的脚本 rdp'd 运行到构建代理机器本身时,它按预期工作。只有当它作为构建中的一个步骤运行时才不起作用。

有什么想法吗?

【问题讨论】:

    标签: build azure-devops strongname build-definition delay-sign


    【解决方案1】:

    根据你的描述:

    当我尝试运行相同的脚本 rdp'd 到构建代理机器时 本身,它按预期工作。

    我假设您正在使用自己的构建代理进行构建。那么这可能是由于构建代理没有使用管理员帐户运行造成的。请更新您的构建代理以使用管理员帐户运行,然后重试。

    运行代理作为服务运行

    如果您将代理部署为作为 Windows 服务运行,则代理 可以从服务管理单元控制运行状态。跑步 services.msc 并查找“VSO 代理 ()”。如果你 需要更改登录帐户,不要从服务中进行 卡入式。相反,从提升的命令提示符运行: C:\Agent\Agent\VsoAgent.exe /ChangeWindowsServiceAccount Run 交互方式

    否则,如果您将代理安装为交互式运行,则代理 可以通过启动 Agent\VsoAgent.exe 来启动。

    详情请参考此链接:Run the agent

    【讨论】:

    • 就是这样!是的,它是我们自己的构建代理。我没有意识到运行该服务的帐户没有管理权限。干杯
    • 自 2020 年起,这不再有效。我确实有相同的设置,并且代理使用管理员帐户运行,但是,它无法运行任何依赖于提升的命令。
    猜你喜欢
    • 2016-05-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 2023-03-15
    • 2011-12-03
    • 1970-01-01
    • 2021-12-29
    相关资源
    最近更新 更多