2017-06-07 249 views
1

我有一個非常簡單的Powershell腳本,我想用它作爲Jenkins構建的一部分來返回程序集信息。該腳本包含以下內容:Powershell [system.reflection.assembly] .loadfile()異常訪問被Jenkins運行時被拒絕

Write-Host([system.reflection.assembly]::loadfile($args[0])).FullName 

當我試圖把這個腳本作爲詹金斯構建的一部分,我得到了以下錯誤:

.\GetAssemblyInfo.ps1 
Exception calling "LoadFile" with "1" argument(s): "Access is denied. 
(Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))" 

At C:\Jenkins\workspace\Tools\NuGetBuildSupport\GetAssemblyInfo.ps1:1 char:50 
+ Write-Host([system.reflection.assembly]::loadfile <<<< ($args[0])).FullName 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : DotNetMethodException 

的命令時,它並不像部分執行運行良好Jenkins構建。

正在傳遞到loadfile的DLL沒有被標記爲阻止

我使用調用PowerShell是繞道

+2

什麼用戶構建執行程序以?它是否有權限訪問DLL?如果您以該用戶的身份交互式運行PowerShell,您是否能夠執行相同的代碼? – briantist

回答

0

我建議瀏覽到您的服務器「服務」執行策略選擇Jenkins服務,您可以分配特定的用戶。作爲一項測試,試着給予詹金斯管理員訪問權限,如果該作品創建另一個用戶並限制訪問權限。它在Jenkins基礎設施之外運行良好的事實是這個問題的一個指標。

  • 服務:(搜索在開始菜單中或公共場所的服務:C:\ ProgramData \微軟\的Windows \開始菜單\程序\管理工具)

  • 導航到詹金斯服務

  • 打開屬性
  • 在選項卡中選擇日誌並將其設置爲與適當的權限(例如:管理員)用戶