簡體   English   中英

TFS 2017 版本:無法運行 PowerShell

[英]TFS 2017 Build: Cannot Run PowerShell

我們使用的是 TFS 2017,它配置了多個構建。 不久前,我們開始在第二步出現錯誤,即運行 PowerShell 腳本(第一步是獲取源代碼):

2018-06-28T19:58:59.4326443Z ##[command]. 'K:\_work\3\s\BuildScripts\MainPre.ps1' -env "test"
2018-06-28T19:58:59.6236482Z ##[error]Access is denied
2018-06-28T19:58:59.6266488Z ##[section]Finishing: PowerShell Script

4 小時前的構建運行良好。 沒有對文件或文件系統進行任何更改。 我正在等待 .network 團隊的消息,看看他們是否對構建帳戶做了任何事情。

什么可能突然導致此錯誤,我該如何解決? 注意:我還沒有嘗試將其關閉並再次打開。

基於錯誤消息“ ##[error]Access is denied ”,這似乎是權限問題。

只需嘗試以下各項以縮小問題范圍:

  • 在“ 獲取源代碼”步驟中啟用“ 清理”選項:將“ Clean設置為True然后在“ Clean options.下選擇“ Sources Directory Clean options.
  • 檢查代理服務帳戶是否具有訪問腳本的正確權限。

  • 嘗試更改另一個具有正確權限的帳戶
    以服務帳戶的身份訪問agent _work foler,然后再次將構建隊列。

  • 部署新代理,然后重試。

如果仍然system.debug ,只需在變量選項卡(設置為true)中打開system.debug以捕獲日志並在此處共享以進行進一步的故障排除。

看起來Powershell任務在執行腳本時運行某種安全檢查?

我在DEBUG中運行了powershell任務,您可以在此處看到該任務隱式運行了一些安全工作。

這確實使我在運行它時被拒絕訪問:

##[debug]C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe 

-NoLogo -Sta -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command "try { $null = [System.Security.Cryptography.ProtectedData] } catch { Write-Verbose 'Adding assemly: System.Security' ; Add-Type -AssemblyName 'System.Security' ; $null = [System.Security.Cryptography.ProtectedData] ; $Error.Clear() } ; Invoke-Expression -Command ([System.Text.Encoding]::UTF8.GetString([System.Security.Cryptography.ProtectedData]::Unprotect([System.Convert]::FromBase64String('AQAAANCMnd8BFdERjHoAwE/Cl+sBAAAARs9EULLEBU+ppaGEeISmGgAAAAACAAAAAAADZgAAwAAAABAAAABLYbw0iUTABtaCw2PJ5KrrAAAAAASAAACgAAAAEAAAAOg6VMmANxZJSRmKjPWauqRYAAAAqDSQVtB4LtvBaujeTs1GKn4CPFrW484weBNwtJ7aujcJLWV4wBLHD9n+IEVZ6z13oyIpyxUEceTtiMKnfuO8irwX9l5DoHqlMGU6mx1Q5kou2V6ITEcl0BQAAAD1h7qvkyE8+PcdKmVKLHVpqYO4mA=='), [System.Convert]::FromBase64String('8yTvn1ZlLZGC7M3ewDzbLw=='), [System.Security.Cryptography.DataProtectionScope]::CurrentUser))) ; if (!(Test-Path -LiteralPath variable:\LastExitCode)) { Write-Verbose 'Last exit code is not set.' } else { Write-Verbose ('$LastExitCode: {0}' -f $LastExitCode) ; exit $LastExitCode }"
2018-06-30T12:44:57.8488275Z ##

對我們來說,MCafee 阻止了 powershell。一旦添加了異常,我們就沒事了。

在檢查服務器時,我注意到事件查看器說Symantec SONAR阻止了Power Shell腳本。 在我們的網絡團隊為構建過程添加了例外之后,我們的構建再次按預期工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM