可能是问题的标题有些误导,但我怀疑从2.0到4.0已经做了一些我不知道的变化......所以这里有了
以下代码将使用Powershell 2.0
为我提供Windows 2008服务器上的预期结果dataB
正在执行的命令将是
## Get files/items using above variables
$LogFiles = @(Get-ChildItem "$IhsLogFolder\*.*" -include $LogFileMatch)
$log.debugFormat("Found in {0} are {1}", $IhsLogFolder, $LogFiles)
foreach ($LogFile in $LogFiles) {
$log.debugFormat("Found {0}", $LogFile.Name)
}
$LogFiles += @(Get-ChildItem "$PluginLogFolder" -recurse -include $LogFileMatch)
$log.debugFormat("Found in {0} are {1}", $PluginLogFolder, $LogFiles)
和
Get-ChildItem e:\logs\HTTPServer\*.* -include error.log,access.log,http_plugin.log
在使用Powershell 4.0的Windows 2012上尝试相同的脚本,上面的代码不会返回任何文件,但是如果我在Powershell中只尝试命令就会找到文件
Get-ChildItem e:\logs\WebPlugin\webserver\*.* -include error.log,access.log,http_plugin.log
有没有明显的理由让PS C:\> Get-ChildItem e:\logs\HTTPServer\*.* -include error.log,access.log,http_plugin.log
Directory: E:\logs\HTTPServer
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 20.10.2015 15:35 4296922 access.log
-a--- 19.10.2015 15:26 189102 error.log
在Powershell 4.0中没有返回文件?
更新
@(Get-ChildItem...
,将include作为变量应用 more 而不是一个文件不会在4.0上返回任何结果服务器,但使用变量只有一个文件工作。 更好的代码段
$LogFiles = @(Get-ChildItem "$IhsLogFolder\*.*" -include error.log,access.log,http_plugin.log)
答案 0 :(得分:0)
-include
参数采用字符串数组:
> Get-Help Get-ChildItem -Full
...
-Include <string[]>
因此,构建$includeFile
作为数组应该有效,目前您将其设置为字符串。
尝试改为:
$includeFile = "file1.txt","file2.txt"
$result = Get-ChildItem $pathToFolder -include $includeFile