functions/ConvertTo-PSGCKnownValuesTable.ps1
function ConvertTo-PSGCKnownValuesTable { <# .SYNOPSIS Function to create a hashtable from value/variable strings. .DESCRIPTION Function to create a hashtable from value/variable strings. .PARAMETER NumberString The string containing the numbers .PARAMETER PlaceHolder The placeholders the numbers should be associated within the hashtable .EXAMPLE ConvertTo-PSGCKnownValuesTable -NumberString "1234" -Placeholder "abcd" Returns @{ a = "1"; b = "2"; c = "3"; d = "4" } .NOTES General notes #> [CmdletBinding()] param ( [Parameter(Mandatory = $true, ParameterSetName = "numberString")] [Parameter(Mandatory = $true, ParameterSetName = "numberStringOnly")] [string]$NumberString, [Parameter(Mandatory = $true, ParameterSetName = "numberString")] [string]$PlaceHolder ) Write-PSFMessage "Create hashtable" if ([string]::IsNullOrEmpty($PlaceHolder)) { $PlaceHolder = "abcdefghijklmnopqrstuvwxyz" Write-PSFMessage -Level Warning "No -PlaceHolder given, assuming '$PlaceHolder'" } $PlaceHolder = $PlaceHolder.ToLower() $resultHash = [ordered]@{} for ($i = 0; $i -lt $PlaceHolder.Length -and $i -lt $NumberString.Length; $i++) { # Query current letter $key = $PlaceHolder[$i] # Check if it's a letter from a-z, otherwise continue in the loop if ($key -notmatch '[a-z]') { continue } $resultHash."$key" = "$($NumberString[$i])" } Write-PSFMessage "result=$($resultHash|ConvertTo-Json -Compress)" $resultHash } |