2017-10-30 128 views
1

私は、特定のオペレーティングシステムを持つADからコンピュータのリストを取得し、このシートの '名前'列と、報告先のコンピュータのリストを持つ別のワークブックを比較するスクリプトを作成していますAVエージェント。 VLOOKUP関数を使用して不一致をチェックし、同じデータに基づいてピボットテーブルとグラフを作成するようなものです。しかしながら ;私は、「名前」の比較に目立たず、インジケータを白紙にしています。私は比較表と指標を必要としません。 Powershellでこれを達成できますか?同じヘルプは本当に素晴らしいでしょう。次のようにコードがある: - Compare-Objectを使用してPowershellのVLOOKUP用スクリプト

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 
+0

、それはまだ... Excelの問題ではないのです! [ここ](https://stackoverflow.com/questions/tagged/active-directory%20powershell?mode=all)と[SuperUser](https://superuser.com/questions/tagged)の同じタグを確認してください。/active-directory + powershell) – ashleedawg

+0

データがADから正しくフェッチされています。問題は比較か、PowerShellを使用してVlookupを実行する方法ですか? –

+0

あなたは 'Excel 'タグと' ...'名前の意味を誤解していたはずです。名前が 'Indicators'で空白のシートを与えているので... 'Vlookup'はPowershellのコマンドではありませんが、いくつかの代替案[こちら](https://www.google.ca/search?q=lookup+table+powershell)をご覧ください。 – ashleedawg

答えて

0
$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) 
"@ 

:私は、これが"Host Name" -eq "PC Name"これもレコードが含まれるよう、あなたのニーズに合ったかどうかわかりませんが、与えられた

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 <= 

注意例には共通の名前はなく、正確な出力が期待されるかはまだ不明です。 Join-Object使う

:あなたはまだのActive Directoryからデータを取得できない場合

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 
+0

しかし、2列の間でどのようにJoinヘルプが比較されますか? –

+0

上記で定義したような裸の形式では、基本的には左のテーブル( '$ file1')の' Name'と右のテーブル( '$ file2')を比較し、等しい場合はすべてのプロパティをマージして返します両方のオブジェクトのしかし、あなたが 'AV_Machines.csv'のサンプルを提供し、期待する出力のサンプルを提供すれば、より多くのことを行うことができます。より具体的にすることができます。 – iRon

+0

https://pastebin.com/GUWBg3HW 両方のCSVファイルのサンプルを貼り付けました。だから基本的に私は両方のWORKBOOKの '名前'列を比較し、別のスプレッドシートの列の不一致を提供し、同じものにピボットテーブルを構築したいと考えています。 –

関連する問題