Sadece bir yürütülebilir dosyanın (bir dosya) md5 toplamını hesaplayan bir powershell komut dosyası oluşturmaya çalışıyorum.Null değerli bir ifade üzerinde bir yöntem çağıramıyorsunuz
Benim .ps1 komut dosyası: Aşağıdaki hatayı alıyorsunuz benim komut dosyası çalıştıran üzerine
$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."
}
: Anladığım kadarıyla
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
, bu hata komut bir şeyler yapmaya çalışırken, ancak başka demektir komut dosyasının bir kısmı, komut dosyasının ilk bölümünün düzgün çalışmasına izin verecek herhangi bir bilgi içermez. Bu durumda, $hash
. Çıkışlar Unrestricted
.
Get-ExecutionPolicy
çıkışlar.
Bu hata neden oluyor?
Boş değerli ifadem tam olarak nedir?
Herhangi bir yardım için teşekkür ederiz. Bu önemsiz ve eğer araştırmam devam ederse özür dilerim.
Referanslar:
How to get an MD5 checksum in PowerShell
nedir '$ md5' tanımlanan bu durum sağlar? Bu değişken, gösterdiğiniz kodda değil mi? Gördüğümden null bu – Matt
Bunu nasıl özledim, bilmiyorum. Hızlı cevap için teşekkürler Matt. Kodum şimdi nesneyi ekledikten sonra mükemmel bir şekilde çalışıyor. '$ md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider' – Ben
Olası çoğaltılabilir [Null değerli bir ifadede bir yöntemi çağıramazsınız - genel] (http://stackoverflow.com/questions/31335195/you -canlama-çağrı-bir-on-bir-null değerli ifade-genel) –