私はPowershellを使ってCOMオブジェクトメソッド呼び出しをテストしています。デザイン/コーディング/すべてが貧弱なため、このCOMオブジェクトメソッドはエラーが発生したときにハングします。私のデフォルトの本能は、その中から+ cを制御することですが、これはうまくいきません。私はハングしたCOMメソッド呼び出しを強制終了するためにPowershellを削除する必要がありますか?Powershellでハングしたプロセスを終了する方法はありますか?
ありがとうございます。
私はPowershellを使ってCOMオブジェクトメソッド呼び出しをテストしています。デザイン/コーディング/すべてが貧弱なため、このCOMオブジェクトメソッドはエラーが発生したときにハングします。私のデフォルトの本能は、その中から+ cを制御することですが、これはうまくいきません。私はハングしたCOMメソッド呼び出しを強制終了するためにPowershellを削除する必要がありますか?Powershellでハングしたプロセスを終了する方法はありますか?
ありがとうございます。
PowerShellプロセスのアドレス空間に存在するCOMオブジェクトのメソッドを呼び出していますか?そうであれば、呼び出しを解除するためにPowerShellを強制終了する必要があります。
EDIT MatthewはAppDomainsを使用してこの問題を解決できるかどうか尋ねました。
残念ながら、それはできません。ここで重要な点は、COMオブジェクトがネイティブコードを実行していることです。つまり、COMオブジェクトがハングする時点で、スレッドはネイティブコードになります。ネイティブコードでスレッドを解除するためにマネージコードから行うことは何もありません。 .Abort()の呼び出しも、スレッドがマネージコードに戻るまで有効になりません。
あなたは試すことができます:
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($obj)
またはパイププロセスを停止し、処理をするために、-Forceは同様に助けることができる加えます。
あなたは何を意味するのか正確にはわかりませんが、答えは「はい」だと思います。 PSでオブジェクトを "new-object -Com"でインスタンス化しました。 –
プロセスに当てはまりますか、またはAppDomainを分離のために使用することはできますか? –
@マッチューはい、私は私の答え – JaredPar