Powershell GCI 递归深度在添加包含参数时停止工作

Powershell GCI Recursive Depth Stops Working When Adding Include Parameter

我假设这是一个简单的问题。我写了一大段代码。简而言之,它会下载文件名和扩展名的动态列表,导入包含我们每个共享的根目录的 csv,然后比较文件以找到匹配项。

$Directory = Get-ChildItem -Path $path -Recurse -Depth 2 -Include $ExtList -Force

超级简单吧?除了深度参数不起作用。它递归地搜索每个级别。如果我这样做:

$Directory = Get-ChildItem -Path $path -Depth 2  -Force

深度参数工作得很好,它只搜索两个级别。如果我不包括递归或深度,它将通过仅搜索顶级来按预期工作。唯一的区别是我要删除 -Include 参数。

$Path 是一个变量,如 \server\root\ $ExtList 是一个文件名数组

同样,他们都是单独工作,而不是一起工作。

我需要在此处同时包含深度和包含参数。有谁知道我做错了什么,或者这是一个小故障?

编辑 --------------------------

做 "Where-Object" 我试过这个:

$Directory = Get-ChildItem -Path $path -Recurse -Depth 2 -Force | Where-Object {$_.Extension -like $ExtList}

而且...什么也没发生。为了测试,这个脚本需要大约 10 分钟才能成功 运行 在一个好的日子里,它在不到 1 秒的时间内完成。 (准确地说是 715 毫秒) 当我进行调试时,好像没有任何东西被输送到 where-object。

编辑------

$ExtList 设置如下所示:

@((Invoke-WebRequest -Uri "https://fsrm.experiant.ca/api/v1/get").content | convertfrom-json | % {$_.filters})

这将为您提供我正在使用的确切列表和格式。

$Path 从如下所示的 csv 文件中提取:

此 CSV 包含 3000 多个不同的共享。我知道这很奇怪,是的,我必须为我们的基础设施这样做。

在 Windows Server 2012 R2 机器上切换到 运行 后,深度参数与 include 一起使用。这似乎是我使用的版本的错误。