|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Массовое определение контрольных сумм файлов |
|
|
PowerShell - Массовое определение контрольных сумм файлов
|
|
Старожил Сообщения: 184 |
Добрый день! Хочу в папке Windows всем exe файлам определить контрольные суммы (в дальнейшем и не только в Windows). Через PowerShell:
param (
[string]$FolderPath, # c:\windows
[string]$LogFile = "c:\1\checksums.log"
)
if (-Not (Test-Path $FolderPath))
{
Write-Host "Путь не найден: $FolderPath"
exit
}
$files = Get-ChildItem -Path $FolderPath -Recurse -Filter *.exe
$logFileStream = New-Object System.IO.StreamWriter($LogFile, $false)
foreach ($file in $files) {
try {
$hash = Get-FileHash -Path $file.FullName -Algorithm SHA256
$logEntry = "{0} {1}" -f $hash.Hash, $file.FullName
$logFileStream.WriteLine($logEntry)
Write-Host "Контрольная сумма для $($file.FullName): $($hash.Hash)"
} catch {
Write-Host "Ошибка при обработке файла $($file.FullName): $_"
}
}
$logFileStream.Close()
Write-Host "Результаты сохранены в $LogFile"
Цитата:
Цитата:
|
|||
|
Отправлено: 13:19, 28-12-2024 |
|
(*.*) Сообщения: 36572
|
Профиль | Сайт | Отправить PM | Цитировать DJ Mogarych, значит исправили
|
|
------- Отправлено: 19:54, 29-12-2024 | #11 |
|
Старожил Сообщения: 184
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
Цитата:
|
||
|
Отправлено: 02:31, 30-12-2024 | #12 |
|
fascinating rhythm Сообщения: 6699
|
Профиль | Отправить PM | Цитировать Напишите правильно строку с Checksum, сейчас у вас одна половина из одного варианта, а вторая - из другого.
|
|
------- Отправлено: 08:54, 30-12-2024 | #13 |
|
Старожил Сообщения: 232
|
Профиль | Отправить PM | Цитировать Самый простой вариант:
# Укажите путь к папке
$folderPath = "C:\MyFolder"
# Выберите алгоритм хеширования (MD5, SHA1, SHA256)
$hashAlgorithm = "SHA256"
# Получите список файлов в папке
$files = Get-ChildItem -Path $folderPath -File
# Переберите все файлы и вычислите контрольную сумму
foreach ($file in $files) {
# Вычислите контрольную сумму с помощью выбранного алгоритма
$hash = Get-FileHash -Algorithm $hashAlgorithm -Path $file.FullName
# Выведите информацию о файле и его контрольной сумме
Write-Host "Файл: $($file.Name)"
Write-Host "Контрольная сумма ($hashAlgorithm): $($hash.Hash)"
Write-Host ""
}
|
|
Отправлено: 19:16, 31-12-2024 | #14 |
|
fascinating rhythm Сообщения: 6699
|
Профиль | Отправить PM | Цитировать Uragan66, выше писали о том, что Get-FileHash недоступен на древних операционках.
|
|
------- Отправлено: 19:30, 01-01-2025 | #15 |
|
Ветеран Сообщения: 1758
|
Цитата Uragan66:
|
|
|
Отправлено: 10:14, 03-01-2025 | #16 |
|
fascinating rhythm Сообщения: 6699
|
Профиль | Отправить PM | Цитировать Foreigner, работает и в 5.1.
|
|
------- Отправлено: 11:46, 03-01-2025 | #17 |
|
Crazy Сообщения: 1234
|
Профиль | Отправить PM | Цитировать Цитата DJ Mogarych:
но, это если ТС-у ещё нужно, до сих пор. ![]() |
|
|
------- Отправлено: 13:59, 03-01-2025 | #18 |
|
Новый участник Сообщения: 17
|
Прежде всего Get-FileHash является функцией, код которой вполне можно подсмотреть:
Однако копировать её код, в надежде "портировать" под XP, идея заведомо обречённая на провал, так как PowerShell второй версии, которая является пределом для XP, отличается рантайм либой. Поэтому придётся писать нечто вроде: $a = [Security.Cryptography.SHA256]::Create()
-join$a.ComputeHash([IO.File]::ReadAllBytes("$env:windir\explorer.exe")).ForEach{$_.ToString('x2')}
$a.Dispose()
|
|
Отправлено: 20:56, 03-01-2025 | #19 |
|
Старожил Сообщения: 184
|
Профиль | Отправить PM | Цитировать Цитата YuS_2:
|
|
|
Отправлено: 15:55, 04-01-2025 | #20 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| CMD/BAT - Массовое переименование файлов | Super_Kolobok | Скриптовые языки администрирования Windows | 4 | 19-05-2024 16:28 | |
| Программы для сверки контрольных сумм | KaSpieC 666 | Хочу все знать | 17 | 16-12-2014 18:39 | |
| CMD/BAT - Сравнение контрольных сумм md5 | vodka | Скриптовые языки администрирования Windows | 11 | 09-01-2013 07:11 | |
| Прочие - Программы для подсчёта контрольных сумм файлов | ALEXEY_DFD | Программное обеспечение Windows | 14 | 18-11-2011 15:30 | |
| C/C++ - Получение контрольных сумм файлов (MD5, и т.д.) и их проверка в Online-сервисах | Drongo | Программирование и базы данных | 49 | 30-08-2010 18:39 | |
|