我在list.csv
中有一个host name
列的主机/计算机列表。其中一些还没有登录,所以我想删除所有包含过时计算机记录的行。
我可以使用下面的代码获取域中所有未在90天内登录的计算机(ish),但我想获取该计算机列表并将它们与list.csv
进行比较,从而删除匹配的计算机来自list.csv
。
我已经尝试了一段时间与其他文章和Import-CSV
等,但无法破解它。
import-module activedirectory
$domain = "contoso.local"
$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 | export-csv "C:\users\bicard\Desktop\allComputerslistFromDomainLookup.csv" -notypeinformation
答案 0 :(得分:5)
刚发布我发现这是@ JPBlanc的提示。
$DaysInactive = 90
$OutDate = (Get-Date).Adddays(-($DaysInactive))
# Get all AD computers with lastLogonTimestamp less than our time
$OutDated = Get-ADComputer -Filter {LastLogonTimeStamp -lt $OutDate} -Properties LastLogonTimeStamp |
select-object -ExpandProperty Name
Import-Csv List.csv |
Where { $OutDated -notcontains $($_.'host name'} |
Export-csv NewList.csv -notypeinformation