Powershell 为什么此命令不在TFS生成中执行?
我有2个powershell脚本Powershell 为什么此命令不在TFS生成中执行?,powershell,tfs,Powershell,Tfs,我有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-RestMet
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,是否有一些特殊的东西需要专门包装此命令?我是不是遗漏了什么???我终于找到了问题所在 我们将令牌保存在脚本无法从中调用的用户环境变量中。我认为,当我以上述用户的身份登录服务器进行测试时,脚本之所以能够工作是因为它能够识别用户并能够获取环境变量 但是,当我使用远程Powershell从TFS运行时,它无法识别user env变量
在系统环境变量中设置环境变量标记有效 写输出可能吗?@lloyd nope,不起作用。我不明白的是,我甚至没有试图将其打印到TFS控制台,而是获取存储在变量中的值并在其他地方使用它。它没有存储任何东西响应包含什么?@lloyd key1:value123$然后,pass应该包含value123。它在本地非常有效,但从TFS构建,nope@lloyd我在这里遵循了答案,从那以后,这个答案在当地一直运作良好:?