gpt4 book ai didi

powershell - 为什么此命令不能与TFS构建一起执行?

转载 作者:行者123 更新时间:2023-12-02 23:52:28 26 4
gpt4 key购买 nike

我有2个Powershell脚本
script1.ps1包含对Vault的REST调用,该调用返回一个包含一些键/值的json响应。

Function getValues($token) {
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("X-Vault-Token", $token)
$response = Invoke-RestMethod -method GET -uri "https://vault.com:8243/v1/secret/vault/development" -ContentType 'application/json' -headers $headers
$response.data| ConvertTo-Json -depth 100
}
getValues $token

假设响应中的那些键之一如下:
key1:value123
script2.ps1这样调用 scrip1.ps1
$currentDirectory = "D:\\Scripts"
$response = & "$currentDirectory\script1.ps1" | ConvertFrom-Json
$pass = $response[1]."key1"
$pass

如果我在本地测试并且我得到 value123作为预期的输出,则该块执行得很好

现在,我在TFS上设置了WinRM远程Powershell任务,并将其作为 script2.ps1的构建的一部分。

当然,我几乎将所有内容都记录到了 script2中的日志文件中,因此我可以看到除响应之外的所有输出。响应不会被返回!

当我运行TFS构建时$ pass不会打印任何内容,但是在本地打印就可以了

我必须为TFS专门包装此命令吗?我在这里想念东西吗?

最佳答案

我终于想通了

我们将 token 保存在脚本无法调用的USER环境变量中。我认为在进行测试时,因为我以所述用户身份登录服务器,所以脚本起作用是因为它可以识别用户并能够获取环境变量。

但是,当我使用远程Powershell从TFS运行时,它无法识别用户env变量。

在SYSTEM环境变量中设置环境变量标记有效!

关于powershell - 为什么此命令不能与TFS构建一起执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56370049/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com