在从属设备上运行 Jenkins 作业时,我收到此控制台输出。该作业应创建一个文件并将其放入 c:\foo\services.csv
。
这是作业 powershell 命令:
Get-Service | Export-CSV c:\foo\service.csv
请注意此控制台输出中的“bypass”一词。我无法克服它。我认为这是问题所在:
[AnonymousJWTApi] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\Users\xxx\AppData\Local\Temp\hudson1582303083838020200.ps1'"
我在网上发现,在主机和从机上运行脚本时会发生错误。
所以我在从站上手动创建了脚本并将其放入c:\foo\listServices.ps1
。然后在 Jenkins(主站)中,此命令在从站上运行:“C:\foo\listServices.ps1”
以调用脚本直接从从站运行。
我仍然得到相同的控制台输出......有关“绕过”的某些内容似乎仍然导致它无法工作。 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 脚本或其输出,这是我不知道的。
最佳答案
-ExecutionPolicy Bypass
确保无论计算机或用户的执行策略如何,脚本文件都可以运行。这是正确的,但这不是您问题的原因。
问题可能是权限问题。
Jenkins从属代理以某个用户身份运行;您用来启动它的用户,或者如果它作为服务运行,那么它将是服务帐户。
用户可能没有写入 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%
)。您只需浏览每个用户个人资料即可了解其最终位置,然后您就会了解该用户。
关于powershell - 在从机上运行 powershell 命令 - Jenkins,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39113683/