¿Qué puedo hacer con C# y Powershell?


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 interesante que hacer con C#?

Author: Kredns, 2009-04-12

5 answers

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

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

 34
Author: JaredPar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-03-06 21:59:59

En el nivel más alto, tiene dos opciones diferentes que puede usar desde un host de programa C# PowerShell y ejecutar comandos de PowerShell a través de espacios de ejecución y canalizaciones.

O puede ejecutar código C# desde PowerShell. Esto se puede hacer de dos maneras. Con un complemento de PowerShell, una dll compilada que proporciona cmdlets de PowerShell y proveedores de navegación, o mediante el nuevo cmdlet Add-Type, que permite importar dinámicamente código C#, VB, 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)
 59
Author: Scott Weinstein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-12 14:16:40

La respuesta es 'Depende'. Puedes hacer una variedad de cosas con c# (construir windows, clientes web y clientes móviles).

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

Incluso puede convertir su código c # a powershell = = > link

 8
Author: Srikar Doddi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-04-12 19:27:13

Puedes verlo de dos maneras:

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

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

Desde C# puede aprovechar el motor de PowerShell, los espacios de ejecución, las líneas de tubería, etc. Como se hace con Exchante, puede usar C# para hacer todas las cosas de la GUI, luego invocar un cmdlet de PowerShell para hacer todas las cosas difíciles. Esta opción es apropiado si puede encontrar cmdlets o scripts de PowerShell para aprovechar.

Desde PowerShell, se usa C# para expandir lo que se puede hacer en PowerShell. Puede crear cmdlts y proveedores para permitir que otros accedan a los datos de la aplicación. O simplemente puede crear objetos que se pueden 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 manera más automatizada.

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

 5
Author: Thomas Lee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-09 09:36:46

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

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

#190: Estado de Powershell/Lee Holmes & Jason Shirk
#162: Powershell 2.0
#49: Powershell/Bruce Payette
#36: Jeffrey Snover, Arquitecto de Powershell
#24: Windows Powershell (MÓNADA), Parte II

 2
Author: mP.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-14 09:37:51