[解決済み] ヌル値の式でメソッドを呼び出すことはできない
質問
私は、実行ファイル(ファイル)の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: 引数 "xxx" を受け入れる位置パラメーターが見つからない。
-
[解決済み] Send-MailMessage - リモートサーバーに接続できません。
-
[解決済み] リモートサーバーへのEnter-PSSessionが "access is denied "で失敗する。
-
[解決済み] Export-Csv - パス 'C:\export.csv' へのアクセスは拒否されました。
-
[解決済み] Add-ADGroupMember が ID を持つオブジェクトを見つけられません。
-
[解決済み] スクリプトへのパスが完全修飾されている場合、削除サーバーでのPowershellの実行に失敗する
-
[解決済み] Get-ADUser でのエラー: 無効な列挙コンテキスト
-
[解決済み] PowerShellでショートカットを作成する方法
-
[解決済み] PowerShellを使用してSFTPにファイルをアップロードする
-
[解決済み] Windows Server 2016で、すべてのPowerShellセッションのコマンド履歴を確認するにはどうすればよいですか?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】powershellにターミネーターがない。"
-
[解決済み] Send-MailMessage - リモートサーバーに接続できません。
-
[解決済み] Get-ChildItem -force で My Documents フォルダとその他の接続ポイントに "Access Denied" を報告する。
-
[解決済み] "get-wmiobject win32_process -computername" でエラー "Access denied , code 0x80070005" が発生する。
-
[解決済み] PowerShellで遠隔地からファイルをコピーする
-
[解決済み] PowerShellで使用するGetType、変数の違いについて
-
[解決済み] PowerShellでディレクトリを変更する
-
[解決済み] Powershellでギャラリーが利用できないというエラーが発生しました。
-
[解決済み] PowershellでTimeZoneを設定する方法
-
[解決済み】PowerShellでMD5チェックサムを取得する方法