Назад | Перейти на главную страницу

Powershell 2: оптимальный способ вычисления контрольной суммы в файле?

Я запускаю сценарий для обработки файла CSV один раз в час. В начале скрипта мне нужно выйти, если файл CSV не изменился. Давайте представим, что временные метки файлов не подходят. (Я задаю этот вопрос из соображений образовательной ценности)

Я думал о том, чтобы проглотить весь файл и вычислить хеш для содержимого, например:

$fileData = get-content \path\to\file
$hashCode = $fileData.GetHashCode()

Затем я бы сохранил это содержимое от запуска к запуску, и, если хэш будет таким же при последующих запусках, выйду из моего сценария.

Есть ли лучший способ сделать это, опять же, предполагая, что временные метки файлов недоступны?

В конечном итоге вы будете использовать пространство имен System.Security.Cryptography для генерации этого хэша. В Расширения сообщества PowerShell уже сделали всю работу за вас. Существует командлет Get-Hash, который возвращает объект HashInfo, который можно использовать для сравнения.

Следует отметить одно: Get-HashCode() не предназначен для использования в качестве уникального идентификатора объекта. Каждый раз, когда вы запускаете его, он всегда будет другим, даже в одном и том же сеансе.

Проверьте Вот и Вот Чтобы получить больше информации.