在自定义的C# PowerShell Cmdlet中,如何确定是否指定了-Verbose参数

12
我有一个自定义的C#PowerShell Cmdlet(继承自Cmdlet基类),我想要能够识别运行Cmdlet时是否指定了“-Verbose”参数。我知道WriteVerbose将在指定了“-Verbose”参数时输出,但我想当指定“-Verbose”时执行其他一些代码(例如,在指定“-Verbose”时不输出Console.Write值)。
谢谢,
John
2个回答

10

检查 cmdlet 的绑定参数,像这样:

if (this.MyInvocation.BoundParameters.ContainsKey("Verbose"))
{
}

MyInvocation不是“this”(Cmdlet)对象的成员。该类继承自System.Management.Automation.Cmdlet。 - John Chapman
1
有没有不从PSCmdlet继承的理由? - Keith Hill
2
你几乎必须从PSCmdlet继承才能获得绑定参数。另外请注意,即使将其指定为-Verbose:false,Verbose也会在绑定参数中,因此最好还要检查参数的值。 - StephenD
PSCmdlet位于System.Management.Automation.PSCmdlet中,仅继承Cmdlet是不够的。 - Omzig

0
经过深入挖掘,这对我很有用。 Visual Studio 2013,Powershell 3.0 使用PsCmdlet命名空间的C# cmdlet。 导入模块.\mytest.dll,然后运行mytest -verbose。
blnVerbose = this.MyInvocation.Line.ToLower().Contains("-verbose");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接