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-ID: 243566

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

Ausgedruckt am: 17.11.2024 um 03:11 Uhr

colinardo
Lösung colinardo 14.07.2014 aktualisiert um 14:35:59 Uhr
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
mguenth83
mguenth83 14.07.2014 um 13:35:32 Uhr
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
colinardo
Lösung colinardo 14.07.2014 aktualisiert um 14:35:54 Uhr
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
mguenth83
mguenth83 14.07.2014 um 14:44:58 Uhr
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
}