Vraag Doorloop elke NoteProperty in een aangepast object


Ik maak een PSObject in Powershell zoals dit:

$NetworkInfo = New-Object PSObject
$NetworkInfo | Add-Member -type NoteProperty -Name IPAddress -Value "10.10.8.11"
$NetworkInfo | Add-Member -type NoteProperty -Name SubnetMask -Value "255.255.255.0"
$NetworkInfo | Add-Member -type NoteProperty -Name Gateway -Value "10.10.8.254"
$NetworkInfo | Add-Member -type NoteProperty -Name Network -Value "10.10.8.0"
$NetworkInfo | Add-Member -type NoteProperty -Name DNS1 -Value "10.10.10.200"
$NetworkInfo | Add-Member -type NoteProperty -Name DNS2 -Value "10.10.10.201"

$NetworkInfo

Ik wil een specifieke actie uitvoeren voor elke NoteProperty in dit PSObject, maar ik weet niet zeker hoe ik dat moet doen. Bijvoorbeeld (hoewel ik weet dat het de verkeerde manier is om het te doen) deze code:

  ForEach ($noteProperty in $NetworkInfo) {
    Write-Host $noteProperty
  }

Geeft het volledige object alleen weer als een array:

@{IPAddress=10.10.8.11; SubnetMask=255.255.255.0; Gateway=10.10.8.254; Network=10.10.8.0; DNS1=10.10.10.200; DNS2=10.10.10.201}

EDIT: Elke NoteProperty is van het variabele type System.String - als dat relevant is.

Maak ik het object verkeerd, of begrijp ik gewoon niet hoe ik door het object moet gaan? Alle hulp op prijs gesteld! :)


12
2017-12-24 21:05


oorsprong


antwoorden:


U kunt Get-Member gebruiken zoals vermeld door Mike; een alternatief dat de volgorde bewaart, is om de PSObject-eigenschap te gebruiken die aanwezig is op alle objecten:

#View details for all properties on a specific object
$NetworkInfo.PSObject.Properties

#similar code to Mike's, working with name and value:
$NetworkInfo.PSObject.Properties | foreach-object {
    $name = $_.Name 
    $value = $_.value
    "$name = $value"
}

34
2017-12-25 03:27



Dit zou je moeten krijgen wat je nodig hebt:

$NetworkInfo | get-member -type NoteProperty | foreach-object {
  $name=$_.Name ; 
  $value=$NetworkInfo."$($_.Name)"
  write-host "$name = $value"
}

12
2017-12-24 21:32



Proberen:

ForEach ($noteProperty in $NetworkInfo.PSObject.Properties)
{
   Write-Host $noteProperty.Name
   Write-Host $noteProperty.Value
}

0
2017-08-08 13:47