Dynamically get PSCustomObject property and values

前端 未结 5 1950
走了就别回头了
走了就别回头了 2020-12-31 13:48

I have the following:

$test = [pscustomobject]@{
    First = \"Donald\";
    Middle = \"Fauntleroy\";
    La         


        
相关标签:
5条回答
  • 2020-12-31 14:09

    Shorter, more PowerShell'ish option:

    $test | Get-Member -MemberType NoteProperty | % Name | %{
        $_ + '=' + $test.$_
    }
    
    0 讨论(0)
  • 2020-12-31 14:14

    I use:

    $MyObjectProperties = Get-Member -InputObject $MyObject -MemberType NoteProperty
    
    $MyObjectProperties | % {
        $PropertyName = $_.Name
        $PropertyValue = $MyObject."$PropertyName"
        # ...
    }
    
    0 讨论(0)
  • 2020-12-31 14:17

    My variant:

    $memberNames = ($test | Get-Member -Type NoteProperty).Name
    foreach ($mname in $memberNames) {
        "{0}={1}" -f $mname,$Test."$mname"
    }
    
    0 讨论(0)
  • 2020-12-31 14:20

    Not sure if it is really better, but here's one more variant:

    $test.psobject.Members | ? {$_.Membertype -eq "noteproperty"} | 
        %{ $_.Name + '='+  $_.Value }
    
    0 讨论(0)
  • 2020-12-31 14:36

    The only way I could find (so far) is to do something like:

    $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
    }
    

    The key is using -ExpandProperty.

    0 讨论(0)
提交回复
热议问题