我在从属服务器上运行Jenkins作业时获得此控制台输出。作业应该创建一个文件并将其放在c:\foo\services.csv
。
这是作业powershell命令:
Get-Service | Export-CSV c:\foo\service.csv
请注意此控制台输出中的“bypass”一词。我无法超越它。我认为这是问题所在:
[AnonymousJWTApi] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass“& 'C:\用户\ XXX \应用程序数据\本地\ TEMP \ hudson1582303083838020200.ps1'“
我在网上发现,当在主服务器上运行脚本时,会发生错误。
所以我手动在奴隶上创建了脚本并将其放在c:\foo\listServices.ps1
中。然后在Jenkins(master)中,此命令在slave:“C:\foo\listServices.ps1”
上运行,以调用脚本直接从slave运行。
我仍然得到相同的控制台输出......关于“绕过”的事情似乎仍然导致它无法正常工作。 csv文件未放在foo文件夹中。是旁路阻止它工作,如果是,那么解决方案是什么?
完整的控制台输出:
Started by user anonymous
Building remotely on slave1 in workspace C:\Jenkins\Master\workspace\AnonymousJWTApi
> git.exe rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git.exe config remote.origin.url C:\Users\xxx\Source\Repos\AnonymousJWTApi # timeout=10
Fetching upstream changes from C:\Users\xxx\Source\Repos\AnonymousJWTApi
> git.exe --version # timeout=10
> git.exe -c core.askpass=true fetch --tags --progress C:\Users\xxx\Source\Repos\AnonymousJWTApi +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:\Users\xxx\AppData\Local\Temp\hudson1582303083838020200.ps1'"
Finished: SUCCESS
编辑:文件已保存到主文件...:P
似乎奴隶并不打算托管PowerShell脚本或它们的输出,我不知道。
答案 0 :(得分:2)
-ExecutionPolicy Bypass
确保无论计算机或用户的执行策略如何,都可以运行脚本文件。这是正确的,这不是你问题的原因。
问题可能是权限。
Jenkins slave代理正在以某个用户身份运行;无论是您用来启动它的用户,还是作为服务运行的用户,它都将是服务帐户。
用户可能无权写信C:\Foo
,因此您可以查看。
另一种测试方法是写入工作区目录,所以执行以下操作:
Get-Service | Export-CSV $env:WORKSPACE\service.csv
那应该有用。如果是,则更改C:\Foo
目录的权限,或者将奴隶作为已拥有权限的帐户运行。
这是一种方法,您可以告诉哪个用户正在运行该服务,以及工作区目录的位置:
Get-ChildItem env:\ | Out-String | Set-Content -Path $env:USERPROFILE\env.txt
这会将名为env.txt
的文件写入运行脚本的用户的配置文件中,其中包含所有环境变量(包括%WORKSPACE%
)。您只需浏览每个用户个人资料以查看其结束位置,然后您也将了解该用户。