Вопросы

Вопросы

Я создал скрипт PowerShell 5.1 для экспорта всех пользователей в БД и сохранения всех данных в CSV-файл. Скрипт позволяет вам установить дату назад во времени, чтобы вы могли решить, с какого момента вы хотите экспортировать своих пользователей.

После некоторого тестирования я понял, что не все пользователи экспортируются, и при дальнейшем исследовании я понял, что свойство WhenChangedи WhenCreatedне присутствуют для каждого пользователя. Несмотря на то, что пользовательский интерфейс AD показывает свойство с правильными данными, как показано на снимке экрана ниже.

введите описание изображения здесь

Когда я запускаю следующую команду:

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

Обратите внимание, что вы можете заменить «*» списком свойств, разделенных запятыми, которые вас интересуют — это может повлиять на производительность, если у вас большие наборы данных или ограниченный объем оперативной памяти.

Надеюсь, это поможет другим.

Связанный контент