[解決済み] NULL 値の式でメソッドを呼び出すことはできない
質問
私は、実行ファイル(ファイル)のmd5の合計を計算するpowershellスクリプトを作成しようとしているだけです。
私の.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."
}
スクリプトを実行すると、以下のエラーが表示されます。
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
私の理解では、このエラーは、スクリプトが何かを行おうとしているが、スクリプトの別の部分が、スクリプトの最初の部分が適切に動作するための情報を持っていないことを意味します。この場合
$hash
.
Get-ExecutionPolicy
出力
Unrestricted
.
このエラーの原因は何ですか?
私のNULL値式は一体何なのでしょうか?
どんなことでもご相談ください。些細なことでしたら申し訳ございませんが、引き続き調査させていただきます。
参考文献
解決方法は?
簡単な答えは、宣言されていない(NULL)変数があることです。この場合、それは
$md5
. あなたが書いたコメントから、これはあなたのコードの別の場所で宣言される必要があります。
$md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
存在しないメソッドを実行しようとしているため、エラーが発生しました。
PS C:\Users\Matt> $md5 | gm
TypeName: System.Security.Cryptography.MD5CryptoServiceProvider
Name MemberType Definition
---- ---------- ----------
Clear Method void Clear()
ComputeHash Method byte[] ComputeHash(System.IO.Stream inputStream), byte[] ComputeHash(byte[] buffer), byte[] ComputeHash(byte[] buffer, int offset, ...
は
.ComputeHash()
の
$md5.ComputeHash()
はNULL値式でした。意味不明な文字を入力しても、同じ効果が得られます。
PS C:\Users\Matt> $bagel.MakeMeABagel()
You cannot call a method on a null-valued expression.
At line:1 char:1
+ $bagel.MakeMeABagel()
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
PowerShellはデフォルトで、次のように定義されているようにこれを可能にします。 ストリクトモード
<ブロッククオートいつ 設定-StrictMode がオフの場合、初期化されていない変数 (バージョン 1) は、型によって 0 (ゼロ) または $Null の値を持つものと見なされます。存在しないプロパティへの参照は$Nullを返し、有効でない関数構文の結果は、エラーによって異なります。名前のない変数は許可されません。
関連
-
[解決済み] powershell で再利用するために資格情報を保存すると、ConvertTo-SecureString : Key not valid for use in specified state というエラーが発生する。
-
[解決済み] Export-Csv - パス 'C:\export.csv' へのアクセスは拒否されました。
-
[解決済み] PowerShell起動時に「動的操作はhomogenous appdomainでしか実行できない」エラーが発生する。
-
[解決済み] Invoke-Sqlcmd エラー : リモート DB サーバを呼び出すために powershell を実行すると、ユーザ xxxx のログインに失敗しました。
-
[解決済み] [System.Web.Security.Membership]::GeneratePassword() - Type Not found
-
[解決済み] PowerShellでファイルを一行ずつ読み込む
-
[解決済み] PowerShellでディレクトリを変更する
-
[解決済み] PowerShellで改行するには?
-
[解決済み] PowerShellを使用してSFTPにファイルをアップロードする
-
[解決済み] Join-Pathを使って、2つ以上の文字列をファイルパスに結合するにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Get-ADUserとフィルタを含むForEach-Objectループ
-
[解決済み] Get-ADUser でのエラー: 無効な列挙コンテキスト
-
[解決済み] "get-wmiobject win32_process -computername" でエラー "Access denied , code 0x80070005" が発生する。
-
[解決済み] Windows PowerShellでファイルが存在するかどうかをチェックする?
-
[解決済み] PowerShellで遠隔地からファイルをコピーする
-
[解決済み] PowerShell 'Or' ステートメント
-
[解決済み] Powershellでギャラリーが利用できないというエラーが発生しました。
-
[解決済み] Windows Server 2016で、すべてのPowerShellセッションのコマンド履歴を確認するにはどうすればよいですか?
-
[解決済み] powershellの&マークはどういう意味ですか?
-
[解決済み】PowerShellでMD5チェックサムを取得する方法