从1 csv中删除另一个csv中的行

时间:2017-04-22 15:44:17

标签: powershell

我在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

1 个答案:

答案 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
相关问题