我建立了一個 PowerShell 5.1 腳本來匯出資料庫中的所有使用者並將所有資料儲存到 CSV 檔案中。該腳本允許您設定一個日期,這樣您就可以決定從什麼時候開始匯出您的用戶。
經過一些測試後,我意識到並非所有用戶都被匯出,並且經過進一步調查,我意識到該屬性WhenChanged
和 WhenCreated
並非每個用戶都存在。儘管 AD UI 顯示了具有正確資料的屬性,如下面的螢幕截圖所示。
當我運行以下命令:
Get-ADUser -filter * -Properties LastLogonDate, userPrincipalName, initials, WhenCreated, whenChanged | Select-Object userPrincipalName, initials, whenCreated, whenChanged
我得到以下結果:
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
正如您所看到的,儘管螢幕截圖顯示帶有 TT 縮寫的用戶沒有任何價值。儘管我今天創建了這個用戶,並在同一天更改了一些值。
問題
- 我缺什麼?
- 是AD本身的問題還是命令的問題?
答案1
解決問題的方法是右鍵單擊 PowerShell 捷徑並選擇Run as Administrator
。即使您已經是管理員,也必須執行此操作。如果您這樣做並再次運行該命令,您的所有資料都將在那裡。
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
答案2
就像你一樣,當我運行這個命令時:
Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"' | select whenchanged
日期總是空的。我找到這篇文章了:https://www.itprotoday.com/powershell/view-all-properties-ad-objects-powershell這向我展示瞭如何列出物件的所有屬性:
Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"' -properties *
這導致我對查詢進行了這種變體,以適當地顯示 whenChanged (或與此相關的任何其他屬性):
Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"' -properties *| select whenchanged
請注意,您可以將“*”替換為您關心的屬性的逗號分隔清單 - 如果您有大型資料集或有限的內存,這可能會對效能產生影響。
希望這對其他人有幫助。