powershell - 使用 TF.exe 时 Azure 管道“忘记”身份验证
问题描述
- 将本地构建服务器与 Azure DevOps Services 结合使用
- 构建代理配置为使用在构建服务器上具有管理权限的 AD 帐户
- Pipeline 执行一个 Powershell 脚本,该脚本又执行该
tf.exe
实用程序 - 具体命令是
tf.exe vc workspaces /collection:[Azure collection address]
- 命令失败并显示 F30063:您无权访问 [Azure 集合地址]
- 认为可以通过为构建代理的用户/通行证提供
/login
开关来解决问题。但这似乎对workspaces
命令没有影响
这个问题可以通过以下方式临时解决:
- 使用构建代理使用的相同帐户登录构建服务器
- 打开 Visual Studio 命令提示符
- 运行命令:
tf.exe vc workspaces /collection:[Azure collection address]
- 此时,将显示 Microsoft 登录屏幕,例如
- 使用构建代理的凭据提供登录
- 命令运行成功
- 如果在此之后再次运行管道,它也会成功运行
- 但是在看似可变的时间段(有时是几天)之后,此身份验证似乎过期并且管道开始再次抛出“未经授权的访问”错误
- 然后需要重复使用命令行的“修复”
需要做什么才能在管道(或 Powershell 脚本)中持久化身份验证,以便无需手动重新输入帐户信息?
解决方案
默认情况下,Visual Studio 将自动缓存凭据。如果我们想更改登录凭据信息,我们需要清除缓存并重新输入新凭据。
- 打开命令提示符窗口并导航到 Visual Studio 安装路径:cd Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE</li>
- 使用 runas 命令启动 Visual Studio:runas /netonly /user:TFSCredentialUser devenv.exe
- 现在它会提示您输入用户的密码。请输入您的新密码以打开您的 Visual Studio。如果您输入了错误的密码,Visual Studio 启动后会提示您再次输入密码。
您还可以参考此票证来清理凭据