powershell Copy-Item 路径中的非法字符

powershell Copy-Item Illegal characters in path

我在尝试执行 PowerShell 脚本时从 TeamCity 收到以下错误。

Illegal characters in path.
     + CategoryInfo          : NotSpecified: (:) [Copy-Item], ArgumentException
     + FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Co 
    mmands.CopyItemCommand

下面是我调用的脚本块...

$xcopyFolderBlock = 
{ 
 $destFolder    = ($args[0] | out-string)
 $sourceFolder  = $args[1]

 # See what value was passed in to the script block
 write-host "destFolder inside xcopyFolder code block: " $destFolder
 write-host "sourceFolder inside xcopyFolder code block: " $sourceFolder

 Copy-Item $sourceFolder $destFolder -force -recurse -verbose 
} 

我是这样称呼它的...

Invoke-Command -ComputerName $web1Name -ScriptBlock $xcopyFolderBlock -ArgumentList(, $web1FolderServices, $nasFolderServices)

我的 TeamCity 日志显示脚本块中写入主机调用的这些值...

destFolder inside xcopyFolder code block:  \\s1-bridge-web1\BridgeWebServices\Prod\MileageCalculator\v1.1.31\Services

sourceFolder inside xcopyFolder code block:  \\s1-nas-1\software_dev\build\Prod\build_user\MileageCalculator\Services\*

好的,我知道了。问题出在你在参数列表中的昏迷,这里:

-ArgumentList(, $web1FolderServices, $nasFolderServices)

因此你必须这样做:

($args[0] | out-string)

所以如果你这样做,它会起作用:

Invoke-Command -ComputerName $web1Name -ScriptBlock $xcopyFolderBlock -ArgumentList($web1FolderServices, $nasFolderServices)

还有这个:

$xcopyFolderBlock = 
{ 
 $destFolder    = $args[0]
 $sourceFolder  = $args[1]

 # See what value was passed in to the script block
 write-host "destFolder inside xcopyFolder code block: " $destFolder
 write-host "sourceFolder inside xcopyFolder code block: " $sourceFolder

 Copy-Item $sourceFolder $destFolder -force -recurse -verbose 
}