Powershell将输出与CSV文件进行比较?

时间:2013-08-22 18:55:27

标签: powershell csv comparison

我使用下面的代码获取181天前修改过它们的计算机名称列表。我有一个包含2列的.csv文件(ComputerName,UserName)有没有办法可以将下面代码的输出与csv文件中的computername列匹配并显示输出/匹配?

$Days = (Get-Date).AddDays(-181) 

Get-ADComputer -Property Name,lastLogonDate -Filter  {lastLogonDate -lt $Days} -Server DomainController -Searchbase "OU=US,DC=contoso,DC=net" | FT Name,lastLogonDate 

1 个答案:

答案 0 :(得分:1)

... | FT Name,lastLogonDate更改为... | select Name,lastLogonDate。您仍然可以将结果通过管道传输到ft以将其格式化为表格,但将选择与演示文稿分开可以更轻松地添加其他过滤器。

要仅显示CSV中具有匹配项的计算机,您可以执行以下操作:

$computers = Import-Csv 'your.csv' | % { $_.ComputerName }

Get-ADComputer -Property Name,lastLogonDate ... | select Name,lastLogonDate |
    ? { $computers -contains $_.Name } | ft

要包含CSV中的用户名,您可以执行以下操作:

$computers = @{}
Import-Csv 'your.csv' | % { $computers[$_.ComputerName] = $_.UserName }

Get-ADComputer -Property Name,lastLogonDate ... |
    ? { $computers.Keys -contains $_.Name } |
    select Name,lastLogonDate,@{n='Username';e={$computers[$_.Name]}} | ft