By converting the hasktables key collection to an array, I do not get an error removing key/value pairs while iterating over the hash.
function Remove-HashtableNulls { <# .SYNOPSIS Removes any Key pairs that have a NULL value. .DESCRIPTION This function will take a hashtable and iterate over all the Key pairs and remove any that have a NULL for the value. It will then return the edited hashtable. .EXAMPLE PS C:\> $TestHash = Remove-HashtableNulls $TestHash .EXAMPLE PS C:\> $TestHash = Remove-HashtableNulls -HashTable $TestHash .NOTES Original Author: Norman Skinner (Edgile Inc.) (Norman.Skinner@Edgile.com) Original Created on: 11/30/2012 Version: 1.0.0.0 HISTORY: ===========#================#====================================== Date | User | Description -----------+----------------+-------------------------------------- 11/30/2012 | Norman Skinner | Created script -----------+----------------+-------------------------------------- | | -----------+----------------+-------------------------------------- #> [CmdletBinding()] param ( [parameter(Mandatory=$true, HelpMessage= 'Enter a hashtable for null removals.')] [hashtable] # The hashtable that will have any null valuses removed. $HashTable ) Set-StrictMode -Version 'Latest' $VerbosePreference = 'Continue' $ProgressPreference = 'SilentlyContinue' $ErrorActionPreference = 'Stop' foreach($Key in [array]$HashTable.Keys) { if ($HashTable[$Key] -eq $null) { $HashTable.Remove($Key) } } Write-Output $HashTable }
No comments:
Post a Comment