2012-10-19 22 views
0

我有兩個非常相似的一行命令,但其中一個可以工作,一個不可以使用變量。爲什麼兩個類似的PowerShell copy-Item命令行爲不同

Copy-Item "C:\BadSourceCodes\dropTest\base1\*" -Include "myUsers.Config","myUsers.WSF" -Destination "C:\BadSourceCodes\dropTest\temp1" 

這只是起作用我有兩個文件,我希望它們被複制到目標文件夾。

如果我只要我使用的包括它不工作的文件變量創建這樣的

$files = "myUsers.Config,myUsers.WSF" 

$tempFiles = [string]::Concat("`"",$files.Replace(",","`",`""),"`"") 
$tempFiles 
Copy-Item "C:\BadSourceCodes\dropTest\base1\*" -Include $tempFiles -Destination "C:\BadSourceCodes\dropTest\temp1" -Force 

。我檢查了不同的變化,它不起作用。

$變量的行爲有什麼不同?

我嘗試以下類似$變化($臨時文件), '$臨時文件', 「$ TEMPFILES」 .....

UPDATE: 我想,當我逃離報價和更換,以「,」那麼它將引用視爲字符串的一部分。一些如何這是我採取的壞方法。但是,有效的只是$ files.Split(「,」),它創建了一個字符串數組和完成。

回答

3

-Include參數想要一個字符串數組,而不是單個字符串中的名稱列表。把名字放在一個實際的數組中,它應該可以工作:

#create an array of strings 
$files = "myUsers.Config","myUsers.WSF" 

Copy-Item "C:\BadSourceCodes\dropTest\base1\*" -Include $files -Destination "C:\BadSourceCodes\dropTest\temp1" -Force 
+0

zdan-在我的$ tempfiles中我連接來創建一個字符串數組。這種方法不應該工作嗎?還是不把它當作一個數組來處理呢?回覆較晚,抱歉。 – Mitul

+0

有用的是$ tempfiles = $ files.Split(「,」),它創建了一個字符串數組,但我仍然好奇爲什麼我的方法無法工作。我認爲解析器認爲我作爲字符串的一部分而逃脫的引號可能是。 – Mitul

+1

@Mitul在你的問題的方法$ tempFiles是一個字符串,它可能看起來像創建數組的符號,但解析器永遠不會打擾解析它。只要做一個$ tempFiles.GetType()來看看我的意思。 – zdan

相關問題