我將開發機器升級到了Powershell 5,現在在PS2中工作的代碼不在PS5中。在PowerShell中使用Robocopy 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工作?謝謝。
編輯:在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變得困惑的地方。不過,我需要一種在PowerShell中執行robocopy的方法。 –