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이 있는 경우 성능에 영향을 미칠 수 있습니다.
이것이 다른 사람들에게 도움이 되기를 바랍니다.