powershell inline 在竹子中失败,但从 windows powershell CLI 传递
Posted
技术标签:
【中文标题】powershell inline 在竹子中失败,但从 windows powershell CLI 传递【英文标题】:powershell inline fails in bamboo but passes from windows powershell CLI 【发布时间】:2018-02-16 17:03:58 【问题描述】:我有一个命令将文件从竹复制到 Windows 机器。我正在使用竹子的 powershell 解释器,但它失败并出现错误:
由于 [powershell -ExecutionPolicy 绕过的返回码] 导致任务失败 -命令 /bin/sh /usr/local/bamboo/agent1-home/temp/TAF-EL-JOB1-25-ScriptBuildTask-1469152609455458957.ps1] 为 -1 而预期为 0
下面是两行代码
net use \\10.103.200.45\LU1 Password123! /USER:administrator@vlab.local /PERSISTENT:NO | Out-Null
Copy-Item -Path pkfolder\* -Destination \\10.103.200.45\LU1 -Force -PassThru -Verbose
但是在 windows powershell CLI 中执行相同的代码?
【问题讨论】:
你为什么用NET USE
而不是New-PSDrive
?
【参考方案1】:
您的错误消息表明您正在 Linux 上运行此脚本。大概您使用的是 PowerShell Core 6.0?
Windows 中的net use
正在调用net.exe
。那是一个外部程序,而不是 PowerShell 命令。它与the net
command that's a part of Samba on Linux 的语法不同。 Linux 上的该命令旨在具有与 Windows 上的 net.exe
命令相同的功能,但它主要侧重于 net.exe
管理 Windows NT 域控制器的功能。
New-PSDrive
是我建议首先尝试的,但我不确定该命令是否已完全移植到 Linux。 Linux 上的 PowerShell Core 刚刚完成测试。
如果这在 Linux 上不起作用,您可能需要使用 mount.cifs
。
【讨论】:
New-PSDrive
is implemented and working 在 v6 中。【参考方案2】:
这应该可以满足您的需求:
$Null = New-PSDrive -Name Remote -PSProvider FileSystem -Root \\10.103.200.45\LU1
Copy-Item -Path C:\Fully\qualified\path\to\pkfolder\* -Destination Remote:\ -PassThru -Force -Verbose
【讨论】:
used $pass="Password123!"|ConvertTo-SecureString -AsPlainText -Force $Cred = New-Object System.Management.Automation.PsCredential('administrator@vlab.local',$pass) New -PSDrive -name k -Root \\10.103.200.45\ELU1 -Credential $cred -PSProvider 文件系统 不走运,仍然出现同样的错误。 在末尾添加Exit 0
。以上是关于powershell inline 在竹子中失败,但从 windows powershell CLI 传递的主要内容,如果未能解决你的问题,请参考以下文章
所有测试都通过了,但竹子构建失败并显示“没有找到失败的测试,可能发生了编译错误”。
在 Bamboo 中从 powershell 脚本创建元数据