Home > Enterprise >  get-childitem find files in folders with same names
get-childitem find files in folders with same names

Time:10-28

I need to check that all files in folders with the naming ".policy" is ether 'azureDeploy.parameters.json' or 'azureDeploy.json'

if i only want it to check one folder i just give the full path as here:

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

and that works. But i have multiple folders called something like '.\..\..\.policy' and i would like to check if all the folders with that naming only contains files with the naming 'azureDeploy.parameters.json' or 'azureDeploy.json'

CodePudding user response:

You could specify 'only files in folders named X' with Where-Object on the Directory property:

$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 }

CodePudding user response:

Continuing from my comment. . .with a little help from the pipeline, we can use Where-Object to filter for directories with that specific name:

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