我希望有人能夠幫助解決我在比較數組時遇到的問題。Powershell - 比較兩個數組返回錯誤結果
這是一些背景。我有一個PowerShell腳本,它生成一個域控制器列表,檢查它們是否在線,然後將數據寫入一個csv文件。這工作正常。
我要運行該週刊,如果任何域控制器中添加或刪除發送警報。
我還有一個腳本,該腳本導入先前生成CSV到一個數組,然後我生成的域控制器的一個新的列表,併發送該列表到一個新的數組。我試圖比較兩個使用比較對象,並導出一個新的CSV與差異列表。
但是,我正在通過手動修改舊的CSV來測試這一點,並且我發現無論我從以前的列表中刪除哪個域控制器或添加新的域控制器,它總是會報告更改是列表中的最後一個域控制器。
例如,這裏就是我的CSV文件看起來像:
"DC_Name","Ping_Response"
"dc1.testcompany.com","online"
"dc2.testcompany.com","online"
"dc3.testcompany.com","online"
"dc4.testcompany.com","online"
如果我刪除測試這個「dc3.testcompany.com」,「在線」並再次運行該腳本,它知道名單已更改,但報告新條目是「dc4.testcompany.com」,「在線」而不是「dc3.testcompany.com」,「在線」。
同樣,如果我改變我的老CSV看起來像這樣:
"DC_Name","Ping_Response"
"dc1.testcompany.com","online"
"dc2.testcompany.com","online"
"dc5.testcompany.com","online"
"dc3.testcompany.com","online"
"dc4.testcompany.com","online"
它會報告一個不同於新名單「dc4.testcompany.com」,「在線」,不是我在中間添加的那個。
我必須做一些錯誤與我相比。這裏是我正在使用的腳本的相關部分:
$newDCArray = @(Import-CSV DC_List.csv)
$oldDCArray = @(Import-CSV Last_DC_List.csv)
$diff = Compare-Object $oldDCArray $newDCArray
if($diff -eq $null)
{
Write-Host "No changes to DCs"
}
else
{
Write-Host "There have been changes to DCs"
$diff| Export-CSV DC_Change_List.csv -notypeinformation
Send-MailMessage –From "[email protected]" –To "[email protected]" –Subject "Alert - Domain Controllers Added or Removed" –Body "DC Report Attached" –SmtpServer "smtp.xxxxxxxxxxx.net" -Attachments "DC_Change_List.csv"
}
請讓我知道如果有人有任何想法!
謝謝! 約翰
即將發佈! – SpellingD
謝謝! -property參數正是我所缺少的,現在這個工作非常棒! – user1678436