Powershell枚举属性

时间:2017-06-22 23:08:58

标签: powershell powershell-v3.0

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

  

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

     

HostName:ServerA
  OOB:
  关键性:正常
  IsVirtual:True

其中一些具有一系列子属性'在里面,例如:

  

群集:@ {Url = https://ps-apps.com/DeviceRegister/api/Clusters/62; VCenterUrl = https://ps-apps.com/DeviceRegister/api/VCenters/2;群ID = 62; VCenterId = 2;名称= Vcenter 1 ABC Prod;                                        DataCenterUrl = https://ps-apps.com/DeviceRegister/api/DataCenters/3;数据中心=; IsValidated = TRUE; IsExceptionCluster = FALSE; SupportsProdWorkloads = FALSE; SupportsNonProdWorkloads = FALSE; SupportsSqlWorkloads = FALSE;                                        ManagedByabc = FALSE}

我可以使用类似的东西获得我想要的任何财产:

(Get-PSDevice ServerA).cluster.name

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

实现这一目标的最佳方式是什么?

1 个答案:

答案 0 :(得分:3)

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

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

这将返回[PSProperty]个对象,这些对象向您显示有关属性的信息(名称,值,类型,是否可获取和可设置等)。