【问题标题】:In Custom C# PowerShell Cmdlet Identify If -Verbose Was Specified在自定义 C# PowerShell Cmdlet 中识别是否指定了 -Verbose
【发布时间】:2012-09-22 13:28:45
【问题描述】:

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

谢谢,

约翰

【问题讨论】:

    标签: c# powershell cmdlet


    【解决方案1】:

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

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

    【讨论】:

    • MyInvocation 不是“this”(Cmdlet)对象的成员。该类继承自 System.Management.Automation.Cmdlet。
    • 有理由不从 PSCmdlet 继承吗?
    • 您几乎必须从 PSCmdlet 继承才能获得绑定参数。另请注意,即使已将 Verbose 指定为 -Verbose:false,Verbose 也会在绑定参数中,因此理想情况下您也需要检查参数的值。
    • PSCmdlet 位于这里:System.Management.Automation.PSCmdlet,仅仅从 Cmdlet 继承是不行的。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-15
      • 1970-01-01
      • 2019-01-10
      • 1970-01-01
      • 2011-05-17
      • 2013-09-10
      • 2013-04-26
      • 1970-01-01
      • 2019-08-27
      相关资源
      最近更新 更多