我有两个非常相似的一行命令,但有一个有效,一个没有变量。
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。
答案 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