我一直在使用以下命令输出已设置为停用的计算机列表的最后已知登录信息。该脚本有效,但仅限于当前登录的 DC。我如何让它循环遍历网络中的所有 DC。
获取内容 C:\noresponse.csv | Foreach-Object {Get-ADComputer $_ -Properties LastLogonDate} | SortLastLogonDate | FT 名称,LastLogonDate -Autosize |Out-File C:\TempComputerLastLogonDa
答案1
根据您现有的 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:
答案2
您将要使用属性“lastlogontimestamp”而不是“lastlogon”。
LastLogonTimeStamp 是在所有 DC 之间复制的值,但不是确切的值。它是可配置的,但(据我所知)默认是如果复制日期超过 14 天则进行复制。
如果您正在寻找陈旧的机器帐户(超过 60 天),那么您将在该帐户上填充 14 天。