Я использовал следующую команду для вывода последнего известного входа в список компьютеров, установленных для вывода из эксплуатации. Сценарий работает, но только на контроллере домена, на котором в данный момент выполнен вход. Как я могу заставить его циклически проходить через все контроллеры домена в сети.
Get-Content C: \ noresponse.csv | Foreach-Object {Get-ADComputer $ _ -Properties LastLogonDate} | SortLastLogonDate | Имя FT, LastLogonDate -Autosize | Out-File C: \ TempComputerLastLogonDa
Вы захотите использовать свойство lastlogontimestamp, а не lastlogon.
LastLogonTimeStamp - это значение, которое реплицируется среди всех контроллеров домена, но это не точное значение. Его можно настраивать, но (насколько мне известно) по умолчанию репликация выполняется, если дата репликации превышает 14 дней.
Если вы ищете устаревшие учетные записи компьютеров (скажем, старше 60 дней), вы добавите на это 14 дней.
Исходя из имеющегося у вас 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: