Powershell Ausgabe formatieren
Guten Morgen zusammen,
ich lesen aus einer Active Directory via Powershell User aus einer Gruppe aus und speicher diese in eine .txt Datei.
Dafür nutze ich unter Anderem folgenden Code:
Nun soll die Textdatei zum Teil mit konstanten Inhalt gefüllt werden wie z.B.
2014-12-22 00:00:01 10 10.1.1.1 200 TCP_HIT 1 1 GET http www.test.de/ 80 /styles/1.png (konstanter Teil) User aus dem AD (dynamischer Teil)
Wie formatiere ich das in Powershell? Bzw. wie bekomme ich die Ausgabe so hin?
Viele Grüße
ich lesen aus einer Active Directory via Powershell User aus einer Gruppe aus und speicher diese in eine .txt Datei.
Dafür nutze ich unter Anderem folgenden Code:
$Output_File = "\\pfad"
$all = @()
$all += Get-ADGroupMember -Recursive $AD_Group -Server $Server -Credential $cred
$all += Get-ADGroupMember $AD_Group -Server $Server -Credential $cred | ?{$_.objectClass -eq "group"} | Get-ADGroupMember -Recursive
$all = $all | select -Unique
$all = $all | ft name
$all = $all | Out-File "$Output_File"
$all
Nun soll die Textdatei zum Teil mit konstanten Inhalt gefüllt werden wie z.B.
2014-12-22 00:00:01 10 10.1.1.1 200 TCP_HIT 1 1 GET http www.test.de/ 80 /styles/1.png (konstanter Teil) User aus dem AD (dynamischer Teil)
Wie formatiere ich das in Powershell? Bzw. wie bekomme ich die Ausgabe so hin?
Viele Grüße
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 259073
Url: https://administrator.de/contentid/259073
Ausgedruckt am: 22.11.2024 um 17:11 Uhr
16 Kommentare
Neuester Kommentar
Unabhängig von meiner Nachfrage mein Vorschlag:
Wenn $all dein dynmaischer Teil ist, dann kannst du auch die entsprechende Variable nehmen.
würde auch gehen
$fester_teil="2014-12-22 00:00:01 10 10.1.1.1 200 TCP_HIT 1 1 GET http www.test.de/ 80 /styles/1.png "
$Dynamischer_teil=$all
$fester_Teil + $dynamischer_teil | out-file $Output_File -append
Wenn $all dein dynmaischer Teil ist, dann kannst du auch die entsprechende Variable nehmen.
"2014-12-22 00:00:01 10 10.1.1.1 200 TCP_HIT 1 1 GET http www.test.de/ 80 /styles/1.png " + $all | out-file $Output_File -append
Hallo Sebastian,
z.B. so
Grüße Uwe
z.B. so
$Output_File = "\\pfad"
$all = @()
$all += Get-ADGroupMember -Recursive $AD_Group -Server $Server -Credential $cred
$all += Get-ADGroupMember $AD_Group -Server $Server -Credential $cred | ?{$_.objectClass -eq "group"} | Get-ADGroupMember -Recursive
$all | select -Unique | select Name, @{n='Konstante';e={'2014-12-22 00:00:01 10 10.1.1.1 200 TCP_HIT 1 1 GET http www.test.de/ 80 /styles/1.png'}} | ft Konstante,Name -AutoSize | out-string -width 10000 | Out-File $Output_File
oh sorry hatte ich auf die schnelle vergessen, ist oben korrigert
zur Info: wenn du die Tabellenüberschriften nicht brauchst, hilft der Parameter -HideTableHeaders bei ft
zur Info: wenn du die Tabellenüberschriften nicht brauchst, hilft der Parameter -HideTableHeaders bei ft
Das was ich oben gemacht habe nennt sich Calculated Property
D.h. damit fügst du einem Object in der Pipeline eine weitere "richtige" Spalte hinzu. Der Wert dieser Spalte kann natürlich nicht nur konstante Strings enthalten (das e={} bedeutet Expression) sondern eben auch normale Powershell-Befehle, alles was dort ausgegeben wird wird später der Wert der Spalte für jede Zeile, d.h. diese lässt sich auch dynamisch je nach User gestallten.
Von diesen Calculated Properties kannst du auch mehrere hinzufügen, einfach mit Komma voneinander trennen
Die Reihenfolge der Spalten kannst du dann mit ft festlegen. Den Spaltennamen kannst du schon in der Calculated Property festlegen (n="Konstante")
Für dein Beispiel:
Grüße Uwe
D.h. damit fügst du einem Object in der Pipeline eine weitere "richtige" Spalte hinzu. Der Wert dieser Spalte kann natürlich nicht nur konstante Strings enthalten (das e={} bedeutet Expression) sondern eben auch normale Powershell-Befehle, alles was dort ausgegeben wird wird später der Wert der Spalte für jede Zeile, d.h. diese lässt sich auch dynamisch je nach User gestallten.
Von diesen Calculated Properties kannst du auch mehrere hinzufügen, einfach mit Komma voneinander trennen
Die Reihenfolge der Spalten kannst du dann mit ft festlegen. Den Spaltennamen kannst du schon in der Calculated Property festlegen (n="Konstante")
Für dein Beispiel:
$all | select -Unique | select Name, @{n='Konstante';e={"$((get-date (get-date).AddDays(-15) -Format "yyyy-MM-dd HH:mm:ss")) 10 10.1.1.1 200 TCP_HIT 1 1 GET http www.test.de/ 80 /styles/1.png"}}, @{n='Konstante2';e={"Irgendwas anderes"}} | ft Konstante,Name, Konstante2 -AutoSize | out-string -width 10000 | Out-File $Output_File
Du sprichst in Rätseln was für einen Attribut-Editor ? na egal ...
Mit name klappt das, allerdings nicht mit cn oder anderen Attributen...
Oder schaue ich da falsch? Ich möchte jetzt zb nach name, cn, givenName filtern....
Mit Select wählst du die Spalten bzw. Eigenschaften aus welche du erst mal grob haben möchtest. Filtern kannst du indem du einfach noch ein Where-Object vorschaltestOder schaue ich da falsch? Ich möchte jetzt zb nach name, cn, givenName filtern....
$all | select -Unique | ?{$_.givenName -like '*Meier*'} | select Name,..........
Des Weiteren wie kann ich einen Header einbauen. Variable in dem Try catchblock anhängen, dann würde der header ja so oft ausgegeben, soviele Nutzer es gibt..
Du sprichst wieder in Rätseln...poste doch einfach mal die gewünschte Ausgabe, damit die Rätselstunde hier endlich ein Ende hat!
bitte in Codetags, so ist das nutzlos... !!
versucht da etwa einer ein Webserver-Log zu fälschen ?? Dann bin ich hier nämlich raus ...
versucht da etwa einer ein Webserver-Log zu fälschen ?? Dann bin ich hier nämlich raus ...
So letzte Wohltat für heute ...
Viel Erfolg noch... der Thread ist ja ansonsten abgehandelt.
Grüße Uwe
Ansonsten siehe:
Powershell Grundlagen- und Praxisvermittlung:
$Output_File = "\\pfad"
$all = @()
$text = @()
$all += Get-ADGroupMember -Recursive $AD_Group -Server $Server -Credential $cred
$all += Get-ADGroupMember $AD_Group -Server $Server -Credential $cred | ?{$_.objectClass -eq "group"} | Get-ADGroupMember -Recursive
$text += "Herzlich Willkommen`r`n"
$all | select -Unique | %{$text += ((get-date (get-date).AddDays(-15) -Format "yyyy-MM-dd HH:mm:ss") + " " + $_.SamAccountName + ' test\test test\CN=Internet-TEST hat sich zu dem Zeitpunkt: ' + (get-aduser $_.SamAccountName -Properties LastLogonDate).LastLogonDate + ' angemeldet')}
$text | Out-File $Output_File
Grüße Uwe
Ansonsten siehe:
Powershell Grundlagen- und Praxisvermittlung: