0

たとえばSystem.Management.Automation.dll、v10.0.10586を使用した古いアプリを更新していますNuGetPowerShell 3.0

私の新しいアプリは.NET 5、NuGet から System.Management.Automation と Microsoft.PowerShell.SDK の両方の v7.1.0 を追加しました。

しかし、古いバージョンで問題なく動作するテスト用の基本的なコードを実行しても、新しいバージョンでは動作せず、混乱しています

たとえば、以下のコード スニペットではエラーが発生します

Dim ps As PowerShell = PowerShell.Create()
ps.AddCommand("test-netconnection")
Dim result = ps.Invoke()
MsgBox(result(0).Properties("PingSucceeded").Value.ToString)
ps.Dispose()

エラー:

「System.Management.Automation.CommandNotFoundException: ''test-netconnection' コマンドがモジュール 'NetTCPIP' で見つかりましたが、モジュールを読み込めませんでした。」

以前は機能していたものが現在機能していない理由を教えてください。

標準のPowerShell 7コンソールから試してみましたが、正常にtest-netconnection動作します

4

1 に答える 1

0

問題は解決しました。間違ったコマンドを実行したこととは何の関係もありません!

PowerShell コンソールでは問題なく動作していましたが、VB で実行すると、最初に実行する必要があったため失敗していましたSet-ExecutionPolicy -ExecutionPolicy UnrestrictedSet-ExecutionPolicy -ExecutionPolicy RemoteSigned

Visual Studio デバッガーがクラッシュしてエラーを表示していましたが、主なエラーが表示されていました。

「System.Management.Automation.CommandNotFoundException: ''test-netconnection' コマンドがモジュール 'NetTCPIP' で見つかりましたが、モジュールを読み込めませんでした。」

あまり役に立ちませんでしたが、さらに調べてみると、内部例外の1つに実行ポリシーが言及されていたため、コードに以下を追加した後、正常に動作するようになりました

powershell.AddCommand("Set-ExecutionPolicy").AddParameter("Scope", "Process").AddParameter("ExecutionPolicy", "Unrestricted").AddParameter("Confirm", False).AddParameter("Force", True).Invoke()
于 2021-01-15T21:41:32.290 に答える