get-childitem 在同名文件夹中查找文件

get-childitem find files in folders with same names

我需要检查命名为“.policy”的文件夹中的所有文件是否为以太 'azureDeploy.parameters.json' 或 'azureDeploy.json'

如果我只希望它检查一个文件夹,我只需给出完整路径,如下所示:

            $azureDeployFiles = @('azureDeploy.parameters.json', 'azureDeploy.json')        
            (Get-ChildItem -path ..\..\fes\.policy -file -Recurse).name | Should -BeIn $azureDeployFiles

那行得通。但是我有多个名为 '.\..\..\.policy' 的文件夹,我想检查所有具有该命名的文件夹是否仅包含具有命名 'azureDeploy.parameters.json' 或 'azureDeploy.json'

的文件

您可以在 Directory 上用 Where-Object 指定 'only files in folders named X' 属性:

$azureDeployFiles = @('azureDeploy.parameters.json', 'azureDeploy.json')
Get-ChildItem -path ..\..\ -Recurse -File | 
  Where Directory -Like "*\.policy" | 
    # example checking file names with -In
    Foreach { $_.Name -In $azureDeployFiles }

继续我的评论。 . .在管道的帮助下,我们可以使用 Where-Object 来过滤具有特定名称的目录:

$azureDeployFiles = @('azureDeploy.parameters.json', 'azureDeploy.json') 
Get-ChildItem -Path '.\MyPath' -Include $azureDeployFiles -Recurse | 
    Where-Object Directory -Like '*\.Policy'