2017-06-07 198 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 \开始菜单\程序\管理工具)

  • 导航到詹金斯服务

  • 打开属性
  • 在选项卡中选择日志并将其设置为与适当的权限(例如:管理员)用户