Я использовал следующую команду для вывода последнего известного имени входа в список компьютеров, установленных для вывода из эксплуатации. Сценарий работает, но только на контроллере домена, на котором в данный момент выполнен вход. Как заставить его циклически проходить через все контроллеры домена в сети.
Get-Content C: \ noresponse.csv | Foreach-Object {Get-ADComputer $ _ -Properties LastLogonDate} | SortLastLogonDate | FT Name, LastLogonDate -Autosize | Out-File C: \ TempComputerLastLogonDa
Исходя из существующей PS, вы хотите, чтобы что-то помогло определить старые компьютеры в AD.
Вы можете запустить PS здесь :
# Gets time stamps for all computers in the domain that have NOT logged in since after specified date
# Mod by Tilo 2013-08-27
import-module activedirectory
$domain = "domain.mydom.com"
$DaysInactive = 90
$time = (Get-Date).Adddays(-($DaysInactive))
# Get all AD computers with lastLogonTimestamp less than our time
Get-ADComputer -Filter {LastLogonTimeStamp -lt $time} -Properties LastLogonTimeStamp |
# Output hostname and lastLogonTimestamp into CSV
select-object Name,@{Name="Stamp"; Expression={[DateTime]::FromFileTime($_.lastLogonTimestamp)}} | export-csv OLD_Computer.csv -notypeinformation
Или мой личный давний фаворит от JoeWare:
Вы захотите использовать свойство lastlogontimestamp, а не lastlogon.
LastLogonTimeStamp - это значение, которое реплицируется среди всех контроллеров домена, но это не точное значение. Его можно настраивать, но (насколько мне известно) по умолчанию репликация выполняется, если дата репликации превышает 14 дней.
Если вы ищете устаревшие учетные записи компьютеров (скажем, старше 60 дней), вы добавите 14 дней. на это.