Dynamic Key Value Pairs (Members): Unterschied zwischen den Versionen

Aus Wiki-WebPerfect
Wechseln zu: Navigation, Suche
Zeile 4: Zeile 4:
  
 
<source lang="powershell">
 
<source lang="powershell">
# 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 to loop over all properties and add the Keys and Values to the "Template" PSCustomObject
 
Function Add-DynamicKeyValues {
 
Function Add-DynamicKeyValues {
Zeile 41: Zeile 33:
 
}
 
}
  
 +
 +
# Define PSCustomObject as a "Template" for the structure
 +
$Result = [PSCustomObject]@{
 +
    PSTypeName = "Metric"
 +
    Measure = "asset_appliance_oneview"
 +
    Metrics = @{}
 +
}
  
 
# Use the function
 
# Use the function

Version vom 22. Oktober 2021, 13:05 Uhr

In the following example I create a PowerShell object with dynamic Key Value Pairs of the first 10 files in the path "C:\Windows".
The key is filename "Name" and keyvalue is the size "Length".


# 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))
        }
    }
}
 
 
# Define PSCustomObject as a "Template" for the structure
$Result = [PSCustomObject]@{
    PSTypeName = "Metric"
    Measure = "asset_appliance_oneview"
    Metrics = @{}
}
 
# Use the function
$Files = (Get-ChildItem -Path "C:\Windows" -File | Select-Object -First 10)
Add-DynamicKeyValues -result $result -InputObject $Files -ObjectPath "Metrics" -Key "Name" -KeyValue "Length"


Result as JSON Object to get the depth

{
    "Measure":  "asset_appliance_oneview",
    "Metrics":  {
                    "bfsvc.exe":  82944,
                    "dfsradmin.exe.config":  1315,
                    "hh.exe":  18432,
                    "dfsradmin.exe":  232960,
                    "explorer.exe":  4388592,
                    "mib.bin":  43131,
                    "lsasetup.log":  1380,
                    "helppane.exe":  1072128,
                    "bootstat.dat":  67584,
                    "dtcinstall.log":  4056
                }
}