mguenth83
Goto Top

Mehrere Variablenergebnisse in eine Custom Table verpacken

Hi,

ich habe einen Werte in einer Variable und möchte diese in einer Tabelle ordentlich anzeigen lassen, versuche schon als mit Expression aber ich bekomme es nicht hin.

Hier mal die Aussgabe von den Werten bzw. Variablen

$0
ENV:\Computername

$1
Updates installiert
KB8393424
JB3425245

$2
Updates fehlend
KB332423423

Jetzt möchte ich diese zwei Variablen in eine bzw in dem Format..


Computername Updates Installiert Updates fehlend
------------------------ ---------------------
TestComputer1 KB8393424 KB332423423
JB3425245

Wär cool wenn es jemand lösen könnte.


Gruß
Matze

Content-Key: 243566

Url: https://administrator.de/contentid/243566

Printed on: April 24, 2024 at 14:04 o'clock

Member: colinardo
Solution colinardo Jul 14, 2014 updated at 12:35:59 (UTC)
Goto Top
Hallo Matze,
kein Problem:
# Beispiel-Variablen -----
$0 = $env:COMPUTERNAME
$1 = new-object PSObject -Property  @{"Updates installiert"="KB1234","KB22222"}  
$2 = new-object PSObject -Property  @{"Updates fehlend"="KB99999","KB3333"}  
# ----------------

#Neues Objekt mit Eigenschaften erzeugen
$obj = new-object PSObject -Property @{"Computername"=$0;"Updates installiert"=$1.'Updates installiert';"Updates fehlend"=$2.'Updates fehlend'}  

# Ausgabe mit Festlegung der Reihenfolge der Spalten
$obj | select Computername,'Updates installiert','Updates fehlend'  
Grüße Uwe
Member: mguenth83
mguenth83 Jul 14, 2014 at 11:35:32 (UTC)
Goto Top
Hi Uwe,
super danke habe mal wieder was dazugelernt...
kleines Problem hab ich allerdings noch...die KB´s sollen nicht nebeneinander stehen sondern untereinander...ansonsten perfekt ^^

Gruß
Matze
Member: colinardo
Solution colinardo Jul 14, 2014 updated at 12:35:54 (UTC)
Goto Top
Zitat von @mguenth83:
kleines Problem hab ich allerdings noch...die KB´s sollen nicht nebeneinander stehen sondern untereinander...ansonsten
normal ! ist ja ein Array aus Strings .... dann musst du die Werte erst expandieren und mit format-table -Wrap ausgeben. Aber Achtung, nach der Umwandlung mit format-table sind es keine Objekte mehr sondern eben nur noch eine formatierte Tabelle für eine Ausgabe in eine Datei etc. !!
# Variablen -----
$0 = $env:COMPUTERNAME
$1 = new-object PSObject -Property  @{"Updates installiert"="KB1234","KB22222"} | select -ExpandProperty 'Updates installiert' | out-string  
$2 = new-object PSObject -Property  @{"Updates fehlend"="KB99999","KB3333"} | select -ExpandProperty 'Updates fehlend' | out-string  
# ----------------

$obj = new-object PSObject -Property @{"Computername"=$0;"Updates installiert"=$1;"Updates fehlend"=$2}  
$obj | select Computername,'Updates installiert','Updates fehlend' | ft -Wrap  

p.s. hier hatten wir schon mal was ähnliches im Bezug auf eine HTML-Ausgabe einer Tabelle: Powershell Export memberof jede Gruppe in neue Zeile schreiben
Member: mguenth83
mguenth83 Jul 14, 2014 at 12:44:58 (UTC)
Goto Top
Super hat soweit geklappt...irgendwas habe ich noch in der Formatierung drin was mir ein ft -Autosize nicht direkt umsetzt aber das ist egal...
Vielleicht für andere hab ich hier das Script

#Variablen#
$Hotfix_List = Import-Csv '\\TEST-f01\Win2008-Test.csv' | Sort-Object  
$Server_List = Get-Content '\TEST-f01\Liste_DCs-Win2008-Test.txt' | Sort-Object  
$CalenderWeek = Get-Date -UFormat %V
$CalenderDate = Get-Date -Format d

foreach ($Obj in $Server_List){

$ComputerName = "$Obj"  

#Remote Session aufbauen und Remoteanwendungen erstellen
$Session = New-PSSession -ComputerName $ComputerName
$Proxy = Import-PSSession -Session $Session -CommandName Get-HotFix -Prefix Remote
$Server_Hotfix_List = (Get-Remotehotfix).HotFixID | Sort-Object

#Objekte vergleichen und Ergebnisse liefern#
$Server_HotFix_OK = (Compare-Object -ReferenceObject $Server_Hotfix_List -DifferenceObject ($Hotfix_List.HotFixID) -IncludeEqual | where {$_.SideIndicator -like "=="}) | select -ExpandProperty InputObject | Out-String #| Format-Table $Format_OK  
$Server_HotFix_missed = (Compare-Object -ReferenceObject $Server_Hotfix_List -DifferenceObject ($Hotfix_List.HotFixID) -IncludeEqual | where {$_.SideIndicator -like "=>"}) | select -ExpandProperty InputObject | Out-String #| Format-Table $Format_missed  
$LOG_Path  = "\\Test-fs01\KB_Kontrolle_DCs_Result_KW$($CalenderWeek)_$CalenderDate.txt"  

#Neues Objekt mit Eigenschaften erzeugen"  
$object = new-object PSObject -Property @{"Computername"="$ComputerName";"Updates installiert"="$Server_HotFix_OK";"Updates fehlend"="$Server_HotFix_missed"}  

# Ausgabe mit Festlegung der Reihenfolge der Spalten
$Final = $object | select Computername,'Updates installiert','Updates fehlend' | ft -Wrap | Out-String  

#Ergebnisse in eine TXT schreiben#
Add-Content -Path $LOG_Path -Value $Final

Remove-PSSession -ComputerName $ComputerName
}