Sto semplicemente cercando di creare uno script PowerShell che calcoli la somma md5 di un file eseguibile (un file).Non è possibile chiamare un metodo su un'espressione con valori null
Il mio script ps1:
$answer = Read-Host "File name and extension (ie; file.exe)"
$someFilePath = "C:\Users\xxx\Downloads\$answer"
If (Test-Path $someFilePath){
$stream = [System.IO.File]::Open("$someFilePath",[System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)
$hash = [System.BitConverter]::ToString($md5.ComputeHash($stream))
$hash
$stream.Close()
}
Else{
Write-Host "Sorry, file $answer doesn't seem to exist."
}
Su correre il mio script ricevo il seguente errore:
You cannot call a method on a null-valued expression.
At C:\Users\xxx\Downloads\md5sum.ps1:6 char:29
+ $hash = [System.BitConverter]::ToString($md5.Compute ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
Per la mia comprensione, questo errore significa che lo script sta tentando di fare qualcosa, ma un altro parte dello script non ha alcuna informazione per consentire il corretto funzionamento della prima parte dello script. In questo caso, $hash
.
Get-ExecutionPolicy
uscite Unrestricted
.
Che cosa sta causando questo errore?
Che cosa è esattamente la mia espressione di valore nullo?
Qualsiasi aiuto è apprezzato. Mi scuso se questo è banale e continuerò la mia ricerca.
Riferimenti:
How to get an MD5 checksum in PowerShell
Ciò che è '$ md5'? Quella variabile non è nel codice che mostri? Quello è nullo da quello che vedo – Matt
Come mi sono perso, non lo so. Grazie Matt per la pronta risposta. Il mio codice ora funziona perfettamente dopo aver aggiunto il mio oggetto. '$ md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider' – Ben
Possibile duplicato di [Non è possibile chiamare un metodo su un'espressione con valore null - generale] (http://stackoverflow.com/questions/31335195/you -cannot-call-a-method-on-a-null-valued-expression-general) –