当前位置: 首页 > 知识库问答 >
问题:

在PowerShell中迭代PSObject属性

艾凯捷
2023-03-14

我有一个PSObject(来自XML):

bool : {IsActive, ShowOnB2C, ShowOnB2B, IsWebNews}
str  : {id, ProductId, GroupName, Unit...}
int  : {ProductIdNumeric, Prices_SalesOne, Prices_Treater, Prices_B2C...}
arr  : {EnvironmentBrands, Catalogs, NavisionLevels}
long : long

我想在不使用属性名称的情况下迭代属性,例如bool

我已尝试按如下方式索引到对象:

$document[0]

但这并没有给我什么,但它也不会导致任何错误。

###############################################################################################################

$documents | Select-Object bool,str

不迭代属性。

$documents | ForEach {
    $_.name
}

返回doc,这是包含bool、int和字符串的标记(XML)的名称。

共有3个答案

卫逸春
2023-03-14

就像stej提到的,有一个带有-MemberType参数的Get-成员cmdlet,您可以使用:

$documents | Get-Member -MemberType Property | ForEach-Object {
    $_.Name
}
步建茗
2023-03-14

我更喜欢使用foreach循环访问PowerShell对象:

foreach($object_properties in $obj.PsObject.Properties)
{
    # Access the name of the property
    $object_properties.Name

    # Access the value of the property
    $object_properties.Value
}

通常,foreach的性能高于foreach对象

是的,foreach实际上不同于引擎盖下的foreach对象。

葛鸿熙
2023-03-14

这可以使用隐藏属性PSObject

$documents.PSObject.Properties | ForEach-Object {
    $_.Name
    $_.Value
}

这不适用于某些PowerShell创建的对象(PSObjects),这些对象包含“NoteProperties”(类型为NoteProperty)的属性)。

有关覆盖所有属性类型的方法,请参见此答案。

 类似资料:
  • 问题内容: 我的问题很简单,我有一个以下JSON Typescript对象,并且我想迭代遍历JSON属性 使用的代码是以下有角TypeScript组件: 我真正需要的是遍历JSON的键值属性,并在我的HTML中显示它们。 非常感谢! 问题答案: 如果您使用的是Angular 6.1,请使用键值管道 对于Angular 5 示例:https://stackblitz.com/edit/keyvalu

  • null 一些示例输出数据: *编辑:工作的scala代码行:

  • 问题内容: 您能想到一种很好的方法(也许使用itertools)将迭代器拆分为给定大小的块吗? 因此,with成为迭代器 我可以想到一个小程序来做到这一点,但是使用itertools并不是一个好方法。 问题答案: 在 从配方文件的食谱来靠近你想要什么: 但是,它将使用填充值填充最后一个块。 较不通用的解决方案仅适用于序列,但可以根据需要处理最后一个块 最后,一种可在一般迭代器上运行且其行为符合预期

  • 本文向大家介绍在Java中迭代ArrayList,包括了在Java中迭代ArrayList的使用技巧和注意事项,需要的朋友参考一下 Java中的Iterator用于遍历集合中的每个元素。使用它遍历,获取每个元素,或者甚至可以从ArrList中删除元素。要使用迭代器遍历集合的内容,请首先通过调用集合的iterator()方法来获得一个迭代器,使其到达集合的开头。在那之后,建立一个循环来调用hasNe

  • 我的javafx应用程序中有一个带有ImageViews的HBox,现在我需要一些方法来迭代这个HBox,但是我找不到一个算法来实现它,我试着做了这样的事情: 这里堆栈是我的HBox,但这样的ImageViews会重复,我不想要的。我不知道为什么,所以我该怎么做…