Добрый день. Хотела бы попросить помощи у сообщества. Хотя бы подсказку, в каком направлении двигаться (с Powershell я на Вы, опыта нет...)
Суть задачи: Есть интернет страница с таблицей, и есть выгруженный .csv файл с почти идентичной таблицей. Мне необходимо сделать так, чтобы PS сравнивал две эти таблицы и выводил результат, в какой строке какие расхождения. Т.е. не просто номер не совпадающей строки, а всю строку целиком. Я в тупике. Код прилагаю.
$inhalt = Invoke-WebRequest -uri 'тут адрес сайта' -WebSession $Cookie
$stammArtikelTabelle = $inhalt.ParsedHtml.getElementsByTagName("table");
$stammArtikelRow = $stammArtikelTabelle[0].getElementsByTagName("tr");
$importfile = "C:\test\Stammartikel_Export.CSV"
$import = Import-csv $importfile -Delimiter ";" -Encoding Default
function cleanInnerHtml($spalte) {
return $spalte.innerhtml.replace(" ","").trim();
}
$stammArtikelWebseite = @();
$jumpedOverFirstElement = $false
foreach($stammArtikelCol in $stammArtikelRow) {
if (!$jumpedOverFirstElement) { $jumpedOverFirstElement = $true; continue;}
$spalten = $stammArtikelCol.getElementsByTagName("td");
$newRoW = @{}
$newRow.artikelnummer = cleanInnerHtml $spalten[0]
$newRow.beschreibung = cleanInnerHtml $spalten[1]
$newRow.warengruppe = cleanInnerHtml $spalten[2]
$newRow.preisohne = cleanInnerHtml $spalten[3]
$newRow.preismit = cleanInnerHtml $spalten[4]
$stammArtikelWebseite += $newRoW
}
$stammArtikelwebseite[0]
#exit
Write-Host " "
$stammArtikelcsv = @();
foreach($row in $import) {
$matnr = $row.Matnr.TrimStart('0')
$bezeichnung = $row.Bezeichnung.Trim()
$ltext = $row.Langtext.Trim()
$waren = $row.Warengruppe
$noMWST = $row.'Preis ohne MWST'.Trim()
$MWST = $row.'Preis mit MWST'.Trim()
$hersteller = $row.'Hersteller '
foreach($spalte in $row){
$newRow1 = @{}
$newRow1.artikelnummer = $matnr
$newRow1.beschreibung = $bezeichnung
$newRow1.warengruppe = $waren
$newRow1.preisohne = $noMWST + " €"
$newRow1.preismit = $MWST + " €"
$stammArtikelcsv += $newRow1
}
}
$stammArtikelcsv[0]
foreach ($newRoW in $stammArtikelwebseite[0]) {
if ($stammArtikelcsv[0] -notcontains $newRoW) {
"$newRoW is extra"
}
}
В общем, я привела обе таблицы к общему виду, но теперь возникла сложность именно сравнить два массива, каждый из которых содержит в себе hash-таблицу.
Буду очень благодарна за любую помощь.
Дополнение:
Общий вид html-таблицы:
.csv выглядит примерно следующим образом:
0000000000000060186082;AccessPoint Cisco Catalyst 92120AXI ;AccessPoint/Repeater; 700,00 ; 833,00
Надо, чтобы построчно сравнивался массив, и, например, если цена поменялась - создавался еще один массив, где бы стояло наименование товара и изменившаяся цена.
Что сейчас выводит скрипт:
На данный момент видно, что я сделала из двух таблиц максимально похожие массивы, чтобы PS было удобнее сравнивать. Но как выполнить это сравнение, по прежнему остается для меня загадкой. Надеюсь, не слишком мудрено описала)