Home
POV-Ray
PowerShell pipeline
PowerShell scripts
Out-Excel
Start-Monitor
Get-LogEvents
GUI_ServerInfo
RegistryFunctions
Get-ChildItemToDepth
code
Get-SharesAndPerm...
PoSh punctuation
Contact
Sitemap
Links

Function Get-ChildItemToDepth {
<#
.SYNOPSIS
Returns child-items recursively to given depth.

.DESCRIPTION
Returns child-items recursively to given depth.

.PARAMETER Path
Path to start from

.PARAMETER Filter
Filter to use.
Defaults to "*"

.PARAMETER ToDepth
Specifies recursion depth.
Defaults to 0.

.PARAMETER FoldersOnly
Switch that specifies to only output folders.
Default is: output files and folders

.NOTES

Written by FurBall

.EXAMPLE
Get-ChildItemToDepth -Path 'D:\' -ToDepth 0 -FoldersOnly | select fullname

.EXAMPLE
Get-ChildItemToDepth -Path 'D:' -ToDepth 2 -FoldersOnly |  ForEach-Object {
    $path = $_.FullName
    ($path | Get-Acl).Access | ForEach-Object {
        New-Object PSObject -Property @{
            "Path"                 = $path;
            IdentityReference    = $_.IdentityReference;
            FileSystemRights    = $_.FileSystemRights;
            IsInherited            = $_.IsInherited;
        }
    }
} | ft

.LINK
http://www.fourcats.nl/Get-ChildItemToDepth.html


#>
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$false,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)][String]$Path = $PWD,
        [Parameter(Mandatory=$false)][String]$Filter = "*",
        [Parameter(Mandatory=$false)][Byte]$ToDepth = 0,
        [Parameter(Mandatory=$false)][Byte]$CurrentDepth = 0,
        [Switch]$FoldersOnly,
        [Switch]$DebugMode
    )
    $CurrentDepth++
    If ($DebugMode) { $DebugPreference = "Continue" }
    Get-ChildItem $Path | ForEach-Object{
        if ($FoldersOnly){
            If ($_.PsIsContainer) {
                $_ | Where-Object{ $_.Name -Like $Filter }
            }
        }
        else{
            $_ | Where-Object{ $_.Name -Like $Filter }
        }
        If ($_.PsIsContainer) {
            If ($CurrentDepth -le $ToDepth) {
                if ($FoldersOnly){
                    Get-ChildItemToDepth -Path $_.FullName -Filter $Filter -ToDepth $ToDepth -CurrentDepth $CurrentDepth -FoldersOnly
                }
                else{
                    Get-ChildItemToDepth -Path $_.FullName -Filter $Filter -ToDepth $ToDepth -CurrentDepth $CurrentDepth
                }
            }
        }
    }
}







 

to Top of Page

FurBall Productions | furball@casema.nl