对象中通常包含了许多信息,对象的属性也同样可能为空。如果想将一个对象中的空属性移除,让它只包含不为空值的属性。可以先将对象转换成哈希表,然后从哈希表中移除为空的属性,再将哈希表中转换成对象。在这期间,你同样有机会对属性名进行排序。
下面给出一个例子,使用WMI对象获取BIOS信息,然后移除值为空的属性。但是下面的例子需要PowerShell 3.0 的支持。
$bios = Get-WmiObject -Class Win32_BIOS $hashtable = $bios | Get-Member -MemberType *Property | Select-Object -ExpandProperty Name | Sort-Object | ForEach-Object -Begin { [System.Collections.Specialized.OrderedDictionary]$rv=@{} } -process { if ($bios.$_ -eq $null) { Write-Warning "Removing empty property $_" } else { $rv.$_ = $bios.$_ } } -end {$rv} $biosNew = New-Object PSObject $biosNew | Add-Member ($hashtable) -ErrorAction SilentlyContinue $biosNew
这里稍微留意一下,使用了一个.NET System.Collections.Specialized.OrderedDictionary 类型。它会创建一个特殊的排序的哈希表。因为正常情况下,使用的哈希表中不支持键值排序。
原文链接:Removing Empty Object Properties
本文链接: https://www.pstips.net/powershell-removing-empty-object-properties.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!