# encoding: ascii
# api: powershell
# title: Get-ChildItemProxy
# description: This is an advanced function that uses a proxy command to add two new switches to get-childitem
# version: 0.1
# type: function
# author: Andy Schneider
# license: CC0
# function: Get-ChildItemProxy
# x-poshcode-id: 785
# x-archived: 2014-04-13T02:39:38
# x-published: 2009-01-04T16:29:00
#
# You can name this function get-childitem and it will overwrite the existing cmdlet.
# With Proxy Commands, you can mess with the meta data and add/subtract parameters from real cmdlets
# Most of this code was generated with Jeffrey Snover’s new Metaprogramming Module
# http://blogs.msdn.com/powershell/archive/2009/01/04/extending-and-or-modifing-commands-with-proxies.aspx
# http://www.get-powershell.com
#
Function Get-ChildItemProxy {
[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},
[Switch]
${Recurse},
[Switch]
${Force},
[Switch]
${Name},
[Switch]
${ContainersOnly},
[Switch]
${NoContainersOnly}
)
begin
{
try {
$outBuffer = $null
if ($PSBoundParameters.TryGetValue('OutBuffer', [ref]$outBuffer) -and $outBuffer -gt 1024)
{
$PSBoundParameters['OutBuffer'] = 1024
}
$wrappedCmd = $ExecutionContext.InvokeCommand.GetCommand('Get-ChildItem', [System.Management.Automation.CommandTypes]::Cmdlet)
if ($ContainersOnly)
{
[Void]$PSBoundParameters.Remove("ContainersOnly")
$scriptCmd = {& $wrappedCmd @PSBoundParameters | Where-Object {$_.PSIsContainer -eq $true}}
} elseif ($NoContainersOnly)
{
[Void]$PSBoundParameters.Remove("NoContainersOnly")
$scriptCmd = {& $wrappedCmd @PSBoundParameters | Where-Object {$_.PSIsContainer -eq $false}}
}
{
$scriptCmd = {& $wrappedCmd @PSBoundParameters }
}
$steppablePipeline = $scriptCmd.GetSteppablePipeline()
$steppablePipeline.Begin($PSCmdlet)
} catch {
throw
}
}
process
{
try {
$steppablePipeline.Process($_)
} catch {
throw
}
}
end
{
try {
$steppablePipeline.End()
} catch {
throw
}
}
<#
.ForwardHelpTargetName Get-ChildItem
.ForwardHelpCategory Cmdlet
#>
}