Merge pull request #8793 from cchurch/powershell3_compat

Replace Get-FileHash with MD5 code that works on PowerShell 3.
This commit is contained in:
Chris Church 2014-08-28 21:25:06 -04:00
commit 2ddab7affc
2 changed files with 21 additions and 15 deletions

View file

@ -89,7 +89,10 @@ class ShellModule(object):
script = ''' script = '''
If (Test-Path -PathType Leaf "%(path)s") If (Test-Path -PathType Leaf "%(path)s")
{ {
(Get-FileHash -Path "%(path)s" -Algorithm MD5).Hash.ToLower(); $sp = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider;
$fp = [System.IO.File]::Open("%(path)s", [System.IO.Filemode]::Open, [System.IO.FileAccess]::Read);
[System.BitConverter]::ToString($sp.ComputeHash($fp)).Replace("-", "").ToLower();
$fp.Dispose();
} }
ElseIf (Test-Path -PathType Container "%(path)s") ElseIf (Test-Path -PathType Container "%(path)s")
{ {

View file

@ -34,27 +34,30 @@ $result = New-Object psobject @{
If (Test-Path $path) If (Test-Path $path)
{ {
Set-Attr $result.stat "exists" $TRUE; Set-Attr $result.stat "exists" $TRUE;
$info = Get-Item $path; $info = Get-Item $path;
If ($info.Directory) # Only files have the .Directory attribute. If ($info.Directory) # Only files have the .Directory attribute.
{ {
Set-Attr $result.stat "isdir" $FALSE; Set-Attr $result.stat "isdir" $FALSE;
Set-Attr $result.stat "size" $info.Length; Set-Attr $result.stat "size" $info.Length;
} }
Else Else
{ {
Set-Attr $result.stat "isdir" $TRUE; Set-Attr $result.stat "isdir" $TRUE;
} }
} }
Else Else
{ {
Set-Attr $result.stat "exists" $FALSE; Set-Attr $result.stat "exists" $FALSE;
} }
If ($get_md5 -and $result.stat.exists -and -not $result.stat.isdir) If ($get_md5 -and $result.stat.exists -and -not $result.stat.isdir)
{ {
$path_md5 = (Get-FileHash -Path $path -Algorithm MD5).Hash.ToLower(); $sp = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider;
Set-Attr $result.stat "md5" $path_md5; $fp = [System.IO.File]::Open($path, [System.IO.Filemode]::Open, [System.IO.FileAccess]::Read);
$hash = [System.BitConverter]::ToString($sp.ComputeHash($fp)).Replace("-", "").ToLower();
$fp.Dispose();
Set-Attr $result.stat "md5" $hash;
} }
Exit-Json $result; Exit-Json $result;