在事件查看器中,我看到错误(此处缩写):
描述:由于未处理的异常,该进程已终止。
异常信息: System.AccessViolationException at CertStore.Win32Utils.CertEnumCertificatesInStore(IntPtr,IntPtr)
我知道自4.0以来你无法在任何.NET版本上捕获AccessViolationException,而这是设计的。我找不到关于如何在PowerShell中处理它的文档
我的问题是如何捕获此异常并阻止它完全崩溃我的脚本?在C#和其他语言中,我可以使用[HandleProcessCorruptedStateExceptions]
,但我无法在PowerShell中找到有关此类的任何文档。
提前谢谢!
答案 0 :(得分:0)
我不知道如何捕获异常,但看起来你正在使用cert存储并导致异常。我的问题是尝试枚举通过证书存储区然后打开它是抛出访问冲突异常。通过添加“只读”标志,我能够解决违规错误并使用正常的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();