there is no direct way to calculate an MD5 in PowerShell
Isso não é inteiramente verdade. Lembre-se de que o PowerShell tem acesso a toda a pilha .NET e certamente é possível calcular um hash MD5 no .NET.
Se o seu objetivo é obter um hash MD5, você pode evitar o WMI e usar algo assim:
$crypto = [System.Security.Cryptography.MD5]::Create()
$data = [System.IO.File]::ReadAllBytes("\path\to\file")
$md5 = [System.Convert]::ToBase64String($crypto.ComputeHash($data))
Em que md5
é um valor codificado em base64 do hash MD5.
Ou se você precisar de uma representação hexadecimal em vez de base64 do hash:
$md5 = [System.BitConverter]::ToString($crypto.ComputeHash($data)).Replace("-", "")
Você pode, claro, incluir isso em uma boa função do PowerShell:
Function MD5Hash
{
param ($file)
$crypto = [System.Security.Cryptography.MD5]::Create()
$data = [System.IO.File]::ReadAllBytes($file)
[System.BitConverter]::ToString($crypto.ComputeHash($data)).Replace("-", "")
}
E invoque da seguinte forma:
MD5Hash "\path\to\file"