1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
|
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]
${FileSizeInHumanReadableFormat},
[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($FileSizeInHumanReadableFormat) {
$PSBoundParameters.Remove('FileSizeInHumanReadableFormat') | Out-Null
$cmd = @"
| ForEach-Object {
`$in=Switch(`$_) {
{ `$_.length -lt 1kb }
{ '{0} B' -f (`$_.Length) ;break }
{ `$_.length -lt 1MB }
{ '{0} KB' -f ([math]::round(`$(`$_.Length/ 1kb)), 2) ;break }
{ `$_.length -lt 1gb }
{ '{0} MB' -f ([math]::round(`$(`$_.Length/ 1mb), 2)) ;break }
defaut {
{ '{0} GB' -f ([math]::round(`$(`$_.Length/ 1gb), 2)) ;break }
}
}
if(`$_.PSISContainer) { `$in=`$null }
New-Object PSObject -Property @{
Mode = `$_.Mode
LastWriteTime = `$_.LastWriteTime
Length = `$in
Name = `$_.Name
}
}
"@
}
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
}
}
} |
Partager