Powershell 调用在服务器上有效,但通过 jenkins 出现 returns 错误

Powershell call works on server but returns error through jenkins

我们最近获得了一些新的 Windows Server 2019 机器,我想将它们添加到我们的 Jenkins 设置中。问题是: 执行任何外部程序都会导致错误。 docker login, git status, java -version 都报这样的错误

[TestPowershell] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\Users\XXX~1\AppData\Local\Temp\jenkins1416755497082623783.ps1'"
java : java version "1.8.0_101"
At C:\Users\XXX-sa\AppData\Local\Temp\jenkins1416755497082623783.ps1:1 char:1
+ java -version
+ ~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (java version "1.8.0_101":String) [], RemoteException
    + FullyQualifiedErrorId : NativeCommandError

Java(TM) SE Runtime Environment (build 1.8.0_101-b13
)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
Notifying upstream projects of job completion
Finished: SUCCESS

在服务器上试过,工作正常。所有设置都与我们的 2016 服务器相同,不会出现此问题

编辑:我在 VM 2019 上设置了一个 vanilla master,它没有这个错误,但在 2016 master 上仍然出现错误。

默认 jenkins-slave 服务在 SYSTEM 用户下运行,例如git 操作将失败,因为缺少用户凭据。

在 Windows service control manager 中更改 jenkins-slave 服务的用户(属性 - 登录)具有适当权限的用户配置文件。

希望对您有所帮助。

出于某种原因,这似乎与 dotnet 4.8 有关。 Windows 2019 1809 附带 4.7,它出现了这个奇怪的错误,它不仅发生在 java -version 上,而且 git clone , npm install 和 ng build 等等也会导致同样的错误。安装 dotnet framework 4.8 修复它..以防有人遇到与我们相同的问题..