robocopy说它在powershell脚本中使用时接收无效参数

我试图在PowerShell脚本中使用robocopy,但目前失败。 当我手动运行以下命令

robocopy \\corporatesystem00.local.com\C$\Maven\ \\corporatesystem01.local.com\C$\Maven\ * /e /purge 

我能够将一个文件夹的所有内容复制到另一个文件夹中,并且它像魔术一样工作。 但是,“PowerShell”是多么的“精彩”,我想我正遇到一个未知的怪胎。 当我从PowerShell脚本运行上述相同的命令时,我收到此错误:

 PS C:\Program_Files> .\jenkins-maven-copy.ps1 Performing Jenkins Maven Sync robocopy \\corporatesystem00.local.com\C$\Maven\ \\corporatesystem01.local.com\C$\Maven\ * /e /purge ------------------------------------------------------------------------------- ROBOCOPY :: Robust File Copy for Windows ------------------------------------------------------------------------------- Started : Wednesday, July 30, 2014 3:00:03 PM Source - \\corporatesystem00.local.com\C$\Maven\ Dest - \\corporatesystem01.local.com\C$\Maven\ Files : * Options : /DCOPY:DA /COPY:DAT /R:1000000 /W:30 ------------------------------------------------------------------------------ ERROR : Invalid Parameter #4 : "/e /purge" Simple Usage :: ROBOCOPY source destination /MIR source :: Source Directory (drive:\path or \\server\share\path). destination :: Destination Dir (drive:\path or \\server\share\path). /MIR :: Mirror a complete directory tree. For more usage information run ROBOCOPY /? **** /MIR can DELETE files as well as copy them ! 

这发生在我为我的选项放入脚本中的任何命令行选项中。 我正在运行的脚本如下。

 Param ( [string]$srcLocation = '\\corporatesystem00.local.com\C$\Maven\', [string]$destLocation = '\\corporatesystem01.local.com\C$\Maven\', [string]$files = '*', [string]$options = '/e /purge' ) function syncMaven( $srcLocation, $destLocation, $files, $options ) { Write-Host "Performing Jenkins Maven Sync" Write-Host "robocopy $srcLocation $destLocation $files $options" robocopy $srcLocation $destLocation $files $options } syncMaven $srcLocation $destLocation $files $options 

如果您查看之前的错误/输出,则会显示该命令正在传递,但具有命令选项,但是robocopy无法识别它们或其他内容。

 PS C:\Program_Files> .\jenkins-maven-copy.ps1 Performing Jenkins Maven Sync robocopy \\corporatesystem00.local.com\C$\Maven\ \\corporatesystem01.local.com\C$\Maven\ * /e /purge 

所以,我不知所措

您可能会通过在PowerShell中尝试以下操作来重现您的问题:

 robocopy ab * "/e /purge" 

如果这是真的,参数扩展是什么导致你的问题。 要解决这个问题,你可以走这条路:

 iex "$srcLocation $destLocation $files $options"