2016-05-07 16 views
3

Heres, was ich habe,Powershell Seite an Seite Objekte

Zwei Objekte:

$Global:Object1 = New-Object -TypeName PSObject 
$Global:Object1 | Add-Member -MemberType NoteProperty -Name Name1 -Value $Name1.Name1 
$Global:Object1 | Add-Member -MemberType NoteProperty -Name Name2 -Value $Name2.Name2 

$Global:Object2 = New-Object -TypeName PSObject 
$Global:Object2 | Add-Member -MemberType NoteProperty -Name Name3 -Value $Name3.Name3 
$Global:Object2 | Add-Member -MemberType NoteProperty -Name Name4 -Value $Name4.Name4 

Wenn ich jetzt präsentieren, dass der Benutzer, es wie untereinander angezeigt.

Ich möchte sie Seite haben einander präsentiert:

Object1:  Object2: 
Name1   Name3 
Name2   Name4 

ich eine weitere Aufgabe haben wird, aber im Moment nur 2. Kann mir jemand helfen, bitte?

Wenn die $variables keinen Sinn machen, ich ersetzen sie die Dinge einfach zu halten ..

+0

Bitte bearbeiten Sie Ihre Frage, um [mcve] zu erfüllen. 1. Was ist _wenn ich das dem Benutzer_ präsentiere? 2. Wenn Sie Ihren Code ausführen, werden Fehler wie bei 'Die Variable '$ Name1' ausgelöst, weil sie nicht gesetzt wurde '... – JosefZ

Antwort

3

ich etwas ähnlich, dass ich vergleiche zwei Objekte nebeneinander für eine einfache Referenz, verwende ich die folgende Funktion:

function Compare-ObjectsSideBySide ($lhs, $rhs) { 
    $lhsMembers = $lhs | Get-Member -MemberType NoteProperty, Property | Select-Object -ExpandProperty Name 
    $rhsMembers = $rhs | Get-Member -MemberType NoteProperty, Property | Select-Object -ExpandProperty Name 
    $combinedMembers = ($lhsMembers + $rhsMembers) | Sort-Object -Unique 


    $combinedMembers | ForEach-Object { 
    $properties = @{ 
     'Property' = $_; 
    } 

    if ($lhsMembers.Contains($_)) { 
     $properties['Left'] = $lhs | Select-Object -ExpandProperty $_; 
    } 

    if ($rhsMembers.Contains($_)) { 
     $properties['Right'] = $rhs | Select-Object -ExpandProperty $_; 
    } 

    New-Object PSObject -Property $properties 
    } 
} 

Sie können dies testen, mit dem folgenden, gekünstelt, Beispiel:

$object1 = New-Object PSObject -Property @{ 
    'Forename' = 'Richard'; 
    'Surname' = 'Slater'; 
    'Company' = 'Amido'; 
    'SelfEmployed' = $true; 
} 

$object2 = New-Object PSObject -Property @{ 
    'Forename' = 'Jane'; 
    'Surname' = 'Smith'; 
    'Company' = 'Google'; 
    'MaidenName' = 'Jones' 
} 

Compare-ObjectsSideBySide $object1 $object2 | Format-Table Property, Left, Right 

, die in Folge hat:

Es wäre nicht schwierig, die Anzahl der Objekte, die nebeneinander verglichen werden, zu erhöhen oder sogar so zu schreiben, dass die Funktion ein Array von Objekten akzeptiert, die nebeneinander gedruckt sind -Beistelltisch.

Verwandte Themen