在slave - Jenkins上运行powershell命令



在从属服务器上运行Jenkins作业时,我得到了这个控制台输出。作业应该创建一个文件并将其放在c:fooservices.csv

下面是作业powershell命令:
Get-Service | Export-CSV c:fooservice.csv

注意这个控制台输出中的"bypass"一词。我无法忘记它。我认为这就是问题所在:

[AnonymousJWTApi] $ powershell.exe -NonInteractive -ExecutionPolicy .exe搭桥","C: xxx AppData 用户当地 Temp hudson1582303083838020200.ps1"

我在网上发现,当一个脚本在主服务器上运行时,这个错误会发生。

因此,我在从属服务器上手动创建了脚本,并将其放在c:foolistServices.ps1中。然后在詹金斯(主)中,这个命令在从属服务器上运行:“C:foolistServices.ps1”调用脚本直接从从属服务器运行。

我仍然得到相同的控制台输出…关于"旁路"的事情似乎仍然导致它不工作。csv文件没有放在foo文件夹中。是旁路阻止了它的工作吗?如果是,解决方案是什么?

和完整的控制台输出:

Started by user anonymous
Building remotely on slave1 in workspace C:JenkinsMasterworkspaceAnonymousJWTApi
 > git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
 > git.exe config remote.origin.url C:UsersxxxSourceReposAnonymousJWTApi # timeout=10
Fetching upstream changes from C:UsersxxxSourceReposAnonymousJWTApi
 > git.exe --version # timeout=10
 > git.exe -c core.askpass=true fetch --tags --progress C:UsersxxxSourceReposAnonymousJWTApi +refs/heads/*:refs/remotes/origin/*
Seen branch in repository origin/master
Seen 1 remote branch
Checking out Revision a7087f81af855cc96b8763a5ec66b96c19a44a30 (origin/master)
 > git.exe config core.sparsecheckout # timeout=10
 > git.exe checkout -f a7087f81af855cc96b8763a5ec66b96c19a44a30
 > git.exe rev-list a7087f81af855cc96b8763a5ec66b96c19a44a30 # timeout=10
[AnonymousJWTApi] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:UsersxxxAppDataLocalTemphudson1582303083838020200.ps1'"
Finished: SUCCESS

编辑:文件正在被保存到主…: P

似乎slave不打算托管PowerShell脚本或它们的输出,这是我不知道的。

-ExecutionPolicy Bypass确保无论计算机或用户的执行策略如何,脚本文件都可以运行。这是正确的,这不是你的问题的原因。

问题可能是权限。

Jenkins从属代理作为某个用户运行;或者是用来启动它的用户,或者如果它作为服务运行,那么它将是服务帐户。

用户可能没有权限写C:Foo,所以你可以检查一下。

另一种测试方法是写入工作空间目录,所以这样做:
Get-Service | Export-CSV $env:WORKSPACEservice.csv

应该可以。如果是,那么更改C:Foo目录的权限,或者以已经拥有权限的帐户运行从服务器。

这里有一种方法可以告诉您哪个用户正在运行服务,以及工作空间目录在哪里:

Get-ChildItem env: | Out-String | Set-Content -Path $env:USERPROFILEenv.txt

这将把一个名为env.txt的文件写入运行脚本的用户的配置文件,其中包含所有的环境变量(包括%WORKSPACE%)。您只需要浏览每个用户配置文件,看看它在哪里结束,然后您也知道了用户。

最新更新