Werbung

Herkunft

Kurzinformation

Turns reflection information on a type into parameter metadata

Syntax

<# .Synopsis Turns reflection information on a type into parameter metadata .Description Turns reflection information on a type into parameter metadata. Parameter metadata can be used to rapidly generate functions. The script caches properties and events it has converted into parameters so that generation works more quickly as similar types are discovered. .Example [Windows.Window] | ConvertTo-ParameterMetaData .Parameter Type The Type that will be converted into parameter metadata #> param( [Parameter(Mandatory=$true,ValueFromPipeline=$true)] [Type]$Type ) begin { if (-not $script:CachedParameters) { $script:CachedParameters = @{} } } process { $params = @() $constructors = $type.GetConstructors() if (-not ($constructors -and -not $constructors[0].GetParameters())) { return } foreach ($p in $type.GetProperties("Instance,Public")) { switch ($p.PropertyType) { {$script:CachedParameters."$($p.DeclaringType).$($p.Name)"} { $params+=($script:CachedParameters."$($p.DeclaringType).$($p.Name)") break } {$_.GetInterface("IList")} { $param = New-Object Management.Automation.ParameterMetaData $p.Name $script:CachedParameters."$($p.DeclaringType).$($p.Name)" = $param $params += $param break } {($_ -eq [string]) -and $p.CanWrite} { $param = New-Object Management.Automation.ParameterMetaData $p.Name, ([string]) $script:CachedParameters."$($p.DeclaringType).$($p.Name)" = $param $params += $param break } {($_ -eq [Double]) -and $p.CanWrite} { $param = New-Object Management.Automation.ParameterMetaData $p.Name, ([Double]) $script:CachedParameters."$($p.DeclaringType).$($p.Name)" = $param $params += $param break } {($_ -eq [Int]) -and $p.CanWrite} { $param = New-Object Management.Automation.ParameterMetaData $p.Name, ([Int]) $script:CachedParameters."$($p.DeclaringType).$($p.Name)" = $param $params += $param break } {($_ -eq [UInt32]) -and $p.CanWrite} { $param = New-Object Management.Automation.ParameterMetaData $p.Name, ([UInt32]) $script:CachedParameters."$($p.DeclaringType).$($p.Name)" = $param $params += $param break } {($_ -eq [Boolean]) -and $p.CanWrite} { # Turn Booleans into switch parameters $param = New-Object Management.Automation.ParameterMetaData $p.Name, ([switch]) $script:CachedParameters."$($p.DeclaringType).$($p.Name)" = $param $params += $param break } {$_.IsSubclassOf([Enum]) -and $p.CanWrite} { # Primitives or enums will be strongly typed $param = New-Object Management.Automation.ParameterMetaData $p.Name, $p.PropertyType $params += $param $script:CachedParameters."$($p.DeclaringType).$($p.Name)" = $param break } {$p.CanWrite} { $param = New-Object Management.Automation.ParameterMetaData $p.Name $script:CachedParameters."$($p.DeclaringType).$($p.Name)" = $param $params += $param } } } foreach ($e in $type.GetEvents("Instance, Public")) { if ($script:CachedParameters."$($e.DeclaringType).On_$($e.Name)") { $params += $script:CachedParameters."$($e.DeclaringType).On_$($e.Name)" } else { $p = New-Object Management.Automation.ParameterMetaData "On_$($e.Name)", ([ScriptBlock[]]) $params += $p $script:CachedParameters."$($e.DeclaringType).On_$($e.Name)" = $p } } $params }

Beschreibung

Turns reflection information on a type into parameter metadata.Parameter metadata can be used to rapidly generate functions.

The script caches properties and events it has converted intoparameters so that generation works more quickly as similar typesare discovered.

Links

Liste aller Commandlets Mehr über die Windows PowerShell

Bücher zur PowerShell

Buchcover Windows PowerShell 5.0 - Das Praxishandbuch (1. Auflage 2016/5. Auflage Gesamtreihe) Windows PowerShell 5.0 - Das Praxishandbuch (1. Auflage 2016/5. Auflage Gesamtreihe)
Autoren: Dr. Holger Schwichtenberg
erschienen 2016, 996 Seiten, 49,99 €
ISBN: 3446446435
Bestellung: Amazon.de oder im Buchhandel über ISBN 3446446435

Schulungen/Seminare

Offene Seminare zur PowerShell
In-House-Seminare zur PowerShell