Private/ConvertFrom-HashtableToAttrList.ps1
# Copyright 2017 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # https://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. function ConvertFrom-HashtableToAttrList { <# .SYNOPSIS Convert a hashtable into an attr list, which is really an array of objects. .DESCRIPTION Converts a hashtable into an array of objects, each with a name and value. .PARAMETER Values The hashtable to convert. .PARAMETER NameProp The string used for the name or key of the k/v pair. Defaults to 'name'. .PARAMETER ValueProp The string used for the value of the k/v pair. Defaults to 'value'. .RETURNVALUE An array of hashtable objects with name,value keys. .EXAMPLE ConvertFrom-HashTableToAttrList -Values @{ creator = 'provisioning-script.ps1' created = [System.DateTime]::Now.ToString("yyyy MM dd") } #> PARAM( [Hashtable] $Values, [String] $NameProp = 'name', [String] $ValueProp = 'value' ) PROCESS { $Result = @() foreach( $kv in $Values.GetEnumerator()) { if($kv.Name) { $hash = @{} $hash[$NameProp] = $kv.Name $hash[$ValueProp] = $kv.Value $Result += $hash } } # Return an ARRAY of objects like { name = something; value = somethingelse } $Result } } |