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 脚本创建元数据

来自云中竹子的 Selenium Web 驱动程序测试,用于测试文件上传

竹失败测试无法解析junit

Inline::C 构建失败