【问题标题】:Powershell enumerate properties of propertiesPowershell枚举属性的属性
【发布时间】:2017-06-24 02:23:12
【问题描述】:

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

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

主机名:服务器 A
OOB:
严重性:正常
IsVirtual: 真

其中一些内部有一个“子属性”数组,例如:

集群:@{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 产品; DataCenterUrl=https://ps-apps.com/DeviceRegister/api/DataCenters/3;数据中心=; IsValidated=真; IsExceptionCluster=False; SupportsProdWorkloads=False; SupportsNonProdWorkloads=False;支持SqlWorkloads=False; ManagedByabc=False}

我可以使用类似的方法在数组中获取我想要的任何属性:

(Get-PSDevice ServerA).cluster.name

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

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

【问题讨论】:

    标签: powershell powershell-3.0


    【解决方案1】:

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

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

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

    【讨论】:

    • 只是为了迂腐,.PSObject 不是财产,而是成员集:(''|gm -Force PSObject).MemberType
    • @PetSerAl fair 'nough :)
    猜你喜欢
    • 2012-03-14
    • 2018-02-04
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-16
    • 1970-01-01
    • 2017-03-05
    相关资源
    最近更新 更多