Dynamic Key Value Pairs (Members): Unterschied zwischen den Versionen
Aus Wiki-WebPerfect
Admin (Diskussion | Beiträge) |
Admin (Diskussion | Beiträge) |
||
Zeile 4: | Zeile 4: | ||
<source lang="powershell"> | <source lang="powershell"> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
# 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 } }