【问题标题】:How to catch a Powershell terminating exception in C#?如何在 C# 中捕获 Powershell 终止异常?
【发布时间】:2021-12-17 11:24:17
【问题描述】:

如何在我的 C# 程序中为 cmdlet New-LocalGroup 捕获 Powershell 异常 AccessDeniedExceptionGroupExistsException

        try
        {
            PowerShell ps = PowerShell.Create();
            ps.AddCommand("New-LocalGroup");
            ps.AddParameter("Name", groupName);
            ps.AddParameter("Description", description);

            ps.Invoke();
        }
        catch (Exception ex)
        {
            if (ex is ?)

            throw ex;
        }

到目前为止,我有来自 Microsoft 文档 here 的此链接。

【问题讨论】:

    标签: c# powershell exception .net-4.0


    【解决方案1】:

    New-LocalGroup cmdlet 发出的是非终止 PowerShell 错误(除非您使用无效语法), 会转换为.NET 异常。

    相反,它们被写入 PowerShell 的错误输出流,您可以通过 ps.Streams.Error 进行检查

    更多信息请参见this answer

    【讨论】:

    • 我真的很想学 c# :(。你是怎么知道 cmdlet 是否是非终止错误?有没有简单的方法?
    • @AbrahamZinala,一般来说,大多数 cmdlet 错误不会终止。通过传递一个不存在的参数名称,您可以很容易地用 语法错误 引发 终止。如果您在给定情况下不确定,请使用以下技巧(以Get-Item 调用为例):'!' + (Get-Item nosuch):如果! 仍然打印,则错误不会终止。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 2016-12-17
    • 2010-10-16
    • 1970-01-01
    相关资源
    最近更新 更多