Powershell 枚举属性的属性

Powershell enumerate properties of properties

我有一个从设备寄存器收集信息的命令行开关:

PS C:\windows\system32> Get-PSDevice serverA

HostName: ServerA
OOB:
Criticality: Normal
IsVirtual: True

其中有些里面有一个'sub properties'的数组,例如:

Cluster : @{Url=https://ps-apps.com/DeviceRegister/api/Clusters/62; VCenterUrl=https://ps-apps.com/DeviceRegister/api/VCenters/2; ClusterId=62; VCenterId=2; Name=Vcenter 1 ABC Prod; DataCenterUrl=https://ps-apps.com/DeviceRegister/api/DataCenters/3; DataCenter=; IsValidated=True; IsExceptionCluster=False; SupportsProdWorkloads=False; SupportsNonProdWorkloads=False; SupportsSqlWorkloads=False; ManagedByabc=False}

我可以在阵列中得到任何我想要的东西 属性 使用像这样的东西:

(Get-PSDevice ServerA).cluster.name

我正在尝试确定一种使用 foreach 类型语句来填充值来枚举所有子属性的方法。

实现此目标的最佳方法是什么?

PowerShell 中的每个对象都有一个隐藏的 .PSObject 属性,它告诉您有关该对象的信息。 它的 属性之一是 .Properties 属性(正如 PetSerAl 指出的那样,它不是 属性,实际上是 MemberSet,尽管您使用 属性 语义访问它。

(Get-PSDevice ServerA).cluster.PSObject.Properties

这将 return [PSProperty] 对象显示有关属性的信息(名称、值、类型、是否可获取和设置等)。