問題

問題

我建立了一個 PowerShell 5.1 腳本來匯出資料庫中的所有使用者並將所有資料儲存到 CSV 檔案中。該腳本允許您設定一個日期,這樣您就可以決定從什麼時候開始匯出您的用戶。

經過一些測試後,我意識到並非所有用戶都被匯出,並且經過進一步調查,我意識到該屬性WhenChangedWhenCreated並非每個用戶都存在。儘管 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

請注意,您可以將“*”替換為您關心的屬性的逗號分隔清單 - 如果您有大型資料集或有限的內存,這可能會對效能產生影響。

希望這對其他人有幫助。

相關內容