none
2 Variablen miteinander vergleichen und zusammenfügen klappt nicht RRS feed

  • Frage

  • Hallo

    Ich komme irgendwie nicht auf die Lösung und hoffe auf eure Hilfe.

    Ich habe also 2 Variablen(Tabellen) ermittelt die ich nun zusammenfügen möchte.

    1.) $Var(Tabelle) beinhaltet 2 Spalten $Var.SystemName und $Var.Serial

    2.) $Var1(Tabelle2) beinhaltet  $Var1.SystemName,$Var.DeviceID.....usw.

    Als Vergleichswert wird also SystemName genutzt. Dieser Wert kommt aber durchaus mehrfach vor. Das ist aber kein Thema, weil das ist in beiden Tabellen gleich.

    Nur wenn ich beide zusammenfüge passiert beim nachfolgenden Code eben das Phänomen, dass das Feld Serial mehrfach beschrieben wird, wenn SystemName auch mehrfach vorkommt. Also ist SystemName 3 x vorhanden, steht am Ende in allen 3 Spalten die Serial 3 x hintereinander drin. = insgesamt also 3x3 mal sie Serial. Ich hoffe ihr sehr den Fehler oder habt eine bessere Idee wie ich das verhindern/abstellen kann.

    $HPSerial|out-Host
    
    <#####Anzeige sieht wie folgt aus
    SystemName    Seriennummer  
    ----------    ------------  
    PC1           TH672180YW0689
    PC1           TH672180YW0689
    PC1           TH672180YW0689
    PC2           00CNHW56YG8D  
    PC2           00CNHW56YG8D  
    PC2           00CNHW56YG8D
    usw...
    #>
    
    $HPPC|out-Host
    <#####Anzeige sieht wie folgt aus
    SystemName    Manufacturer    DeviceID                                                           Description                                
    ----------    ------------    --------                                                           -----------                                
    PC1           HP              USBPRINT\HPOFFICEJET_200_MOBILE_SERIES\7&1B190049&0&USB001         HP OfficeJet 200 Mobile Series             
    PC1           Hewlett-Packard USB\VID_03F0&PID_E711&MI_02\6&839DAF2&0&0002                       HP OfficeJet 200 Mobile Series(REST_WinUSB)
    PC1           Hewlett-Packard USB\VID_03F0&PID_E711&MI_03\6&839DAF2&0&0003                       HP OfficeJet 200 Mobile Series(REST)       
    PC2           HP              USB\VID_03F0&PID_1D17\00CNHW56YG8D                                 HP LaserJet 1320 series (DOT4USB)          
    PC2           HP              DOT4\VID_03F0&PID_1D17&REV_0100&PRINT\6&F9BD35&0&0                 HP LaserJet 1320 series (DOT4PRT)          
    PC2           HP              DOT4PRT\VID_03F0&PID_1D17&REV_0100\7&359E0D2&0&1                   hp LaserJet 1320 PCL 6            
    usw...
    #> 
    #ich habe probiert die Daten auf diesem Weg zusammenzufassen
    $HPSerial
    $HPPC|ForEach-Object{
     $sn = $_.SystemName
     $di = $_.DeviceID
     $de = $_.Description
     $ma = $_.Manufacturer
     $_|Add-Member -MemberType NoteProperty -Name "Seriennummer" -Value "$(($HPSerial|Where-Object {$_.SystemName -eq $sn}).Seriennummer)"
     $_
     }
     $HPPC|Out-GridView
    
    <#Ergebnis sieht dann wie folgt aus
    SystemName   : PC1
    Manufacturer : HP
    DeviceID     : USBPRINT\HPOFFICEJET_200_MOBILE_SERIES\7&1B190049&0&USB001
    Description  : HP OfficeJet 200 Mobile Series
    Seriennummer : TH672180YW0689 TH672180YW0689 TH672180YW0689
    
    SystemName   : PC1
    Manufacturer : Hewlett-Packard
    DeviceID     : USB\VID_03F0&PID_E711&MI_02\6&839DAF2&0&0002
    Description  : HP OfficeJet 200 Mobile Series(REST_WinUSB)
    Seriennummer : TH672180YW0689 TH672180YW0689 TH672180YW0689
    
    SystemName   : PC1
    Manufacturer : Hewlett-Packard
    DeviceID     : USB\VID_03F0&PID_E711&MI_03\6&839DAF2&0&0003
    Description  : HP OfficeJet 200 Mobile Series(REST)
    Seriennummer : TH672180YW0689 TH672180YW0689 TH672180YW0689
    
    usw...
    #>
    


    ich hoffe auf eure Hilfe.

    Vielen Dank PI

     


    • Bearbeitet Pikus1977 Donnerstag, 19. April 2018 07:24 korrektur
    Donnerstag, 19. April 2018 07:22

Antworten

  • Moin,

    dann mach aus HPSerial einen Auszug, wo jedes Device Nur einmal vorkommt. Sort-Object -Unique könnte schon helfen, oder das ganze in eine Hashtable ziehen...


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.

    • Als Antwort markiert Pikus1977 Donnerstag, 19. April 2018 08:40
    Donnerstag, 19. April 2018 08:19
  • ja ich habs auch gerade selber herausgefunden wie es geht.

    und zwar:

    $HPPC|ForEach-Object{
     $sn = $_.SystemName
     $di = $_.DeviceID
     $de = $_.Description
     $ma = $_.Manufacturer
     $_|Add-Member -MemberType NoteProperty -Name "Seriennummer" -Value "$(($HPSerial|Where-Object {$_.SystemName -eq $sn}).Seriennummer|Select-Object $_.Serial -Unique)"
     $_
     }
    
    #ich musste nur die Serial auf unique setzen.
    <#
    $_|Add-Member -MemberType NoteProperty -Name "Seriennummer" -Value "$(($HPSerial|Where-Object {$_.SystemName -eq $sn}).Seriennummer|Select-Object $_.Serial -Unique)"
    #>
    # 

    • Als Antwort markiert Pikus1977 Donnerstag, 19. April 2018 08:40
    Donnerstag, 19. April 2018 08:39

Alle Antworten

  • Moin,

    magst Du mal beschreiben, wie Du das Ergebnis haben willst?  Wie HPPC, nur mit der Serial-Spalte dazu?


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.

    Donnerstag, 19. April 2018 07:46
  • Hallo Evgenij....

    Ja genau.

    Im Ergebnis soll $HPPC die Spalte Serial dazubekommen.

    Ergebnis sollte also sein.

    $HPPC.SystemName,$HPPC.Manufacturer,$HPPC.Description,$HPPC.Seriennummer

    Ausgabe müsste sein:

    <#
    SystemName    Manufacturer    DeviceID                                                           Description                                 Seriennummer                                
    ----------    ------------    --------                                                           -----------                                 ------------                                
    PC1           HP              USBPRINT\HPOFFICEJET_200_MOBILE_SERIES\7&1B190049&0&USB001         HP OfficeJet 200 Mobile Series              TH672180YW0689
    PC1           Hewlett-Packard USB\VID_03F0&PID_E711&MI_02\6&839DAF2&0&0002                       HP OfficeJet 200 Mobile Series(REST_WinUSB) TH672180YW0689
    PC1           Hewlett-Packard USB\VID_03F0&PID_E711&MI_03\6&839DAF2&0&0003                       HP OfficeJet 200 Mobile Series(REST)        TH672180YW0689
    #>
    Gruß Pi

    Donnerstag, 19. April 2018 08:04
  • Moin,

    dann mach aus HPSerial einen Auszug, wo jedes Device Nur einmal vorkommt. Sort-Object -Unique könnte schon helfen, oder das ganze in eine Hashtable ziehen...


    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.

    • Als Antwort markiert Pikus1977 Donnerstag, 19. April 2018 08:40
    Donnerstag, 19. April 2018 08:19
  • ja ich habs auch gerade selber herausgefunden wie es geht.

    und zwar:

    $HPPC|ForEach-Object{
     $sn = $_.SystemName
     $di = $_.DeviceID
     $de = $_.Description
     $ma = $_.Manufacturer
     $_|Add-Member -MemberType NoteProperty -Name "Seriennummer" -Value "$(($HPSerial|Where-Object {$_.SystemName -eq $sn}).Seriennummer|Select-Object $_.Serial -Unique)"
     $_
     }
    
    #ich musste nur die Serial auf unique setzen.
    <#
    $_|Add-Member -MemberType NoteProperty -Name "Seriennummer" -Value "$(($HPSerial|Where-Object {$_.SystemName -eq $sn}).Seriennummer|Select-Object $_.Serial -Unique)"
    #>
    # 

    • Als Antwort markiert Pikus1977 Donnerstag, 19. April 2018 08:40
    Donnerstag, 19. April 2018 08:39