对象中通常包含了许多信息,对象的属性也同样可能为空。如果想将一个对象中的空属性移除,让它只包含不为空值的属性。可以先将对象转换成哈希表,然后从哈希表中移除为空的属性,再将哈希表中转换成对象。在这期间,你同样有机会对属性名进行排序。
下面给出一个例子,使用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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
