답변:
이렇게하면 지난 365 일 동안 활동이없는 모든 컴퓨터 계정이 제공됩니다.
Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan 365.00:00:00
lastlogondate별로 정렬합니다.
Search-ADAccount -AccountInactive -ComputersOnly -TimeSpan 365.00:00:00 | Sort-Object lastlogondate | Ft name,lastlogondate -auto
이렇게하면 비활성화 된 컴퓨터 계정이 제공됩니다.
Search-ADAccount -AccountDisabled -ComputersOnly
컴퓨터는 기본적으로 30 일마다 계정 비밀번호를 변경합니다. 컴퓨터가 오랫동안 암호를 변경하지 않은 경우 더 이상 네트워크에 연결되지 않았 음을 의미합니다.
이 PowerShell 스크립트는 2 개의 텍스트 파일을 출력합니다. 하나는 비활성화 된 컴퓨터를위한 것이고 다른 하나는 분리 된 컴퓨터 계정 개체를위한 것입니다. Active Directory PowerShell 모듈이 설치되어 있어야합니다.
이 예에서는 "암호화 된 랩톱"OU를 제외합니다. 왜냐하면 그들은 오랫동안 연결이 끊긴 모바일 랩톱이기 때문입니다. 비슷한 설정이없는 경우 해당 섹션을 제거 할 수 있습니다
Import-Module ActiveDirectory
$Date = [DateTime]::Today
#Sets the deadline for when computers should have last changed their password by.
$Deadline = $Date.AddDays(-365)
#Makes the date string for file naming
$FileName = [string]$Date.month + [string]$Date.day + [string]$Date.year
#Generates a list of computer accounts that are enabled and aren't in the Encrypted Computers OU, but haven't set their password since $Deadline
$OldList = Get-ADComputer -Filter {(PasswordLastSet -le $Deadline) -and (Enabled -eq $TRUE)} -Properties PasswordLastSet -ResultSetSize $NULL |
Where {$_.DistinguishedName -notlike "*Encrypted Laptops*"} |
Sort-Object -property Name | FT Name,PasswordLastSet,Enabled -auto
#Generates a list of computer accounts that are disabled and sorts by name.
$DisabledList = Get-ADComputer -Filter {(Enabled -eq $FALSE)} -Properties PasswordLastSet -ResultSetSize $null |
Sort-Object -property Name | FT Name,PasswordLastSet,Enabled -auto
#Creates the two files, assuming they are not $NULL. If they are $NULL, the file will not be created.
if ($OldList -ne $NULL) {
Out-File "C:\users\marra\desktop\Old$Filename.txt" -InputObject $OldList
}
if ($DisabledList -ne $NULL) {
Out-File "C:\users\marra\desktop\Disabled$Filename.txt" -InputObject $DisabledList
}
백만 감사합니다! 나는 이것에 내 조정을 추가하고 싶었다. 비활성화되었거나 비활성화되지 않았고 프로덕션 상태가 아닌 서버 만 찾아야했습니다. 이것이 내가 생각해 낸 것으로 작동하는 것 같습니다.
Import-Module ActiveDirectory
$Date = [DateTime]::Today
#Sets the deadline for when computers should have last changed their password by.
$Deadline = $Date.AddDays(-365)
#Makes the date string for file naming
$FileName = [string]$Date.month + [string]$Date.day + [string]$Date.year
#Generates a list of computer server accounts that are enabled, but haven't set their password since $Deadline
$OldList = Get-ADComputer -Filter {(PasswordLastSet -le $Deadline) -and (Enabled -eq $TRUE) -and (OperatingSystem -Like "Windows *Server*")} -Properties PasswordLastSet -ResultSetSize $NULL |
Sort-Object -property Name | FT Name,PasswordLastSet,Enabled -auto
#Generates a list of computer server accounts that are disabled and sorts by name.
$DisabledList = Get-ADComputer -Filter {(Enabled -eq $FALSE) -and (OperatingSystem -Like "Windows *Server*")} -Properties PasswordLastSet -ResultSetSize $null |
Sort-Object -property Name | FT Name,PasswordLastSet,Enabled -auto
#Creates the two files, assuming they are not $NULL. If they are $NULL, the file will not be created.
if ($OldList -ne $NULL) {
Out-File "C:\temp\Old$Filename.txt" -InputObject $OldList
}
if ($DisabledList -ne $NULL) {
Out-File "C:\temp\Disabled$Filename.txt" -InputObject $DisabledList
}
OP가 PowerShell을 분명히 요구했지만 OP가 마음에 들지 않으면 서 다른 Microsoft 구문을 배우고 싶지 않은 경우 다음 Python 스 니펫은 올바른 형식의 날짜를 사용합니다. LDAP 쿼리로.
import datetime, time
def w32todatetime(w32):
return datetime.fromtimestamp((w32/10000000) - 11644473600)
def datetimetow32(dt):
return int((time.mktime(dt.timetuple()) + 11644473600) * 10000000)
90daysago = datetime.datetime.now() - datetime.timedelta(days=90)
print datetimetow32(90daysago)
그런 다음 지난 90 일 동안 암호를 변경하지 않은 모든 Windows 컴퓨터를 찾기 위해 다음과 같이 사용할 수 있습니다.
(&(objectCategory=computer)(objectClass=computer)(operatingSystem=Windows*)(pwdLastSet<=130604356890000000))
Windows 컴퓨터에서 암호를 변경하는 기본 기간은 30 일이므로 30 만 있으면되지만 Bob의 책상 아래에 앉아 전원이 켜지지 않는 PC를 잊어 버린 경우 90이 더 안전 해 보입니다.
편집 : 아, 나는 또한이 사용 사례에서는 중요하지 않지만 다른 경우에는 시간대 지원을 생략했습니다.