gpt4 book ai didi

powershell - 在奴隶上运行powershell命令-Jenkins

转载 作者:行者123 更新时间:2023-12-02 23:42:08 25 4
gpt4 key购买 nike

在从属服务器上运行Jenkins作业时,我正在获取此控制台输出。作业应创建一个文件并将其放在c:\foo\services.csv中。

这是job 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com