Rekursiv PowerShell Mappehentning: Ekskluder Specifikke Mapper Korrekt

Hvordan kan man rekursivt hente børneelementer af en mappe i PowerShell, ekskludere specifikke mapper og deres underordnede elementer, og sikre at ekskluderingen fungerer korrekt?

For at rekursivt hente børneelementer af en mappe i PowerShell, ekskludere specifikke mapper og deres underordnede elementer, og sikre at ekskluderingen fungerer korrekt, kan du bruge Get-ChildItem med en filtreringslogik, der tjekker hver elements sti mod en liste af ekskluderede stier.

Hvordan kan man rekursivt hente børneelementer af en mappe i PowerShell, ekskludere specifikke mapper og deres underordnede elementer, og sikre at ekskluderingen fungerer korrekt?

For at rekursivt hente børneelementer af en mappe i PowerShell, ekskludere specifikke mapper og deres underordnede elementer, og sikre at ekskluderingen fungerer korrekt, kan du følge disse trin:

  1. Definer roden af din søgning:
    $rootPath = "C:\DinMappe"
  2. Definer de mapper, du vil ekskludere:
    $excludePaths = @("C:\DinMappe\Exclude1", "C:\DinMappe\Exclude2")
  3. Brug Get-ChildItem til at hente alle filer og mapper rekursivt:
    $items = Get-ChildItem -Path $rootPath -Recurse
  4. Filtrer de ekskluderede mapper ud:
    
    $filteredItems = $items | Where-Object {
        $exclude = $false
        foreach ($excludePath in $excludePaths) {
            if ($_.FullName -like "$excludePath*") {
                $exclude = $true
                break
            }
        }
        -not $exclude
    }
    
  5. Output de filtrerede elementer:
    $filteredItems

Her er en samlet PowerShell script, der udfører ovenstående trin:


$rootPath = "C:\DinMappe"
$excludePaths = @("C:\DinMappe\Exclude1", "C:\DinMappe\Exclude2")

$items = Get-ChildItem -Path $rootPath -Recurse

$filteredItems = $items | Where-Object {
    $exclude = $false
    foreach ($excludePath in $excludePaths) {
        if ($_.FullName -like "$excludePath*") {
            $exclude = $true
            break
        }
    }
    -not $exclude
}

$filteredItems

Dette script vil rekursivt hente alle børneelementer af den angivne rodmappe, ekskludere de specifikke mapper og deres underordnede elementer, og sikre at ekskluderingen fungerer korrekt.