Я обновил свою машину разработки до Powershell 5, и теперь код, который работает в PS2, не находится в PS5.Использование Robocopy с Powershell 5
В моем коде Robocopy используется для копирования файлов из каталога svn checkout в рабочий каталог. Он также используется для очистки рабочего каталога.
Исходный код выглядит следующим образом:
$what = @("""/copy:DAT""","""/E""","/XD .svn","/XD Debug","/XF .pdb")
$options = @("""/R:4""","""/W:5""","""/TS""","""/NS""","""/Tee""","""/NP""")
if ($file) {
$cmdArgs = @("""$src""", """$dest""", """$file""", $what, $options)
}else
{
$cmdArgs = @("""$src""", """$dest""", $what, $options)
}
robocopy $cmdArgs
Когда команда выполняется с помощью PowerShell 5 я получаю
ERROR : Invalid Parameter #3 : "/copy:DAT /E /XD .svn /XD Debug /XF .pdb"
Я вижу то, что встречающийся, он обрабатывает параметр как одну команду, а чем отдельные параметры. Я пробовал одиночные двойные кавычки, я пробовал одиночные кавычки, но я все равно получаю тот же результат.
Если я жесткий код опция на линию исполнения,
robocopy $cmdArgs /COPY:DAT /E /XD .svn /XD Debug /XF .pdb /R:4 /W:5 /TS /NS /Tee /NP
, то команда будет работать, так что у меня есть обходной путь, на данный момент, но все-таки предпочла бы иметь оригинальную параметризированную структуру.
Что мне нужно сделать, чтобы это работало для PS5? Спасибо.
EDIT: С Windows 10 и PS5, я получаю следующее сообщение об ошибке: ОШИБКА: Неверный параметр # 5: "/ XD .svn"
$what = @("""/PURGE""","""/E""","/XD .svn","/XD Debug","/XF .pdb")
$options = @("""/R:4""","""/W:5""","""/TS""","""/NS""","""/Tee""","""/NP""")
$cmdArgs = @("""$srcBase""","""$targetPath"""; $what)
Для '/ XD .svn' У меня есть попытался включить его с тройными кавычками, одинарными кавычками, скрытыми кавычками и т. д. Однако успеха не было.
', $ what, $ options' ->'; $ Что; $ options' – PetSerAl
Благодарим вас за предложение, но это не с той же проблемой. Может ли кто-нибудь сделать мне одолжение и попробовать тот же сценарий с PowerShell 5? Я понимаю, что это зазубренный массив, и я подозреваю, что PowerShell запутывается. Однако мне нужен способ выполнить robocopy в powershell. –