Top-Themen

Aktuelle Themen (A bis Z)

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 Script in Powershell

Mitglied: Everest

Everest (Level 1) - Jetzt verbinden

07.02.2017 um 19:55 Uhr, 5608 Aufrufe, 27 Kommentare, 3 Danke

Hallo PS-Scriptler,

hat jemand von euch ein Script, der bestimmte User (z.B. administrator) in der Domain ausließt, welcher angibt wer sich zuletz auf welchem Server einlogged hat?

Mit Get-ADUser oder mit Get-ADcomputer bekomme ich aber nicht zusammen!

Vielen Dank!
Everest
27 Antworten
Mitglied: Everest
07.02.2017 um 21:31 Uhr
Danke für schnelle Anwort. Ich teste es gleich morgen.
Bitte warten ..
Mitglied: colinardo
09.02.2017, aktualisiert 09.10.2018
Servus @Everest,
habe ich mal einen PS-Workflow geschrieben der "parallel" alle erreichbaren Server der Domain abgrast und die Daten zusammenfasst. Die lassen sich dann nach Wunsch filtern:

(Achtung PS-Workflows gibt es erst ab PS 3.0, den ThrottleLimit Parameter erst ab v4)
Der Aufruf des Workflows geschieht in der letzten Zeile.
Der Workflow kennt ein paar Parameter zur grundlegenden Filterung:
-SamAccountName : Username mit Wildcardunterstützung, wenn weggelassen werden alle Logons gelistet
-MaxDays : Max. Anzahl an Tagen welche die Logon/Logoff Vorgänge in die Vergangenheit reichen sollen / Bei Nichtangabe 14 Tage.
-timeout: Ping-Timeout wenn ein Server als nicht erreichbar gelten soll
-ThrottleLimit : Anzahl an parallelen auszuführenden Threads. / Ohne Angabe 5 parallele Threads

Vorraussetzung ist natürlich das die Remote-Verwaltung bei den Servern in der Firewall aktiviert ist und diese per Ping erreichbar sind.
Und natürlich Auszuführen mit einem Account der auf allen Servern die entsprechenden Rechte besitzt.

Viel Spaß
Grüße Uwe

Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Bitte warten ..
Mitglied: Everest
09.02.2017 um 14:33 Uhr
Hi Uwe oder Colinardo,

es ist super, dass du dir Zeit genommen hast so ein Script zu schreiben. Danke Dir dafür.

1) Zum Testen, kann ich anstatt:
$servers = Get-ADComputer -Filter {Operatingsystem -like "*Server*"} | select -Expand DNSHostName

$servers = Get-ADComputer -Filter testserver | select -Expand DNSHostName
nehmen?

2) ich habe PS v1 auf Windows Server 2008 Standard R2. Würde es auch gehen?

Danke.
Everest
Bitte warten ..
Mitglied: colinardo
09.02.2017, aktualisiert um 22:49 Uhr
Zitat von Everest:
es ist super, dass du dir Zeit genommen hast so ein Script zu schreiben. Danke Dir dafür.
Kein Problem ist schon länger her
1) Zum Testen, kann ich anstatt:
$servers = Get-ADComputer -Filter testserver | select -Expand DNSHostName
nehmen?
Nein du musst hier im Filter die Filtereigenschaft angeben. Wenn du also auf einen bestimmten Server einschränken willst nimmst du
oder etwas langsamer auch mit
2) ich habe PS v1 auf Windows Server 2008 Standard R2. Würde es auch gehen?
Nicht mit obigem Workflow, dazu muss man es grundlegend umschreiben oder auf min. PS 3.0 aktualisieren.
Du kannst das Skript aber auch von jeder Verwaltungsstation mit aktueller Powershell und installiertem RSAT ausführen so musst du auf den Servern auch nicht zwingend was ändern.

Der Workflow hatte den einfachen Grund um den Vorgang einfach zu beschleunigen.

Die Hauptaufgabe erledigt ja wie du oben sehen kannst Zeile 22, die kannst du auch mit einer ganz einfachen Schleife über alle Server anwenden. Der Rest drum herum ist ja nur der Aufbau für die parallele Verarbeitung.

Alternative dazu wäre auch das zukünftige Einsammeln der Eventlogs auf einer zentralen Maschine dann entfällt das langwierige Abklappern aller Server.
Bitte warten ..
Mitglied: Everest
10.02.2017 um 10:18 Uhr
Hi Uwe,

was ist falsch in der Zeile 44 ($s in $Servers)?
Bei der Ausgabe wird den Lokal PC in Form IP ausgegeben? So dass man genauer lokalisieren kann von welchem PC aus hat dieser bestimmte User gestartet.

Ich bin schon sehr gespannt auf das Ergebnis!
Danke Dir
Everest
ps_scripterror - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: colinardo
10.02.2017, aktualisiert um 10:38 Uhr
Zitat von Everest:

Hi Uwe,

was ist falsch in der Zeile 44 ($s in $Servers)?
Dort ist nichts falsch.
Du verwendest einfach entweder nicht mindestens PS 3.0 oder hast irgendwo eine Klammer zu viel gesetzt.
Bei der Ausgabe wird den Lokal PC in Form IP ausgegeben? So dass man genauer lokalisieren kann von welchem PC aus hat dieser bestimmte User gestartet.
Wenn sich der User per Remote an diesem Server angemeldet hat wird in der Eigenschaft IP die Remote-IP des Clients vermerkt. Hat er sich lokal an der Konsole angemeldet steht dort die Loopback-Adresse oder ist leer.
Skript läuft hier sowohl auf 2008R2 ADs als auch 2012-2016. Wenn es von "Verwaltungsstationen" ausgeführt wird ist ein installiertes RSAT mit AD-Tools natürlich zusätzlich Vorraussetzung.
Bitte warten ..
Mitglied: Everest
10.02.2017 um 11:41 Uhr
Hi Uwe,

die Version 3 ist eigentlich installiert und ich habe auch alle Klammern { } ( ) durch gezählt, es sind je 23x.

Was macht genau diese Zeile
foreach-parallel -throttle $throttlelimit ($s in $servers) {
                  1. call function to fetch filtered security eventlog from server
                  Get-Serverlogs -server $s -SamAccountname $SamAccountname
                  }


                  ($s in $Server) unexpected token 'in' in Expression or Statement.

                  Danke Dir
                  Everest
                  psversion - Klicke auf das Bild, um es zu vergrößern
Bitte warten ..
Mitglied: 132272
LÖSUNG 10.02.2017, aktualisiert um 11:52 Uhr
Deine Powershell ist putt.
Zitat von Everest:
Was macht genau diese Zeile
foreach-parallel -throttle $throttlelimit ($s in $servers) {
Lesen: about_Foreach-Parallel

Gruß
Bitte warten ..
Mitglied: Everest
10.02.2017 um 12:29 Uhr
Hi Uwe,

da du so sicher warst, habe ich mir gedacht, dass es nur noch an PS liegen muss, so habe ich PS v4 installiert und es hat super funktioniert.

Du bist echt ein Genie!!
Vielllllllllllllllllle Grüße,
Everest
Bitte warten ..
Mitglied: colinardo
10.02.2017, aktualisiert um 12:39 Uhr
Ach, ich hatte den Parameter -Throttle nicht ausgeschrieben sondern abgekürzt der sollte komplett -ThrottleLimit heißen. Workflows sind da sehr penibel dort wollen die Parameter vollständig ausgeschrieben werden. Die PS 3.0 war da noch etwas penibler die PS4 verzeiht das. Immer diese leidige Versions-Fragmentierung mit der Zeit, kaum lässt man sich auf den Komfort einer Nachfolgeversion ein tritt man in die Sch....

Freut mich das es dir hilft.
Viele Grüße
Uwe
Bitte warten ..
Mitglied: jan.kleinel
17.02.2017 um 10:59 Uhr
Hey,

das Skript ist sehr hilfreich, nur wie kann ich alle in der Domäne gespeicherten Benutzer anzeigen lassen.
Also Admin und alle anderen Benutzer gleichzeitig.

Vielen Dank.
Bitte warten ..
Mitglied: colinardo
17.02.2017, aktualisiert um 11:06 Uhr
Servus,
Zitat von jan.kleinel:
das Skript ist sehr hilfreich, nur wie kann ich alle in der Domäne gespeicherten Benutzer anzeigen lassen.
Also Admin und alle anderen Benutzer gleichzeitig.
Steht oben unter dem Skript:
Zitat:
-SamAccountName : Username mit Wildcardunterstützung, wenn weggelassen werden alle Logons gelistet
Parameter weglassen, freuen

Grüße Uwe
Bitte warten ..
Mitglied: jan.kleinel
17.02.2017 um 11:08 Uhr
Danke Uwe für die Antwort, habe das genau dann ausprobiert als du geantwortet hast :D

Trozdem vielen Dank!
Bitte warten ..
Mitglied: colinardo
17.02.2017, aktualisiert um 11:30 Uhr
Zitat von jan.kleinel:
Danke Uwe für die Antwort, habe das genau dann ausprobiert als du geantwortet hast :D
Na dann viel Spaß
Trozdem vielen Dank!
Immer gerne.

Falls es dich vielleicht noch interessiert:
Anmeldestatus von Benutzern im Active Directory speichern
Bitte warten ..
Mitglied: jan.kleinel
16.03.2017 um 08:12 Uhr
Hey Leute,

könnte man das Ergebnis nicht theoretisch bei jedem starten in einem Textdokument speichern? Wenn ja wie wäre dieses möglich?

L.G.
Bitte warten ..
Mitglied: colinardo
16.03.2017, aktualisiert um 11:00 Uhr
Servus.
Zitat von jan.kleinel:
könnte man das Ergebnis nicht theoretisch bei jedem starten in einem Textdokument speichern? Wenn ja wie wäre dieses möglich?
Hättest du den Thread aufmerksam gelesen dann hättest du gesehen das das Skript das per Remote schon aus den Rechnern ausliest, ein separates Ausführen auf jedem Client ist also unnötig. Die auszulesenden Rechner (im obigen Fall waren das ja nur die Server der Organisation) kannst du ja in der Zeile mit Get-AdComputer festlegen. Das Ergebnis kannst du am Ende einfach direkt an Export-CSV leiten und schon hast du deine gewünschte Datei die du nach Bedarf filtern kannst wie du lustig bist.

Für persönliche Anpassungen, gerne per PN (kostenpflichtig).

Grüße Uwe
Bitte warten ..
Mitglied: novregen
11.04.2017 um 13:37 Uhr
Hallo Uwe,

ich würde gerne meine eigenen An- und Abmeldezeiten registrieren. Es handelt sich dabei um Domain Anmeldungen. Es gibt zwei DC.

Ich habe jetzt auf dem Primären DC Powershel von v1 auf v3 geupdatet. Powershel als Administrator geöffnet und dein Script unverändert per kopieren und einfügen eingefügt. Es wird leider nichts ausgegeben. Nach zweimaligen enter drücken, kommt folgende Fehlermeldungen. Wo liegt mein Fehler ? Throttlelimit scheint doch überall korrekt ausgeschrieben vorhanden.
Abspeichern als .ps und dann ausführen funktioniert auch nicht. Ausführung kann man kurz sehen, dann rote schrift und zu.

}
Get-LastLogonEvents -MaxDays 90 -SamAccountName 'Administrator' | sort Time -Descending | ft Server,Us
In Zeile:36 Zeichen:23

foreach -parallel -throttlelimit $throttlelimit ($s in $servers){

~~~~~~~~~~~~~~

Der Parameter "throttlelimit" ist für die Anweisung "foreach" nicht zulässig.
In Zeile:36 Zeichen:12

foreach -parallel -throttlelimit $throttlelimit ($s in $servers){

~

Öffnende "(" fehlt nach dem Schlüsselwort "foreach".
In Zeile:36 Zeichen:53

foreach -parallel -throttlelimit $throttlelimit ($s in $servers){

~

Unerwartetes Token "(" in Ausdruck oder Anweisung.
In Zeile:36 Zeichen:57

foreach -parallel -throttlelimit $throttlelimit ($s in $servers){

~~

Unerwartetes Token "in" in Ausdruck oder Anweisung.
In Zeile:36 Zeichen:56

foreach -parallel -throttlelimit $throttlelimit ($s in $servers){

~

Schließende ")" fehlt in einem Ausdruck.
In Zeile:1 Zeichen:30

workflow Get-LastLogonEvents {

~

Schließende "}" fehlt im Anweisungsblock.
In Zeile:36 Zeichen:68

foreach -parallel -throttlelimit $throttlelimit ($s in $servers){

~

Unerwartetes Token ")" in Ausdruck oder Anweisung.
In Zeile:40 Zeichen:1

}

~

Unerwartetes Token "}" in Ausdruck oder Anweisung.
+ CategoryInfo : ParserError: ( [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : InvalidForeachFlag
Bitte warten ..
Mitglied: colinardo
11.04.2017, aktualisiert um 13:55 Uhr
Zitat von 132895:

-ThrottleLimit benötigt min. PS V4
http://www.happysysadm.com/2013/06/how-to-throttle-workflow-activites-i ...

hauruck
Korrrekt. Hatte ich oben vergessen zu erwähnen, ist nachgeholt.
Bitte warten ..
Mitglied: novregen
11.04.2017 um 13:57 Uhr
Könnte man auf ThrottleLimit verzichten, wenn evtl. nur ein Server (sollte dann ja der Primäre DC) abgefragt wird ?
Wie müßte das Script dann aussehen oder geht das nicht ?
Bitte warten ..
Mitglied: colinardo
11.04.2017 um 14:01 Uhr
Klar, kannst du weg lassen.
Bitte warten ..
Mitglied: novregen
11.04.2017 um 15:20 Uhr
Hallo,
ich hab versucht das auszukommentieren, jedoch ohne Erfolg. Könnte mir jemand weiterhelfen, wie ich das Script für PS 3.0 anpasse und ggfs. auch einfach nur für einen Server und einen User. Danke.


Bitte warten ..
Mitglied: 132895
11.04.2017, aktualisiert um 15:40 Uhr
Junge du führst das einfach falsch aus, geht hier nämlich testweise absolut fehlerfrei!
Das pastet man nicht in die Konsole so wie du das hier machst. Für einen Server nehm dir doch einfach die Function aus dem Workflow raus . Man oh man, die Leute können echt nur noch copy n Paste ...
Bitte warten ..
Mitglied: novregen
11.04.2017 um 16:10 Uhr
Ja scheint so. Update auf PS 4.0 ist leider auf dem Server nicht möglich. Von PS Scripten habe ich wirklich keine Ahnung, deshalb hatte ich ja gefragt, wie das ausgeführt werden muss und entsprechend mit den Fehlerangaben gepostet.
Bitte warten ..
Mitglied: 132895
11.04.2017, aktualisiert um 16:18 Uhr
Von PS Scripten habe ich wirklich keine Ahnung
Dann solltest du das erst mal ändern und dann wieder kommen. Man kann hier ja nicht jedem das "Fahren" beibringen . Mitdenken musst du schon, nimm nur die Function Get-ServerLogs die enthält ja alles was du brauchst, alles andere drum herum ist ja nur dafür da, viele Server gleichzeitig/parallel zu verarbeiten. Ohne minimal Hirn einschalten und sich grundlegend mit dem Inhalt zu beschäftigen wirst du mit Powershell nie warm!

p.s. So ein schöner Thread durch deine Unwissenheit verunstaltet
Bitte warten ..
Mitglied: novregen
12.04.2017 um 08:48 Uhr
Ob du es glaubs oder nicht, auch nur die Get Funktion habe ich per Konsole PS 3.0 versucht, ohne Erfolg.

Werde diesen Thread aber auch nicht weiter verunstalten und mich an deinen fachlichen Kommentaren erfreuen.
Cool, dann brauch ich bei euch nicht mehr zur Arbeit wenn ich die Kiste per Remote hoch und runter fahre :-P
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell Script WebClient.DownloadFile
gelöst Frage von PeterleBBatch & Shell2 Kommentare

Da das Thema mit dem Downloadscript schon als gelöst markiert ist, (Proxy Download) hier noch eine Frage zur Anweisung: ...

Windows Server
PowerShell script Hilfestellung
Frage von ollip2016Windows Server2 Kommentare

Guten Tag Administrator-User, ich bin auf der Suche nach Hilfestellung für eine Powershell Skript, hier mal kurz eine Beschreibung, ...

Batch & Shell

PowerShell Script Daten aus einem anderen PowerShell Script übergeben

gelöst Frage von RikkijooeBatch & Shell5 Kommentare

Guten Abend Liebe Administratoren! Ich weiß nicht, wie ich den Titel anders formulieren soll als so. Meine Frage ist ...

Batch & Shell

PowerShell Script für Dateisuche

gelöst Frage von Stefan007Batch & Shell4 Kommentare

Hi Leute, ich suche ein Script welches für die Suche nach einer Datei zuständig sein soll. Meine Vorstellung: Es ...

Neue Wissensbeiträge
Informationsdienste

RKI - Corona-Datenspende App zur Erfassung von Informationen und Ausbreitung des Coronavirus (SARS-CoV-2) in Deutschland

Information von Frank vor 16 StundenInformationsdienste1 Kommentar

Das Robert Koch-Institut stellt ab sofort eine App zur Verfügung, die ergänzende Informationen dazu liefern soll, wo und wie ...

Sicherheit

Gefährliche Sicherheitslücken im HP Support Assistant sind immer noch offen

Information von transocean vor 16 StundenSicherheit

Moin, es wird empfohlen, den HP Support Assistenten aus Sicherheitsgründen zu deinstallieren. Lest selbst Gruß Uwe

Webbrowser
Microsofts neuer Edge Browser kommt gut an
Information von Frank vor 16 StundenWebbrowser8 Kommentare

Laut dem Statistikdienst Netmarketshare liegt der Marktanteil von Microsofts neuen Browser Edge (7.59%) im März 2020 erstmals vor Firefox ...

Microsoft

Support of DANE and DNSSEC in Office 365 Exchange Online

Information von Dani vor 1 TagMicrosoft1 Kommentar

Guten Abend zusammen, Microsoft is committed to providing world-class email security solutions and the support for the latest Internet ...

Heiß diskutierte Inhalte
Schulung & Training
IT-Bedarf ermitteln
Frage von malikaSchulung & Training47 Kommentare

Hallo zusammen, ich würde gerne Eure Kritik oder Ratschläge zum Ermitteln des IT-Bedarfs für ein Steuerbüro (2 Steuerberater, 1 ...

Schulung & Training
Admin Hygiene an APs (Zur Zeiten von Corona.)
gelöst Frage von NebellichtSchulung & Training22 Kommentare

Hallo Admins, ich stelle mir gerade die Frage(n), wie ich als Admin mich vor Viren und Bakterien schützen kann ...

Server-Hardware
Fujitsu RX300 S7-Server Festplattenadapter 3,5" auf 2,5"
gelöst Frage von reksierpServer-Hardware15 Kommentare

Moin, in unseren o.a. Server möchten wir 2,5"-SSDs verwenden. Die lassen sich in den vorhandenen 3,5"-Einschüben nur mit Klebeband ...

Netzwerke
Frage zu VoIP-VLAN und
gelöst Frage von darkness08Netzwerke15 Kommentare

Hallo, in einem anderen Beitrag hatte ich gefragt, wie ich UDP bzw. RTP in ein anderes VLAN Route. Dazu ...