Questões

Questões

Criei um script do PowerShell 5.1 para exportar todos os usuários no banco de dados e salvar todos os dados em um arquivo CSV. O script permite que você defina uma data no tempo para que você possa decidir desde quando deseja que seus usuários sejam exportados.

Após alguns testes, percebi que nem todos os usuários são exportados e, após uma investigação mais aprofundada, percebi que as propriedades WhenChangede WhenCreatednão estão presentes para cada usuário. Apesar da UI do AD mostrar a propriedade com os dados corretos, como pode ser visto na imagem abaixo.

insira a descrição da imagem aqui

Quando executo o seguinte comando:

Get-ADUser -filter * -Properties LastLogonDate, userPrincipalName, initials, WhenCreated, whenChanged | Select-Object userPrincipalName, initials, whenCreated, whenChanged 

Eu obtenho o seguinte resultado:

 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                                                   

Como você pode ver, o usuário com as iniciais TT não tem valor, apesar da captura de tela mostrar que as possui. Apesar de eu ter criado esse usuário hoje e alterado alguns valores no mesmo dia.

Questões

  • o que estou perdendo?
  • É um problema com o próprio AD ou apenas com o comando?

Responder1

A solução para o problema é clicar com o botão direito no atalho do PowerShell e selecionar Run as Administrator. Você deve fazer isso mesmo se já for um administrador. Se você fizer isso e executar o comando novamente, todos os seus dados estarão lá.

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

Responder2

Como você, quando executei este comando:

Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"' | select whenchanged

a data estava sempre vazia. Encontrei este artigo:https://www.itprotoday.com/powershell/view-all-properties-ad-objects-powershellque me mostrou como listar todas as propriedades de um objeto:

Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"'  -properties *

O que me levou a esta variação da minha consulta para mostrar apropriadamente o whenChanged (ou qualquer outra propriedade):

Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"'  -properties *| select whenchanged

Observe que você pode substituir o "*" por uma lista delimitada por vírgulas de propriedades importantes para você - isso provavelmente terá implicações no desempenho se você tiver grandes conjuntos de dados ou memória RAM limitada.

Espero que isso ajude outras pessoas.

informação relacionada