2017-02-27 103 views
0

我試圖使用PowerShell cmdlet Invoke-Expression啓動RoboCopy。從PowerShell啓動時,Robocopy無法識別選項

在下面的腳本中,當選項僅僅是',RoboCopy工作正常。',但只要選項'/ MIR'被添加,我得到這個「無效的參數#3」錯誤。

似乎RoboCopy在解析'/ MIR'時遇到了問題,並且在選項中的正斜槓上出現ch咽。我試過使用各種逃避角色無濟於事!

# Source & Destination paths 
# 
    [string]$srcPath = 'C:\folderSrc' 
    [string]$desPath = 'C:\folderDes' 

# Example 1 
# ---------- 
# This works - note how $option1 contains only '*.*' 
# 
    [string]$option1 = '*.*' 
    [string]$line = 'RoboCopy $srcPath $desPath $option1' 
    Invoke-Expression "$line" 

# Example 2: 
# ---------- 
# This doesn't work - after '/MIR' is added to the option, RoboCopy seems to choke on the forward slash in '/MIR' 
# 
    [string]$option2 = '*.* /MIR' 
    [string]$line = 'RoboCopy $srcPath $desPath $option2' 
    Invoke-Expression "$line" 
+0

在我的問題,示例1的作品,但示例2沒有。和唯一的區別是$ option1 ='\ *。\ *'和$ option2 ='\ *。\ */MIR' – user3657462

+0

我不認爲有一個可變的擴展問題,因爲如果變量沒有沒有得到正確的擴展 – user3657462

+0

首先,請[編輯你的問題](http://stackoverflow.com/posts/42496558/edit),不要添加評論來嘗試和修改它。其次,由於知道這是一個解釋器,而不是直接的PowerShell,正如您在回答Christopher G. Lewis的答案時所分享的那樣,我會認爲這是您的解釋器而不是PowerShell本身的問題。看起來解釋器沒有正確處理斜線。 – TheMadTechnician

回答

0

當使用單引號時,Powershell不展開$變量。

使用雙引號的位置:

[string]$line = "RoboCopy $srcPath $desPath $option1" 

它可能使更有意義,不使用InvokeExpression

RoboCopy.exe $srcPath $desPath *.* /MIR 

應工作

+0

我需要Invoke-Expression,因爲這實際上是PowerShell腳本的解釋器,其中解釋器讀取PowerShell腳本的文本文件並逐行執行腳本 – user3657462

+0

我不完全確定您的意思。探索每個'[string] $ line'命令的雙引號 –

+0

謝謝,克里斯。我會再玩一些 – user3657462

0

我發現這(使用雙InvokeExpression)曾工作:

[string]$srcPath = 'C:\folderSrc' 
    [string]$desPath = 'C:\folderDes' 
    [string]$option = '*.* /MIR' 
    [string]$line = 'Invoke-Expression "RoboCopy $srcPath $desPath $option"' 

    Invoke-Expression "$line" 

但不能解釋爲什麼這(使用一個調用-表達)也可以工作:

[string]$srcPath = 'C:\folderSrc' 
    [string]$desPath = 'C:\folderDes' 
    [string]$option = '*.*' 
    [string]$line = 'RoboCopy $srcPath $desPath $option' 

    Invoke-Expression "$line" 

注意的是,在2種情況下,唯一的區別是$選項變量:

'*.*' vs. '*.* /MIR' 

像不一致這是完全士氣低落...