Плагин Nagios для проверки суммы каталогов md5 в Windows PowerShell

Привет, я пытаюсь сделать свой собственный плагин для проверки суммы md5 внутри каталога и сравнения со старым.

Я написал скрипт ниже

$Patch1= "C:\Users\User\Downloads\"
$Patch2= "D:\sqls\"
# Check both hashes are the same
Function Get-DirHash($Path1) {
    gci -File -Recurse $Path1 | Get-FileHash -Algorithm MD5 | select -ExpandProperty Hash | Out-File "C:/Program Files/temp.txt" -NoNewline
    $temp = "C:/Program Files/temp.txt"
    $hash=Get-FileHash -Algorithm MD5 $temp
    $hash.Path=$Path1
    return $hash
}
Function Get-DirHash2($Path2) {
    gci -File -Recurse $Path2 | Get-FileHash -Algorithm MD5 | select -ExpandProperty Hash | Out-File "C:/Program Files/temp2.txt" -NoNewline
    $temp2 = "C:/Program Files/temp2.txt"
    $hash2=Get-FileHash -Algorithm MD5 $temp2
    $hash2.Path=$Path2
    return $hash2
}

Get-DirHash($Patch1).Hash
Get-DirHash2($Patch2).Hash
if (Get-DirHash($Patch1) -eq Get-DirHash2($Patch2)) {
    Write-Host 'Get-FileHash results are consistent' -ForegroundColor Green
} else {
    Write-Host 'Get-FileHash results are inconsistent!!' -ForegroundColor Red
}

Но вывод говорит, что хэши всегда равны

Algorithm       Hash                                                                   Path
---------       ----                                                                   ----
MD5             1BF506BB988C14CD8D1F04F239AE401C
MD5             1BF506BB988C14CD8D1F04F239AE401C
Get-FileHash results are consistent

Ребята, у вас есть идеи, как это сделать?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
114
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать один и тот же Get-DirHash для обоих путей.

$Patch1 = "D:\test1"
$Patch2 = "D:\test2"

function Get-DirHash([string]$Path) {
    # create a new temporary file (returns a FileInfo object)
    $temp = New-TemporaryFile
    Get-ChildItem -File -Recurse $Path | 
        Get-FileHash -Algorithm MD5 | 
        Select-Object -ExpandProperty Hash | 
        Out-File -FilePath $temp.FullName -NoNewline -Encoding ascii

    $hash = $temp | Get-FileHash -Algorithm MD5 | 
                    Select-Object Algorithm,Hash, @{Name = 'Path'; Expression = {$Path}}
    $temp | Remove-Item 
    return $hash
}

# Check both hashes are the same

$hash1 = Get-DirHash($Patch1)
$hash2 = Get-DirHash($Patch2)

if ($hash1.Hash -eq $hash2.Hash) {
    Write-Host 'Get-FileHash results are consistent' -ForegroundColor Green
} else {
    Write-Host 'Get-FileHash results are inconsistent!!' -ForegroundColor Red
}

# output the objects on screen
$hash1
$hash2

Используя две разные папки для $Patch1 и $Patch2, результат

Get-FileHash results are inconsistent!!

Algorithm Hash                             Path    
--------- ----                             ----    
MD5       3C13B5C3F5D3EFC25BAE427CAC194F8D D:\test1
MD5       DC21045CDDFF056E88933D82CB18DAEC D:\test2

Другие вопросы по теме