Powershell中的VLOOKUP脚本

我正在编写一个脚本,它将从具有特定操作系统的AD中获取计算机列表,然后将此工作表的“名称”列与具有向AV代理报告的计算机列表的另一个工作簿进行比较。 有点像使用VLOOKUP函数检查不匹配,然后基于相同的数据构build一个Pivot表和Graph。 但是; 对于“名称”的比较,我觉得这样比较困难,因为它给了一个带有指标的白纸。 我想要比较表和没有指标。 这可以在Powershell中实现吗? 任何帮助都是一样的。 守则如下:

import-module ac* Get-ADComputer -filter { OperatingSystemVersion -Like '*6.1*' -and Enabled -eq "true"} -SearchBase 'OU=Computers,OU=IM,dc=miraje,dc=intr' -Properties '*' | Select Name,OperatingSystem,Status, OperatingSystemVersion, ` LastLogonDate,CanonicalName | Export-Csv -NoType "C:\Temp\ExportPC3.csv" -Encoding UTF8 $file1 = import-csv -Path "C:\Temp\ExportPC3.csv" $file2 = import-csv -Path "C:\Temp\AV_Machines.csv" $result = Compare-Object $file1 $file2 -property Name -IncludeEqual | Export-Csv -NoType "C:\Temp\ExportPC2.csv" -Encoding UTF8 

 $AV_Machines = ConvertFrom-CSV @" Host Name,OS,Version,Device,Type AMSSVIATRS31,Win,Windows Server 2008 R2,Server AMSSVIFLS32,Win,Windows Server 2008 R2,Server AMSSVIPRTFLS31,Win,Windows Server 2008 R2,Server ANTSRVATRS31,Win,Windows Server 2008 R2,Server "@ $PC3 = ConvertFrom-CSV @" PC Name,PC status,OS BFK0852,Enabled,6.1 (7601) BLVDLMBHYV2,Enabled,5.1 (2600) BLVPACKAGING,Enabled,6.1 (7601) BLVSAMSUNG2,Enabled,6.1 (7601) BRG314F68G,Enabled,6.1 (7601) "@ 

使用比较对象 :

 PS C:\> Compare-Object $PC3 $AV_Machines -Property "Host Name", "PC Name", "OS" , "Version", "Device", "Type", "PC status" | FT Host Name PC Name OS Version Device Type PC status SideIndicator --------- ------- -- ------- ------ ---- --------- ------------- AMSSVIATRS31 Win Windows Server 2008 R2 Server => AMSSVIFLS32 Win Windows Server 2008 R2 Server => AMSSVIPRTFLS31 Win Windows Server 2008 R2 Server => ANTSRVATRS31 Win Windows Server 2008 R2 Server => BFK0852 6.1 (7601) Enabled <= BLVDLMBHYV2 5.1 (2600) Enabled <= BLVPACKAGING 6.1 (7601) Enabled <= BLVSAMSUNG2 6.1 (7601) Enabled <= BRG314F68G 6.1 (7601) Enabled <= 

请注意,我不确定这是否适合您的需要,因为这也将包括"Host Name" -eq "PC Name"但给定示例没有任何常用名称的logging,目前仍不清楚您期望的输出结果。

使用连接对象 :

 PS C:\> $PC3 | FullJoin $AV_Machines {$Left."Host Name" -ne $Right."PC Name"} | ft Version Type PC Name OS Device Host Name PC status ------- ---- ------- -- ------ --------- --------- BFK0852 6.1 (7601) Enabled BLVDLMBHYV2 5.1 (2600) Enabled BLVPACKAGING 6.1 (7601) Enabled BLVSAMSUNG2 6.1 (7601) Enabled BRG314F68G 6.1 (7601) Enabled Windows Server 2008 R2 Win Server AMSSVIATRS31 Windows Server 2008 R2 Win Server AMSSVIFLS32 Windows Server 2008 R2 Win Server AMSSVIPRTFLS31 Windows Server 2008 R2 Win Server ANTSRVATRS31