Я пытаюсь использовать robocopy в сценарии PowerShell, но в настоящее время это не удается. Когда я запускаю следующую команду вручную
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 a b * "/e /purge"
Если это так, проблема заключается в расширении параметров. Чтобы обойти это, вы можете пойти по этому пути:
iex "$srcLocation $destLocation $files $options"