从 C# PowerShell cmdlet 返回退出代码

本文关键字:退出 代码 返回 cmdlet PowerShell | 更新日期: 2023-09-27 18:34:07

我正在用C#编写一个PowerShell cmdlet,这个cmdlet是由我无法控制的父进程调用的。如果进程的退出代码为 3010,则父进程具有适当的机制来处理从 cmdlet 进行的持久重启。这里的问题是我无法弄清楚如何为退出代码提供值,因为 cmdlet 的入口点是:

protected override void ProcessRecord() { ... }

我读到cmdlet在研究$LASTEXITCODE PS变量时不会生成退出代码。总的来说,我对PowerShell相当陌生,所以我不确定我是否以正确的方式做到这一点。有没有人有办法让我完成我所描述的事情?

该 cmdlet 由 PS 脚本加载和调用,如下所示

Import-Module "C:'testing'test.dll"
Run-MyCmdlet

从 C# PowerShell cmdlet 返回退出代码

正在寻找一种方法来确定模块是否已加载或 cmdlet 指示它失败?

要确定模块是加载还是失败,请查看$ErrorActionPreference变量。(https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_preference_variables?view=powershell-7.2#erroractionpreference)

如果希望 cmdlet 报告终止错误,请查看Cmdlet.ThrowTerminatingError(ErrorRecord)方法。(https://learn.microsoft.com/en-us/dotnet/api/system.management.automation.cmdlet.throwterminatingerror?view=powershellsdk-7.0.0)