Active Directory 보안 그룹의 계정 그룹에 대한 마지막 비밀번호 변경을 가져와야하며, 이것이 PowerShell에 적합해야한다고 생각합니다.
지금은 이미보고있는 AD 계정에서 pwdLastSet 속성을 읽는 방법에 붙어 있습니다. 다음과 같이 간단한 것을 실행해도됩니다.
[adsi] "LDAP://cn=user1,ou=Staff,ou=User Accounts,dc=ramalamadingdong,dc=net" | Format-List *
pwdLastSet의 결과는 다음과 같습니다 :
pwdLastSet : {System.__ComObject}
pwdLastSet 속성의 출력을 쿼리하고 형식을 지정하는 가장 좋은 방법은 무엇입니까?
답변
스냅인없이이 작업을 수행 할 수도 있습니다. 나는 이것을 시도하고 효과가 있었다 :
PS #> $ searcher = New-Object DirectoryServices.DirectorySearcher PS #> $ searcher.Filter = "(& (samaccountname = user1))" PS #> $ results = $ searcher.findone () PS #> [datetime] :: fromfiletime ($ results.properties.pwdlastset [0]) 2009 년 6 월 10 일 수요일 오후 4:32:08
:이 같은 사용자 개체 설정 한 경우 나 또한의 pwdLastSet를위한 시스템 .__하여 ComObject을 얻을
= [ADSI] “LDAP $ 사용자를 : // CN = 사용자 1, OU = 직원, OU에 사용자 계정을 =, DC = ramalamadingdong, DC = 순 “
[System .__ ComObject] .InvokeMember () 및 reflection을 사용하여 $ user 객체에서 해당 pwdLastSet 값을 가져 오는 방법이 있어야하지만 제대로 얻을 수 없었습니다. 나는 그것을 이해하지 못했기 때문에 위의 예를 사용하여 계속 진행했습니다.
AD (또는 Exchange 또는 SQL Server)로 많은 작업을 수행하려는 경우 스냅 인을 가져 와서 사용할 수 있습니다.
답변
Windows 7 / Windows Server 2008 R2와 함께 제공되는 기본 제공 AD 커맨드 렛은 이제이 작업만으로도 충분합니다. Powershell 프롬프트에서 Windows 7의 경우 :
Import-Module ActiveDirectory
Get-ADUser 'user1' -properties PasswordLastSet | Format-List
“PasswordLastSet”속성은 실제 “pwdLastSet”속성의 번역 된 버전 인 것으로 보입니다.
답변
더 쉬운 방법이 있습니다.
ADSI 개체에는 ConvertLargeIntegerToInt64라는 메서드가 있습니다. 타임 스탬프 속성 값을 쿼리하여 반환되는 System .__ Comobject가 아니라 ADSI 개체의 메서드 이므로 $ user.pwdLastSet.value.ConvertLargeIntegerToInt64 ()가 작동하지 않습니다. 다음과 같이 호출해야합니다.
$user.ConvertLargeIntegerToInt64($user.pwdLastSet.value)
위의 Bratch에서 설명한 것처럼 LDAP 타임 스탬프를 읽을 수있는 날짜로 변환해야합니다. 이것은 ADSI 공급자가 반환 한 모든 타임 스탬프 속성 값에 대해 작동하며 ConvertLargeIntegerToInt64 메서드는 디렉토리 항목을 나타내는 모든 개체에 의해 노출됩니다.
이를 종합하면 다음은 비밀번호가 마지막으로 설정된 날짜를 얻는 방법입니다.
$user = [ADSI]'LDAP://cn=someusername,ou=someou,dc=somedomain,dc=com'
[datetime]::FromFileTime($user.ConvertLargeIntegerToInt64($user.pwdLastSet.value))
답변
AD 컴퓨터를 표시하는 쉬운 방법은 다음과 같습니다.
Get-ADComputer -Filter * -Properties name,LastLogonDate,PasswordLastSet,modified,modifyTimeStamp |
FT Name,DNSHostName,LastLogonDate,PasswordLastSet,modified,modifyTimeStamp |
Out-File Computers.csv
답변
설치 :
http://www.quest.com/powershell/activeroles-server.aspx
파워 쉘 열기
다음 명령을 실행하십시오.
add-PSSnapin quest.activeroles.admanagement
Get-QADUser | ft 표시 이름, 비밀번호 설정
첫 번째 명령은 방금 다운로드 한 퀘스트 스냅인을로드합니다. 시작 메뉴에서 바로 가기를 사용하여 퀘스트를 수행하는 경우에는이 작업을 수행 할 필요가 없습니다. 두 번째 명령은 모든 사용자 및 사용자 목록과 비밀번호가 마지막으로 변경된 시간을 가져옵니다.
답변
스크립트에 ConvertADSLargeInteger 함수를 추가하면 여기에서 얻을 수 있습니다.
PowerShell : Active Directory IADSLargeInteger를 System.Int64로 변환
사용 방법은 다음과 같습니다.
$user = [adsi] "LDAP://cn=user1,ou=Staff,ou=User Accounts,dc=ramalamadingdong,dc=net"
[datetime]::FromFileTimeUtc((ConvertADSLargeInteger $user.pwdlastset.value))
답변
아마도 passwordLastChanged 속성을 사용하는 것을보아야 할 것입니다. 자세한 정보는 여기를 참조하십시오 : http://www.microsoft.com/technet/scriptcenter/resources/qanda/aug06/hey0801.mspx