我正在尝试编写一个 PowerShell 脚本来构建来自多个目录的文件列表。将所有目录添加到主列表后,我想对所有文件进行相同的处理。
这就是我所拥有的:
$items = New-Object Collections.Generic.List[IO.FileInfo]
$loc1 = @(Get-ChildItem -Path "\\server\C$\Program Files (x86)\Data1\" -Recurse)
$loc2 = @(Get-ChildItem -Path "\\server\C$\Web\DataStorage\" -Recurse)
$items.Add($loc1) # This line fails (the next also fails)
$items.Add($loc2)
# Processing code is here
失败并出现此错误:
无法转换参数“0”,值为:“System.Object[]”,用于“Add”以键入“System.IO.FileInfo”:“无法转换“System.Object[]”类型的“System.Object[]”值。 Object[]”来输入“System.IO.FileInfo”。
我最感兴趣的是这种情况的正确方法是什么。我意识到我的代码是一种非常C的方式——如果有更多的 PowerShell 方式来完成相同的任务,我完全赞成。关键是数量$loc#'s
可能会随着时间而变化,因此在生成的代码中添加和删除一两个应该很容易。