Dynamic Key Value Pairs (Members)

Aus Wiki-WebPerfect
Version vom 22. Oktober 2021, 10:24 Uhr von Admin (Diskussion | Beiträge)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche
# Define PSCustomObject as a "Template" for the structure
$Result = [PSCustomObject]@{
    PSTypeName = "Metric"
    Measure = "asset_appliance_oneview"
    Metrics = @{}
}
 
 
# Function to loop over all properties and add the Keys and Values to the "Template" PSCustomObject
Function Add-DynamicKeyValues {
    param(
        [Parameter(Mandatory=$true,HelpMessage="PSCustomObject template and result")]
        [PSCustomObject]$Result,
 
        [Parameter(Mandatory=$true,HelpMessage="Object with multiple properties")]
        [System.Object]$InputObject,
 
        [Parameter(Mandatory=$false,HelpMessage="Object with multiple properties")]
        [string]$ObjectPath = "Metrics",
 
        [Parameter(Mandatory=$true,HelpMessage="Property to extract as the Key")]
        [string]$Key,
 
        [Parameter(Mandatory=$false,HelpMessage="String to add as suffix to the Key name")]
        [string]$KeySuffix,
 
        [Parameter(Mandatory=$true,HelpMessage="Property to extract as the Value")]
        [string]$KeyValue
    )
 
    Process {
        Foreach ($_InputObject in $InputObject) {
            $Result.$ObjectPath.Add(($_InputObject.($Key) + $KeySuffix).ToLower(), $_InputObject.($KeyValue))
        }
    }
}
 
 
# Use the function
Add-DynamicKeyValues -result $result -InputObject (Get-ChildItem -Path "C:\Windows" -File | Select-Object -First 10) -ObjectPath "Metrics" -Key "Name" -KeyValue "Length"