2012-10-01 8 views
8

Tengo un cmdlet PowerShell C# personalizado (que hereda de la clase base Cmdlet) y deseo poder identificar si el parámetro "-Verbose" se especificó al ejecutar el Cmdlet . Me doy cuenta de que WriteVerbose dará salida cuando se especifique el parámetro -Verbose, pero me gustaría hacer realmente otro código cuando se especifique -Verbose (es decir, no muestre los valores de Console.Write cuando se especifique -Verbose).En Cmdlet de C# PowerShell personalizado Identificar si se especificó -Verbose

Gracias,

John

Respuesta

7

Comprobar los parámetros de la envolvente del cmdlet de este modo:

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

MyInvocation no es miembro del objeto "this" (Cmdlet). La clase hereda de System.Management.Automation.Cmdlet. –

+0

¿Hay alguna razón para no heredar de PSCmdlet? –

+1

Tienes que heredar de PSCmdlet para acceder a los parámetros enlazados. También tenga en cuenta que Verbose estará en los parámetros vinculados incluso si se ha especificado como -Verbose: false, por lo que idealmente también debe verificar el valor del parámetro. – StephenD

0

Después de mucho excavar alrededor, esto funciona para mí. Visual Studio 2013, Powershell 3.0 cmdlet C# utilizando el espacio de nombres PsCmdlet. importación-módulo. \ Mytest.dll, entonces mytest -verbose

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

Si está utilizando el conjunto Microsoft.PowerShell.5.ReferenceAssemblies referencia el parámetro Verbose se incluye en la clase Cmdlet base. Puede usar WriteVerbose() para escribir cuando se incluye el interruptor. No hay necesidad de manejarlo usted mismo por más tiempo.

Cuestiones relacionadas