PowerShell 技能连载 - 将对象转换为哈希表

在之前的一个技能中我们介绍了如何用 Get-Member 获取对象的属性。以下是另一个可以传入任何对象,将它转为一个包含排序属性的哈希表,然后排除所有空白属性的用例。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# take an object...
$process = Get-Process -id $pid

# ...and turn it into a hash table
$hashtable = $process | ForEach-Object {

$object = $_

# determine the property names in this object and create a
# sorted list
$columns = $_ |
Get-Member -MemberType *Property |
Select-Object -ExpandProperty Name |
Sort-Object

# create an empty hash table
$hashtable = @{}

# take all properties, and add keys to the hash table for each property
$columns | ForEach-Object {
# exclude empty properties
if (![String]::IsNullOrEmpty($object.$_))
{
# add a key (property) to the hash table with the
# property value
$hashtable.$_ = $object.$_
}
}
$hashtable
}


$hashtable | Out-GridView

PowerShell 技能连载 - 将对象转换为哈希表

http://blog.vichamp.com/2018/11/05/turning-objects-into-hash-tables/

作者

吴波

发布于

2018-11-05

更新于

2022-07-06

许可协议

评论