我有一个从设备寄存器收集信息的命令行开关:
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类型语句来确定枚举所有子属性的方法来填充值。
实现这一目标的最佳方式是什么?
答案 0 :(得分:3)
PowerShell中的每个对象都有一个隐藏的.PSObject
属性,可以告诉您有关该对象的信息。 其属性之一是.Properties
属性(正如PetSerAl指出的那样,它不是属性,实际上是MemberSet
,尽管您使用属性语义访问它)。
(Get-PSDevice ServerA).cluster.PSObject.Properties
这将返回[PSProperty]
个对象,这些对象向您显示有关属性的信息(名称,值,类型,是否可获取和可设置等)。