Ich habe ein PowerShell 5.1-Skript erstellt, um alle Benutzer in der Datenbank zu exportieren und alle Daten in einer CSV-Datei zu speichern. Mit dem Skript können Sie ein Datum in der Vergangenheit festlegen, sodass Sie entscheiden können, seit wann Ihre Benutzer exportiert werden sollen.
Nach einigen Tests wurde mir klar, dass nicht alle Benutzer exportiert wurden, und bei weiterer Untersuchung wurde mir klar, dass die Eigenschaften WhenChanged
und WhenCreated
nicht für jeden Benutzer vorhanden sind. Obwohl die AD-Benutzeroberfläche die Eigenschaften mit den richtigen Daten anzeigt, wie im Screenshot unten zu sehen ist.
Wenn ich den folgenden Befehl ausführe:
Get-ADUser -filter * -Properties LastLogonDate, userPrincipalName, initials, WhenCreated, whenChanged | Select-Object userPrincipalName, initials, whenCreated, whenChanged
Ich erhalte folgendes Ergebnis:
userPrincipalName initials whenCreated whenChanged
----------------- -------- ----------- -----------
11/9/2017 2:06:29 PM 1/24/2018 4:26:48 PM
11/9/2017 2:07:47 PM 11/22/2017 4:12:52 PM
[email protected] MP 11/14/2017 3:14:45 PM 2/14/2018 4:02:51 AM
[email protected] DG 11/15/2017 12:51:25 PM 2/21/2018 2:12:52 PM
[email protected] AE
[email protected] MM
[email protected] RW
[email protected] KK
[email protected] AP
[email protected] JS
[email protected] CB 11/17/2017 12:21:32 PM 11/22/2017 4:41:35 PM
[email protected]
[email protected] TT
Wie Sie sehen, hat der Benutzer mit den Initialen TT keinen Wert, obwohl der Screenshot zeigt, dass er sie hat. Obwohl ich diesen Benutzer heute erstellt und am selben Tag einige Werte geändert habe.
Fragen
- Was vermisse ich?
- Ist es ein Problem mit AD selbst oder nur mit dem Befehl?
Antwort1
Die Lösung des Problems besteht darin, mit der rechten Maustaste auf die PowerShell-Verknüpfung zu klicken und auszuwählen Run as Administrator
. Sie müssen dies tun, auch wenn Sie bereits Administrator sind. Wenn Sie dies tun und den Befehl erneut ausführen, sind alle Ihre Daten vorhanden.
userPrincipalName initials whenCreated whenChanged
----------------- -------- ----------- -----------
11/9/2017 2:06:29 PM 1/24/2018 4:26:48 PM
11/9/2017 2:06:29 PM 11/9/2017 2:06:29 PM
11/9/2017 2:06:29 PM 11/9/2017 2:06:29 PM
11/9/2017 2:07:47 PM 11/22/2017 4:12:52 PM
[email protected] MP 11/14/2017 3:14:45 PM 2/14/2018 4:02:51 AM
[email protected] DG 11/15/2017 12:51:25 PM 2/21/2018 2:12:52 PM
[email protected] AE 11/16/2017 1:11:30 PM 11/22/2017 4:11:37 PM
[email protected] MM 11/16/2017 1:12:02 PM 11/22/2017 4:11:37 PM
[email protected] RW 11/16/2017 1:12:40 PM 11/22/2017 4:11:37 PM
[email protected] KK 11/16/2017 1:13:13 PM 11/22/2017 4:11:37 PM
[email protected] AP 11/16/2017 1:14:15 PM 11/22/2017 4:11:37 PM
[email protected] JS 11/16/2017 1:14:50 PM 11/22/2017 4:11:37 PM
[email protected] CB 11/17/2017 12:21:32 PM 11/22/2017 4:41:35 PM
11/22/2017 3:37:49 PM 2/16/2018 2:50:25 PM
11/22/2017 3:38:43 PM 2/17/2018 3:58:24 PM
[email protected] 11/22/2017 4:02:18 PM 11/22/2017 4:41:36 PM
[email protected] TT 2/21/2018 1:21:13 PM 2/21/2018 1:59:17 PM
Antwort2
Wie Sie, als ich diesen Befehl ausführte:
Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"' | select whenchanged
das Datum war immer leer. Ich habe diesen Artikel gefunden:https://www.itprotoday.com/powershell/view-all-properties-ad-objects-powershelldas hat mir gezeigt, wie ich alle Eigenschaften eines Objekts aufliste:
Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"' -properties *
Dies führte mich zu dieser Variante meiner Abfrage, um „whenChanged“ (oder jede andere Eigenschaft) angemessen anzuzeigen:
Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"' -properties *| select whenchanged
Beachten Sie, dass Sie das „*“ durch eine durch Kommas getrennte Liste der Eigenschaften ersetzen können, die für Sie wichtig sind. Dies hat wahrscheinlich Auswirkungen auf die Leistung, wenn Sie über große Datensätze oder begrenzten RAM verfügen.
Hoffe, das hilft anderen.