2009-04-12 24 views
42

Tengo una comprensión decente de C# y una comprensión muy básica de powershell. Estoy usando Windows PowerShell CTP 3, que ha sido muy divertido. Pero quiero ir más allá de escribir scripts/funciones. ¿Hay algo genial que hacer con C#?¿Qué puedo hacer con C# y Powershell?

Respuesta

34

Creo que lo más interesante que puede hacer con C# y PowerShell es la construcción de cmdlet. Estos son esencialmente complementos de PowerShell que están escritos en código administrado y actúan como funciones normales. Tienen un par verb-sustantivo y muchas de las funciones que ya usa son en realidad cmdlets bajo el capó.

http://msdn.microsoft.com/en-us/magazine/cc163293.aspx

+0

1 cmdlets pueden ser muy poderosa, por ejemplo, para proporcionar una interfaz de línea de comando para aplicaciones y servicios administrados. –

8

La respuesta es 'Depende'. Puede hacer una variedad de cosas con C# (ventanas de compilación, clientes web y clientes móviles).

Puede invocar scripts de powershell desde C#. Mira este sitio ==>link

Puede incluso convertir su código C# a powershell ==>link

56

En el nivel superior tiene dos opciones diferentes que puede desde un C# programa de acogida PowerShell y ejecutar comandos de PowerShell a través de espacios de ejecución y tuberías.

O puede dentro de PowerShell ejecutar el código C#. Esto se puede hacer de dos maneras. Con un complemento de PowerShell, un dll compilado que proporciona cmdlets de PowerShell y proveedores de navegación, o mediante el nuevo cmdlet Add-Type, que le permite importar dinámicamente C#, VB, código F #. De la ayuda

$source = @" 
public class BasicTest 
{ 
    public static int Add(int a, int b) 
    { 
     return (a + b); 
    } 

    public int Multiply(int a, int b) 
    { 
     return (a * b); 
    } 
} 
"@ 

Add-Type -TypeDefinition $source 
[BasicTest]::Add(4, 3) 
$basicTestObject = New-Object BasicTest 
$basicTestObject.Multiply(5, 2) 
+8

+1 para alojar PowerShell como motor de scripting para su aplicación. Construido en scripts de .NET con un lenguaje que se está convirtiendo rápidamente en una herramienta básica. –

+0

¿Hay alguna forma de conectar los códigos VB? –

+3

David - Sí, hay. Puede usar el [-Language {CSharp | CSharpVersion3 | VisualBasic | JScript}] marca –

5

Puede mirarlo una de dos maneras:

  1. ¿Cómo se puede aprovechar PowerShell dentro de su programa en C#
  2. ¿Cómo puede aprovechar de programación C# dentro de PowerShell.

Hasta cierto punto, son preguntas bastante diferentes con diferentes respuestas.

Desde C# puede aprovechar el motor PowerShell, espacios de ejecución, tuberías, etc. Como se hace con Exchante, puede usar C# para hacer todo el material de la GUI y luego invocar un cmdlet PowerShell para hacer todo lo difícil. Esta opción es adecuada si puede encontrar cmdlets o scripts de PowerShell para aprovechar.

Desde PowerShell, utiliza C# para expandir lo que puede hacer en PowerShell. Puede crear cmdlts y proveedores para permitir que otros accedan a los datos de la aplicación. O puede simplemente crear objetos que se puedan usar dentro de un script de PowerShell. Esta opción es la forma en que ayuda a abrir su aplicación para que se administre de una manera más automatizada.

Así que dependiendo de lo que está buscando hacer, tiene opciones.

2

Scott Hanselman aka Hanselminutes tiene varios podcasts sobre Powershell, CmdLets, C# y más. Es lo mejor si quieres saber qué es, cómo funciona y más. Haga una búsqueda en su sitio web para tomar el podcast.

Lista de PS podcasts relacionados en su sitio (en orden cronológico inverso):

#190: State of Powershell/Lee Holmes & Jason Shirk
#162: Powershell 2.0
#49: Powershell/Bruce Payette
#36: Jeffrey Snover, Powershell architect
#24: Windows Powershell (MONAD), Part II

Cuestiones relacionadas