fc2ブログ
loading

[Windows PowerShell] MD5ハッシュ値を出力する簡単スクリプト

Posted by Genesis on 22.2015 Windows PowerShell   0 comments
Windows PowerShell でMD5のハッシュ値を返す簡単スクリプト
SQL Server Integration Services(SSIS) でのMD5取得

MD5Hash.ps1
    1
2
3
4
5
param($filename)
$stream = New-Object IO.StreamReader $filename
$md5 =[System.Security.Cryptography.MD5]::Create().ComputeHash($stream.BaseStream);
$result = [System.BitConverter]::ToString($md5).Replace("-","").ToLower()
Return $result


・使い方(1)
コマンドプロンプト(cmd.exe) から実行する場合、次の様なコマンドで実行する。

    > powershell -ExecutionPolicy ByPass -command ".'C:\temp\MD5Hash.ps1' 'C:\temp\a.txt'"

オプションの"-ExecutionPolicy ByPass" は、OSに設定されたPowerShellスクリプトの実行ポリシーを無視してスクリプトを実行する。
大抵のOSは既定の実行ポリシーが"Restricted" のすべて実行しない状態になっている。

以下の画像は Microsoft社が無償で公開している fciv.exe とのMD5値比較。
memohtml20150622001.png
※クリックで拡大
fciv.exe は SHA-1 の値も出力することが可能なメリットがあるものの、Unicodeではない為か日本語のパスに対応していないデメリットがある。(2015/06/22 現在 Ver.2.05)


・使い方(2)
これを利用して SQL Server Integration Services(SSIS) でMD5を取得する。
スクリプト実行タスク を デザイナ の 制御フロー タブに入れ、以下の画像のように設定する。
英語環境のため説明は下記参照。
memohtml20150623001.png
※クリックで拡大
通常は Foreachコンテナなどでファイルパスは変数に格納するが、今回は主な話ではないので設定しない。
Executable は実行プログラムを指定するため、直接 PowerShell.exeを指定する。
Arguments は Executable で指定したプログラムに対して引数を指定する。
StandardOutputVariable はプログラムから返る結果を変数に格納するので、その変数を指定。
FailTaskIfReturnCodeIsNotSuccessValue はプロセス終了コードが SuccessValue で指定されている値と異なった場合、タスクを終了するかどうかを指定。
今回の場合、画像ではFalseにしており、ReturnにはMD5が返るようにしているものの、Trueで試しても問題ないことを確認。
WindowStyle は Executable で指定したプログラムを隠すか、ウィンドウ表示するか最小化するかなどを指定。

memohtml20150623002.png
※クリックで拡大
結果として変数にはMD5のハッシュ値が格納される。ただし、"\r\n"(0x0A0D)といった余分な改行コードが入るため、Replace関数やLeft関数で取り除くことが必要。
下のFor Debuggingのデータフロータスクはブレークポイントのために設置しているため無関係。


・動作確認表(スクリプト)
いずれも Windows Azure にて新規仮想マシン環境
Windows 7  Windows PowerShell 2.0  
Windows Server 2008 R2  Windows PowerShell 2.0  
Windows Server 2012  Windows PowerShell 3.0  
Windows 8.1  Windows PowerShell 4.0  
Windows Server 2012 R2  Windows PowerShell 4.0  


・関連
Microsoft Support / File Checksum Integrity Verifier ユーティリティの概要と入手方法
https://support.microsoft.com/ja-jp/kb/841290/ja

スポンサーサイト



  

menu

Memo.htmlへようこそ
タイトルの通りメモ帳のような感じで使われているブログです
ごゆっくりご覧になってください  

公開記事の一覧表示
リンク

recent entries

categories

mail

ご意見・ご要望・ご質問などお気軽にどうぞ
お返事に数日間ほどお時間を頂きますがご了承ください
下記のアドレス◎を半角@に変換してお送りください

Memo.html.info◎gmail.com

name:
address:
title:
main: