动态获取PSCustomObject属性和值

Mik*_*eel 8 powershell-3.0

我有以下内容:

$test = [pscustomobject]@{
    First = "Donald";
    Middle = "Fauntleroy";
    Last = "Duck";
    Age = 80
}
$test | Get-Member -MemberType NoteProperty | % {"$($_.Name)="}
Run Code Online (Sandbox Code Playgroud)

打印:

Age=
First=
Last=
Middle=
Run Code Online (Sandbox Code Playgroud)

我想从每个属性中提取值并将其包含为我的名称值对的值,因此它看起来像:

Age=80
First=Donald
Last=Duck
Middle=Fauntleroy
Run Code Online (Sandbox Code Playgroud)

我正在尝试构建一个字符串,并且不提前知道属性名称.如何提取值以完成我的名称值对?

Mik*_*eel 11

我能找到的唯一方法(到目前为止)是这样做的:

$test = [pscustomobject]@{
    First = "Donald";
    Middle = "Fauntleroy";
    Last = "Duck";
    Age = 80
}

$props = Get-Member -InputObject $test -MemberType NoteProperty

foreach($prop in $props) {
    $propValue = $test | Select-Object -ExpandProperty $prop.Name
    $prop.Name + "=" + $propValue
}
Run Code Online (Sandbox Code Playgroud)

关键是使用-ExpandProperty.

  • 值查找略有改进:`$ prop.Name +"="+ $ test.($ prop.Name)` (2认同)

sco*_*obi 7

更短,更PowerShell'ish选项:

$test | Get-Member -MemberType NoteProperty | % Name | %{
    $_ + '=' + $test.$_
}
Run Code Online (Sandbox Code Playgroud)