# encoding: utf-8 # api: powershell # title: new get-childitem # description: proxy-function to get-childitem # version: 0.1 # type: function # author: walid toumi # license: CC0 # function: Get-ChildItem # x-poshcode-id: 3072 # x-archived: 2012-01-14T07:04:28 # x-published: 2012-11-26T20:39:00 # # usage: # ———- # PS D:\Documents and Settings\walid2mi> Get-ChildItem -Pattern “\.” # Rpertoire : D:\Documents and Settings\walid2mi # Mode LastWriteTime Length Name # —— ——————- ——— —— # a— 21/11/2010 11:28 6 k.txt # a— 04/11/2010 10:49 1362 t.txt # a— 05/11/2010 06:14 3070 w.txt # PS D:\Documents and Settings\walid2mi> Get-ChildItem -Pattern “\.” -BinarySize # Rpertoire : D:\Documents and Settings\walid2mi # Mode LastWriteTime Length Name # —— ——————- ——— —— # a— 21/11/2010 11:28 6B k.txt # a— 04/11/2010 10:49 1KB t.txt # a— 05/11/2010 06:14 3KB w.txt # PS D:\Documents and Settings\walid2mi> Get-ChildItem -Pattern “\.” -BinarySize | sort -Descending size # Rpertoire : D:\Documents and Settings\walid2mi # Mode LastWriteTime Length Name # —— ——————- ——— —— # a— 05/11/2010 06:14 3KB w.txt # a— 04/11/2010 10:49 1KB t.txt # a— 21/11/2010 11:28 6B k.txt # Function Get-ChildItem { <# .ForwardHelpTargetName Get-ChildItem .ForwardHelpCategory Cmdlet #> [CmdletBinding(DefaultParameterSetName='Items', SupportsTransactions=$true)] param( [Parameter(ParameterSetName='Items', Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)] [System.String[]] ${Path}, [Parameter(ParameterSetName='LiteralItems', Mandatory=$true, Position=0, ValueFromPipelineByPropertyName=$true)] [Alias('PSPath')] [System.String[]] ${LiteralPath}, [Parameter(Position=1)] [System.String] ${Filter}, [System.String[]] ${Include}, [System.String[]] ${Exclude}, [System.String] ${Pattern}, [Switch] ${Recurse}, [Switch] ${BinarySizeInHumanReadableFormat}, [Switch] ${Force}, [Switch] ${Name}) begin { try { $outBuffer = $null if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer)) { $PSBoundParameters['OutBuffer'] = 1 } $wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand('Microsoft.PowerShell.Management\Get-ChildItem', [System.Management.Automation.CommandTypes]::Cmdlet) $cmd = "" if($BinarySizeInHumanReadableFormat) { $PSBoundParameters.Remove('BinarySizeInHumanReadableFormat') | Out-Null $cmd = @" | ForEach-Object { `$_length=Switch(`$_.length) { { `$_ -lt 1kb } { '{0}B' -f (`$_) ;break } { `$_ -lt 1MB } { '{0}KB' -f ([math]::round(`$(`$_/ 1kb)), 2) ;break } { `$_ -lt 1gb } { '{0}MB' -f ([math]::round(`$(`$_/ 1mb), 2)) ;break } defaut { { '{0}GB' -f ([math]::round(`$(`$_/ 1gb), 2)) ;break } } } if(`$_.PSISContainer) { `$_length=`$null } `$_ | Add-Member noteproperty size `$_.length -Pass | Add-Member noteproperty length `$_length -PassThru -Force } "@ } if($PSBoundParameters['Pattern']) { if($Filter -or $Include) { throw "les paramètres Pattern et Filter/Include sont mutuellemnt exculsive" } else { $PSBoundParameters.Remove('Pattern') | Out-Null $scriptCmd = {& $wrappedCmd @PSBoundParameters | Where { $_.Name -imatch "$Pattern" } } } } else { $scriptCmd = {& $wrappedCmd @PSBoundParameters } } $scriptCmd = $ExecutionContext.InvokeCommand.NewScriptBlock( $scriptCmd.ToString() + $cmd ) $steppablePipeline = $scriptCmd.GetSteppablePipeline($myInvocation.CommandOrigin) $steppablePipeline.Begin($PSCmdlet) } catch { throw } } process { try { $steppablePipeline.Process($_) } catch { throw } } end { try { $steppablePipeline.End() } catch { throw } } }