Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Powershell Ausgabe formatieren

Frage Microsoft Windows Server

Mitglied: makaroni

makaroni (Level 1) - Jetzt verbinden

07.01.2015, aktualisiert 13:06 Uhr, 2309 Aufrufe, 16 Kommentare, 2 Danke

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:

01.
$Output_File = "\\pfad" 
02.
$all = @()  
03.
$all += Get-ADGroupMember -Recursive $AD_Group -Server $Server -Credential $cred 
04.
$all += Get-ADGroupMember $AD_Group -Server $Server -Credential $cred | ?{$_.objectClass -eq "group"} | Get-ADGroupMember -Recursive  
05.
$all = $all | select -Unique  
06.
$all = $all | ft name 
07.
$all = $all | Out-File "$Output_File"  
08.
$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
Mitglied: Doskias
07.01.2015 um 09:50 Uhr
Hallo Sebastian,

verstehe ich dich richtig, dass du als Konstante ein bestimmtes Datum & Uhrzei verwenden möchtest?

Gruß
Doskias
Bitte warten ..
Mitglied: makaroni
07.01.2015 um 09:58 Uhr
Hey Doskias,

nein nicht ganz, vor jedem User soll einfach der konstante Teil stehen
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)


Also dieser Teil wäre in JEDER Zeile identisch, danach würden dann einfach die User kommen mit z.B. Domäne/User...

Grüße
Bitte warten ..
Mitglied: Doskias
07.01.2015, aktualisiert um 10:02 Uhr
Unabhängig von meiner Nachfrage mein Vorschlag:
01.
$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 " 
02.
$Dynamischer_teil=$all 
03.
 
04.
$fester_Teil + $dynamischer_teil | out-file $Output_File -append
Wenn $all dein dynmaischer Teil ist, dann kannst du auch die entsprechende Variable nehmen.
01.
"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
würde auch gehen
Bitte warten ..
Mitglied: colinardo
LÖSUNG 07.01.2015, aktualisiert um 10:28 Uhr
Hallo Sebastian,
z.B. so
01.
$Output_File = "\\pfad" 
02.
$all = @()  
03.
$all += Get-ADGroupMember -Recursive $AD_Group -Server $Server -Credential $cred 
04.
$all += Get-ADGroupMember $AD_Group -Server $Server -Credential $cred | ?{$_.objectClass -eq "group"} | Get-ADGroupMember -Recursive  
05.
$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
Grüße Uwe
Bitte warten ..
Mitglied: makaroni
07.01.2015 um 10:17 Uhr
Ganz komisch, die Lösung hatte ich auch schon getestet allerdigns kommt dann immer

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 Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands.Internal.Format.GroupStartData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData

...

Also er setzt für jeden User Microsoft.PowerShell.Commands.Internal.Format.FormatStartData und nicht den User...

01.
Try { 
02.
$all = @()  
03.
$all += Get-ADGroupMember -Recursive $AD_Group -Server $Server -Credential $cred 
04.
$all += Get-ADGroupMember $AD_Group -Server $Server -Credential $cred | ?{$_.objectClass -eq "group"} | Get-ADGroupMember -Recursive  
05.
$all = $all | select -Unique  
06.
$all = $all | ft name 
07.
$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 "  
08.
$Dynamischer_teil=$all  
09.
$fester_Teil + $dynamischer_teil | out-file $Output_File -append  
10.
11.
Catch [system.exception] { 
12.
 
13.
	$Server, $AD_Group, $AD_User, $Output_File | out-file -filepath "\\pfad" -Append 
14.
 
15.
16.
	
Bitte warten ..
Mitglied: makaroni
07.01.2015 um 10:20 Uhr
Danke Uwe
Bitte warten ..
Mitglied: makaroni
07.01.2015 um 10:22 Uhr
Hey Uwe,

in der Textdatei schneidet der allerdings nach der 200 ab


2014-12-22 00:00:01 10 10.1.1.1 200 ...

Grüße
Bitte warten ..
Mitglied: colinardo
07.01.2015, aktualisiert um 10:32 Uhr
Zitat von makaroni:
in der Textdatei schneidet der allerdings nach der 200 ab
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
Bitte warten ..
Mitglied: makaroni
07.01.2015 um 10:53 Uhr
Danke, gut zu wissen. Aber ich benötige noch einmal deine Hilfe. Eigentlich dachte ich, dass ich es dank dem Beispiel nun alleine hinbekommen würde aber naja ;)

Und zwar folgendes, vorne das Datum soll das aktuelle get-date Minus 15 Tage sein. nach dem dynamischen Text, soll ein weiterer Konstanter Text hinzugefügt werden. Und zu guter Letzt, oben im Header soll ein Text stehen. Ich hoffe ich habe es erklären können was ich vorhabe?

Du hast oben mit einem Label gearbeitet oder? Wie füge ich denn in einem Label eine Variable ein? Wie erstelle ich ein zweites Label etc.

Grüße
Bitte warten ..
Mitglied: colinardo
LÖSUNG 07.01.2015, aktualisiert um 11:32 Uhr
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:
01.
$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
Grüße Uwe
Bitte warten ..
Mitglied: makaroni
07.01.2015, aktualisiert um 12:45 Uhr
Alles klar, das habe ich verstanden.

Mit Select wähle ich ja die unter Attribute Editor verwendeten Attribute aus. 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....

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..

Grüße S
Bitte warten ..
Mitglied: colinardo
07.01.2015, aktualisiert um 12:08 Uhr
Zitat von makaroni:
Mit Select wähle ich ja die unter Attribute Editor verwendeten Attribute aus.
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 vorschaltest
01.
$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 warten ..
Mitglied: makaroni
07.01.2015, aktualisiert um 16:25 Uhr
Sorry dafür.

So soll die Ausgabe aussehen....


..
Bitte warten ..
Mitglied: colinardo
07.01.2015, aktualisiert um 12:17 Uhr
Zitat von makaroni:
So soll die Ausgabe aussehen....
bitte in Codetags, so ist das nutzlos... !!

versucht da etwa einer ein Webserver-Log zu fälschen ?? Dann bin ich hier nämlich raus ...
Bitte warten ..
Mitglied: makaroni
07.01.2015 um 12:53 Uhr
Nope, das war gerade ein Beispiel was ich gerade an der Hand hatte. Aber Du hast Recht, das ist ein Webserver-Log.


Ich möchte gerne in der Textdatei stehen haben:

Herzlich Wilkommen.


Uhrzeit: Benutzername test\test test\CN=Internet-TEST hat sich zu dem Zeitpunkt: xx angemeldet...

Und dann halt alles Benutzer aufgezählt. Hat den Nutzen, dass irgendwann die Onlinezeit bzw. PC-Zeit erfasst werden soll. Sprich wie lange der User X angemeldet ist.
Bitte warten ..
Mitglied: colinardo
07.01.2015, aktualisiert um 13:23 Uhr
So letzte Wohltat für heute ...
01.
$Output_File = "\\pfad" 
02.
$all = @()  
03.
$text = @() 
04.
$all += Get-ADGroupMember -Recursive $AD_Group -Server $Server -Credential $cred 
05.
$all += Get-ADGroupMember $AD_Group -Server $Server -Credential $cred | ?{$_.objectClass -eq "group"} | Get-ADGroupMember -Recursive  
06.
 
07.
$text += "Herzlich Willkommen`r`n" 
08.
$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')} 
09.
$text | Out-File $Output_File
Viel Erfolg noch... der Thread ist ja ansonsten abgehandelt.
Grüße Uwe

Ansonsten siehe:

Powershell Grundlagen- und Praxisvermittlung:
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Python
Python - ausgabe formatieren

Frage von BadFsaadKl zum Thema Python ...

Batch & Shell
gelöst Powershell - Formatierung der Ausgabe (2)

Frage von Scroller zum Thema Batch & Shell ...

Batch & Shell
gelöst PowerShell Domain Join (2)

Frage von Patrick-IT zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...