PowerShell Сравнить результаты - PullRequest
0 голосов
/ 12 июня 2019

У меня есть текстовый файл, в котором я храню некоторые имена файлов резервных копий с их хэш-таблицами.У меня есть другой текстовый файл, где я храню только хеш-таблицы.Я добавляю второй текстовый файл под первыми документами.Я хочу сравнить эти хеш-таблицы, если они одинаковые, я хочу добавить около хеш-таблицы -2, иначе я хочу добавить около хеш-таблицы -1.

  • SHA256, 89EC548C14582B2BDC7739BC0FA007, C: \ WINDOWS \ system32@Ap.png"

  • " SHA256 "," F3B178AD338023AA3CBCB071CC0063 "," C: \ WINDOWS \ system32@biage.png "

  • " SHA256 ","383D8CBFCD078B3D661655A816676F "," C: \ WINDOWS \ system32@edage.mui "

  • " 89EC548C14582B2BDC7739BC0FA007 "-2

  • FF 760F0F0686B0996BF1026 *

  • "0A57D7F60CDD9DB6F6F461BBC464FD" -1

  • "F3B178AD338023AA3CBCB071CC0063" -2

  • 1047A 67676676 667F0679607607607607607607607607607679679756607957607679756679757607755A

  • "383D8CBFCD078B3D661655A816676F" -2

Я использую добавить хэши в файл txt из другого файла, но можетне сравнить:

$From = Get-Content -Path .\CopyFromFile.txt

Add-Content -Path .\CopyToFile.txt -Value $From

Get-Content -Path .\CopyToFile.txt

Ответы [ 2 ]

1 голос
/ 12 июня 2019

Извините, но я не думаю, что это разумный подход для создания текстового файла с различными форматами внутри.

Почему бы не использовать более PowerShell как способ с Import-Csv и Compare-Object создание нового объекта, который также может быть сохранен как файл csv.

Предполагается, что вышеуказанные данные хранятся в файлах hashes.csv и чистые хэши в hashes.txt

Этот небольшой скрипт (line)

Compare-Object -ref (Import-Csv .\hashes.csv -Header Algorythm,Hash,File) `
               -dif (Import-csv .\hashes.txt -Header Hash) -Property Hash -PassThru -IncludeEqual

дает такой вывод:

Algorythm Hash                           File                          SideIndicator
--------- ----                           ----                          -------------
SHA256    89EC548C14582B2BDC7739BC0FA007 C:\WINDOWS\system32@Ap.png    ==
SHA256    0B99B2576F1FA0689FF6E03462076C C:\WINDOWS\system32@AudioTot  ==
SHA256    F3B178AD338023AA3CBCB071CC0063 C:\WINDOWS\system32@biage.png ==
SHA256    383D8CBFCD078B3D661655A816676F C:\WINDOWS\system32@edage.mui ==
          0A57D7F60CDD9DB6F6F461BBC464FD                               =>
          7BCA060610F1A753A881593F967G47                               =>

, который можно настроить, чтобы заменить SideIndicator вашими значениями -2, -1

1 голос
/ 12 июня 2019

Проверьте, поможет ли следующий код решить вашу проблему.
Код был обернут в блок сценария для создания новой области и сохраните значения $ErrorActionPreference и $OFS предпочтительные переменные .
Метод ReadAllText использовался для чтения содержимого файла CopyToFile.txt.

& {
  $ErrorActionPreference = 'Stop'
  $OFS = ','
  try {
    $To = [System.IO.File]::ReadAllText('.\CopyToFile.txt')
    $From = & {
      # Add a line if the file .\CopyToFile.txt did not end with a newline.
      if ( -not $To.EndsWith([System.Environment]::NewLine) ) { '' }
      Get-Content -Path .\CopyFromFile.txt |
        ForEach-Object { "$($_, @(-1, -2)[[int]$To.Contains($_)])" }
    }
    Add-Content -Path .\CopyToFile.txt -Value $From
    Get-Content -Path .\CopyToFile.txt
  } catch {
    $_ | Out-String | Write-Warning
  }
}

Вывод:

"SHA256","89EC548C14582B2BDC7739BC0FA007","C:\WINDOWS\system32@Ap.png"
"SHA256","0B99B2576F1FA0689FF6E03462076C","C:\WINDOWS\system32@AudioTot"
"SHA256","F3B178AD338023AA3CBCB071CC0063","C:\WINDOWS\system32@biage.png"
"SHA256","383D8CBFCD078B3D661655A816676F","C:\WINDOWS\system32@edage.mui"
"89EC548C14582B2BDC7739BC0FA007",-2
"0B99B2576F1FA0689FF6E03462076C",-2
"0A57D7F60CDD9DB6F6F461BBC464FD",-1
"F3B178AD338023AA3CBCB071CC0063",-2
"7BCA060610F1A753A881593F967G47",-1
"383D8CBFCD078B3D661655A816676F",-2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...