Powershell:如何在大括号内显示所有事物/对象?

Powershell: How to display all things / objects inside curly brackets?

我想get/select大括号内的所有项目。我试过 select 只有 属性 而不是 select evything 但它没有给出想要的结果。

Cmdlet

Get-ADUser -filter * -SearchBase "OU=test2OU,DC=corp-auryn,DC=serverlabs,DC=be" |select Propertynames |select *

Mathias R. Jessen给出了要害指针:

为了让 Select-Object 从其输入对象中仅提取 属性 必须将 属性 的名称传递给 -ExpandProperty 参数

  • 默认情况下,使用(位置隐含的)-Property 参数,即使您只传递 one 属性 名称,属性的值被复制到输出对象中同名 的 属性,正如您的输出所证明的那样:具有单个 [=83 的 [pscustomobject] 实例=], Propertynames, 已发出。

此外,如果 属性 值恰好是 数组,它们的元素是 枚举的 .

  • 此枚举不会发生在-Property

请注意,这意味着当数组值 属性 的名称传递给 -ExpandProperty 并且有 多个 个输入对象时,一个 flat 值数组被返回,它是单个 属性-值数组[1] 的串联,因此输入-对象边界丢失:

一个简单的例子:

[pscustomobject] @{ foo = 1, 2 }, [pscustomobject] @{ foo = 3, 4 } |
  Select-Object -ExpandProperty foo

以上输出平面数组1, 2, 3, 4.


请注意 member-access enumeration 的行为方式相同 - 除了它需要首先将输入集合完整收集到内存中:

# Except for not *streaming* the input objects, the result
# is the same as above:
([pscustomobject] @{ foo = 1, 2 }, [pscustomobject] @{ foo = 3, 4 }).foo

[1] 因为 属性 的元素包含 集合 - 从技术上讲可能不是 array - enumerated 得到结果,你总是会得到类型为 [object[]].[= 的常规 PowerShell 数组24=]