질문

질문

DB의 모든 사용자를 내보내고 모든 데이터를 CSV 파일에 저장하는 PowerShell 5.1 스크립트를 작성했습니다. 스크립트를 사용하면 날짜를 과거로 설정할 수 있으므로 사용자를 내보낼 시점부터 결정할 수 있습니다.

일부 테스트 후에 모든 사용자가 내보내지지 않는다는 것을 깨달았고, 추가 조사를 통해 해당 속성이 각 사용자에게 존재하지 않는다는 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라는 이니셜을 가진 사용자는 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

"*"를 관심 있는 속성의 쉼표로 구분된 목록으로 바꿀 수 있습니다. 이는 대규모 데이터 세트나 제한된 RAM이 있는 경우 성능에 영향을 미칠 수 있습니다.

이것이 다른 사람들에게 도움이 되기를 바랍니다.

관련 정보