function GetHashSHA1([string]$filename) { [Reflection.Assembly]::LoadWithPartialName("System.IO") [Reflection.Assembly]::LoadWithPartialName("System.Security.Cryptography") $hashAlgolithm = New-Object System.Security.Cryptography.HMACSHA1 $filestream = New-Object System.IO.FileStream($filename,[System.IO.FileMode]::Open) $HashValue = $hashAlgolithm.ComputeHash($filestream) $fileStream.Close() $HexString = New-Object System.Text.StringBuilder $HashValue | ForEach-Object{[void]$HexString.Append($_.ToString("X2"))} return $HexString.ToString().ToLower() }
今時っぽくSHA1で。5行目を変更すればSHA256とかMD5とか思いのまま。これで構成管理スクリプトの基礎編ができた。ところで…PowerShell.exeって、cdでPSドライブ変えても、絶対パスで渡さない限り、起動フォルダを補うって言う仕様なのかな?
- c:\Documents\hogeで起動される
- cd d:\temp
- New-Object System.IO.FileStream("hoge.txt") //hoge.txtはd:\tempにある
と実行するとめでたく例外。d:\temp\hoge.txtとフルパスで指定すると、正常。