2017-03-19 4 views
1

ich ein Skripte in Powershell geschrieben haben, die über Änderungen folgen in der AD gemacht, vom Cmdlet Get-ADObject:Folgen Änderungen in AD über Powershell-Skript

$Date = Get-Date 
$FixedDate.AddHours(13) 
Get-ADObject -Filter "whenchanged -gt $Date.Date" -Properties sAMAccountName, whenCreated, whenChanged | 
    select | 
    Format-Table -Property sAMAccountName,whenCreated,whenChanged -AutoSize 

Das Skript oben nur über die Änderungen in der folgen AD, aber ich möchte, dass das Skript mir auch sagen kann, welcher Benutzer die Änderung vorgenommen hat.

Wie können wir das tun?

+1

Hinweis, dass ein Filter ' "whenchanged -gt $ Date.Date"' wird nicht funktionieren, weil Powershell doesn‘ t Erweitern Sie Eigenschaften in einer Zeichenfolge. Sie müssen das Datum in einen Teilausdruck setzen ('" wenn -gt $ ($ Date.Date) "). Und woher kommt dieses nutzlose leere 'select', das ich in letzter Zeit immer wieder sehe. –

Antwort

1

Was Sie suchen, kann nicht ausgeführt werden, es sei denn, Sie aktivieren die Überwachung für die Änderung von Active Directory-Objekten. Sie können dies innerhalb von GPO und auch innerhalb von SACL tun. Sobald es aktiviert ist, müssen Sie es auf die AD anwenden.

Soweit das Skript ist: Wir erhalten zuerst das Datum von, wenn wir die AD für alle Objekte überprüfen möchten, die geändert wurden. Ich mag es, Get-ADObject -Filter ‘whenChanged -gt $Date’ | Group-Object objectclass zu tun. Dies wird mir sagen, was sich geändert hat, von Accounts, Gruppen, Policy, etc.

Jetzt können wir die Select-Anweisung verwenden, um die Ergebnisse einzugrenzen. Wenn das Konto gelöscht wurde, können wir das Beispiel verwenden, das Sie angegeben haben.

$Date = [datetime]”3/19/2017" 
#Get-ADObject -Filter ‘whenChanged -gt $Date’ | Group-Object objectclass 

Get-ADObject -Filter 'whenChanged -gt $Date' -Properties *| 
select Name, sAMAccountName, whenChanged, whenCreated | Format-Table -AutoSize 

Wir können auch den Schalter hinzufügen -IncludeDeletedObjects = Objekte

Get-ADObject -Filter 'whenChanged -gt $Date' -Properties * -IncludeDeletedObjects | 
select Name, sAMAccountName, whenChanged, whenCreated | Format-Table -AutoSize 

Ohne Revision gelöscht retrieve eingeschaltet, bekommen die es möglich sein wird, nicht.

Wenn Auditing ordnungsgemäß aktiviert ist, sollte es in der Ereignisanzeige angezeigt werden und nach der ID 4726 suchen. Wir können den folgenden Powershell-Skript verwenden:

Get-Eventlog -Log Security -After $Date -Newest 10| Where {$_.EventID -eq 4726} 

Ereignis-ID eine Menge von Optionen haben kann, aber wenn wir nicht wissen, was für diesen Benutzer oder Objekt passieren. Wir können laufen:

Get-Eventlog -Log Security -After $Date -Newest 10 -Message "*A user account*" 

Einige nützliche Ereignis-ID für AD Audit:

Event ID 4720 - A user account was created. 
Event ID 4722 - A user account was enabled. 
Event ID 4726 - A user account was deleted. 
Event ID 4738 - A user account was changed. 

Event ID 5141 – A directory service object was deleted. 
Event ID 5136 – A directory service object was modified. 
Event ID 5139 – A directory service object was moved. 
Event ID 5141 – A directory service object was deleted. 
+1

[Verwandte] (https://technet.microsoft.com/en-us/library/cc731607.aspx). –

+0

Hallo, das Audit aktiviert, aber ich kann immer noch nicht wer in der AD geändert hat. Gibt es einen Befehl, der das kann? – Itzik

+0

@AnsgarWiechers, Danke. Antwort wurde aktualisiert. –

Verwandte Themen