PowerShell 中的 AccessViolationException 和 HandleProcessCorruptedStateExceptions

AccessViolationException & HandleProcessCorruptedStateExceptions in PowerShell

在事件查看器中我看到错误(此处缩短):

Description: The process was terminated due to an unhandled exception.

Exception Info: System.AccessViolationException at CertStore.Win32Utils.CertEnumCertificatesInStore(IntPtr, IntPtr)

我知道您无法在 4.0 之后的任何 .NET 版本上捕获 AccessViolationException,这是设计使然。我找不到关于如何在 PowerShell 中处理它的文档

我的问题是如何捕获此异常并阻止它使我的脚本完全崩溃?在 C# 和其他语言中,我可以使用 [HandleProcessCorruptedStateExceptions],但我在 PowerShell 中找不到关于此 class 的任何文档。

提前致谢!

我不知道如何捕获异常,但看起来您正在使用证书存储,这导致了异常。我的问题是尝试枚举证书存储然后打开它会引发访问冲突异常。通过添加 'Read Only' 标志,我能够绕过违规错误并对任何其他错误使用正常的 try catch。

    $store = New-Object System.Security.Cryptography.X509Certificates.X509Store($computer, "LocalMachine") 
#Read only flag that fixed it.
    $store.Open("ReadOnly")
    $certs = $store.Certificates
    $store.Close();