在自定义C#PowerShell Cmdlet中识别是否指定了-Verbose

时间:2012-10-01 16:56:54

标签: c# powershell cmdlet

我有一个自定义C#PowerShell Cmdlet(继承自Cmdlet基类),我希望能够识别在运行Cmdlet时是否指定了“-Verbose”参数。我意识到当指定-Verbose参数时,WriteVerbose将输出,但是当指定-Verbose时我想实际做一些其他代码(即,在指定-Verbose时不输出Console.Write值)。

谢谢,

约翰

3 个答案:

答案 0 :(得分:10)

检查cmdlet的绑定参数,如下所示:

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

答案 1 :(得分:0)

经过深入挖掘,这对我有用。 Visual Studio 2013,Powershell 3.0 使用PsCmdlet命名空间的C#cmdlet。 import-module。\ mytest.dll,然后是mytest -verbose

blnVerbose = this.MyInvocation.Line.ToLower().Contains("-verbose");

答案 2 :(得分:0)

如果您使用Microsoft.PowerShell.5.ReferenceAssemblies引用程序集,则Verbose基类中包含Cmdlet参数。包含开关时,可以使用WriteVerbose()进行写入。没有必要自己处理它。