为什么两个类似的PowerShell copy-Item命令的行为不同

时间:2012-10-19 21:19:00

标签: powershell

我有两个非常相似的一行命令,但有一个有效,一个没有变量。

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

只要我将变量用于包含文件,它就不起作用。我已经检查了不同的变化,它不起作用。

$ variable的行为是否有所不同?

我尝试过以下变体,例如$($ tempFiles),'$ tempFiles',“$ tempFiles”......

更新 我想当我逃避引号并用“,”代替时,它会将引用视为字符串的一部分。一些如何是我采取的坏方法。但是有效的只是$ files.Split(“,”),它创建了一个字符串数组和Done。

1 个答案:

答案 0 :(得分: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