2016-02-16 23 views
0

運行以下簡單的腳本,利用複製-Item命令時,我收到錯誤消息「路徑中具有非法字符」獲取錯誤$ Files變量將每行拉入數組中。每一行實際上是一個文件路徑和名稱。回聲輸出看起來很好,並且下面:在簡單PowerShell中使用拷貝項目時,腳本

  1. C:\測試\測試\的text.txt

  2. C:\備份\測試

第一個是原單文件要複製的位置,第二個是將其複製到的文件夾。任何人都可以幫我弄清楚這兩條路上的「非法角色」是什麼。錯誤指向源路徑。

完全錯誤代碼如下:

Copy-Item : Illegal characters in path. 
At C:\users\lane.pulcini\desktop\searchfiles\testcopy.ps1:7 char:10 
+ Copy-Item <<<< $File $newDirectory -force -recurse 
+ CategoryInfo   : NotSpecified: (:) [Copy-Item], ArgumentException 
+ FullyQualifiedErrorId :  S System.ArgumentException,Microsoft.PowerShell.Commands.CopyItemCommand 
+0

請張貼您收到的確切錯誤消息。 –

+0

聽起來就像你在某個地方有一個隱藏的角色,但我們需要未經修改的例外以獲得更好的想法。你是否試過在'Copy-Item'中使用'-LiteralPath'作爲源參數?它通常用奇怪的角色更好地工作。防爆。 '複製項目-LiteralPath $文件 - 目標$ newdirectory -Force' –

+0

我剛剛編輯與我收到的錯誤 – HondaKillrsx

回答

2

Out-String正在對字符串的結束的東西,所以你需要修剪:

$newDirectory = (($Directory | Out-String) -replace "C:\\test", "C:\Backup").TrimEnd() 

...或者,刪除Out-String - - 我不知道爲什麼你有它存在:

$newDirectory = $Directory -replace "C:\\test", "C:\Backup" 

你可以看到這家b Ÿ檢查length屬性:

PS C:\> $d = $Directory | out-string 
PS C:\> $d.Length 
17 
PS C:\> $Directory.Length 
15 

如果你想腳本來創建下C:\下的備份,如果不存在的話,將Copy-Item行之前執行以下操作:

if(!(test-path $newDirectory)){ 
    New-Item $newDirectory -type directory 
} 
+0

是的,我拿出串關,這使得它能夠複製,但它把它放到根「備份」文件夾,而不是重新創建的文件夾stucture – HondaKillrsx

+0

好去處 - 這是行尾0D0A結束.. – mcr

+0

複製項命令不會創建文件夾結構。如果正確的指定目錄不存在於c:\ Backup下,則需要創建它。 –