0
重複項目的我試圖找到在BIND DNS記錄不符。我想輸出一個只有這些差異的CSV文件。我有一個CSV文件,其中包含BIND中所有位置的所有記錄(ns.prvt,ns.pub,common,includes)。我試圖弄清楚的是如何輸出只顯示差異的CSV。對於2條記錄被視爲差異,它們必須符合以下條件:的PowerShell:刪除陣列
- 兩條記錄具有相同的RecordName和RecordType。
- 兩條記錄都有不同的數據或TTL。
- 這兩個記錄來自不同的位置。
我幾乎在那裏用下面的腳本,但它不斷向我顯示幾行不一定符合上述條件。
$Records = Import-Csv C:\Temp\Domain_ALL.csv | Select * | Sort Data,Location
$RecordsRev = @()
$Records | % {
$Record = $_
$Records | % {
$DataFE = $_
If (
([string]($Record | ? {($_.RecordName -eq $DataFE.RecordName)}).RecordName -eq $DataFE.RecordName) -and
([string]($Record | ? {($_.RecordName -eq $DataFE.RecordName)}).RecordType -eq $DataFE.RecordType) -and
([string]($Record | ? {($_.RecordName -eq $DataFE.RecordName)}).Location -ne $DataFE.Location) -and
(([string]($Record | ? {($_.RecordName -eq $DataFE.RecordName)}).Data -ne $DataFE.Data) -or
([string]($Record | ? {($_.RecordName -eq $DataFE.RecordName)}).TTL -ne $DataFE.TTL))
) {
$RecordsRev += $_
}
}
}
$RecordsRev | Export-Csv C:\Temp\Domain_Discrepancies.csv -NoType
,我得到的結果是:
RecordName RecordType Data TTL Location
---------- ---------- ---- --- --------
www CNAME somedomain.com.test. 600 Includes
www CNAME somedomain.com. 600 Common
如何在數組中刪除所有重複的行:
RecordName RecordType Data TTL Location
---------- ---------- ---- --- --------
domain.com TXT "MS=abc1234566" 600 Includes
domain.com TXT "MS=abc1234566" 600 Common
domain.com TXT "site-verification=abcd1234" 600 Includes
domain.com TXT "site-verification=abcd1234" 600 Common
www CNAME somedomain.com.test. 600 Includes
www CNAME somedomain.com. 600 Common
,我希望結果如何?這與「Select * -unique」不同,因爲我不想保留包含重複信息的任何行。
編輯:我認爲主要的問題是,因爲腳本會針對在CSV每個記錄每條記錄,這在技術上是一個矛盾。例如,在下表中,由於記錄1與記錄4不同,因此記錄1符合標準是不一致的。但是,由於記錄1與記錄2相同,實際上應該從結果中省略。
RecordNumber RecordName RecordType Data TTL Location
------------ ---------- ---------- ---- --- --------
1 domain.com TXT "MS=abc1234566" 600 Includes
2 domain.com TXT "MS=abc1234566" 600 Common
3 domain.com TXT "site-verification=abcd1234" 600 Includes
4 domain.com TXT "site-verification=abcd1234" 600 Common
5 www CNAME somedomain.com.test. 600 Includes
6 www CNAME somedomain.com. 600 Common
任何幫助將不勝感激。
凱爾
如何爲創紀錄的1相同,記錄3? –
糟糕。我的意思是記錄1與記錄2相同。編輯。謝謝。 – Kyle
我仍然有同樣的問題。記錄1和2之間的「位置」列是不同的。因此,根據您的標準,它們不是重複的。 –