2016-08-24 156 views
2

在slave上运行Jenkins作业时,我得到了这个控制台输出。该工作应该创建一个文件并将其放入c:\foo\services.csv在slave上运行powershell命令 - Jenkins

这里是工作PowerShell命令:

Get-Service | Export-CSV c:\foo\service.csv 

注意在这个控制台输出词“搭桥”。我无法摆脱它。我认为这是问题:

[AnonymousJWTApi] $ powershell.exe -nonInteractive -ExecutionPolicy 搭桥 “& '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

您是否登录过从站并尝试手动运行该命令?怎么了? –

+0

@ChrisN是的,它在那么做的时候 – BeniaminoBaggins

回答

2

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

问题可能是权限。

詹金斯奴隶代理正在作为某个用户运行;无论是您用来启动它的用户,还是作为服务运行的用户,它都将是服务帐户。

用户可能没有权限写入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%)。您只需浏览每个用户配置文件即可查看其最终位置,然后您就会知道该用户。

+0

如何找到$ env:WORKSPACE的位置?在master的powershell中运行它实际上是c盘,权限被拒绝。但在奴隶似乎工作,我只是不知道在哪里寻找文件 – BeniaminoBaggins

+0

你如何运行奴隶作为一个帐户? – BeniaminoBaggins

+1

@Beniamino_Baggins当您在主设备上定义了从节点时,您指定了FS根目录; 'workspace'将会低于这个级别,然后我认为它会在那里创建一个文件夹,里面有工作的名字。请参阅https://wiki.jenkins-ci.org/x/BAN-Ag – briantist