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]
对象显示有关属性的信息(名称、值、类型、是否可获取和设置等)。
我有一个从设备寄存器收集信息的命令行开关:
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]
对象显示有关属性的信息(名称、值、类型、是否可获取和设置等)。