2009-04-12 7 views
42

Ho una buona conoscenza di C# e una comprensione di base di PowerShell. Sto usando Windows PowerShell CTP 3, che è stato davvero divertente. Ma voglio andare oltre la scrittura di script/funzioni. C'è qualcosa di interessante da fare con C#?Cosa posso fare con C# e Powershell?

risposta

34

Penso che la cosa più interessante si può fare con C# e PowerShell è quello di costruire cmdlet di. Questi sono essenzialmente plugin per PowerShell scritti nel codice gestito e funzionano come normali funzioni. Hanno una coppia verbo-sostantivo e molte delle funzioni che già usi sono in realtà dei cmdlet sotto il cofano.

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

+0

+1 Cmdlet possono essere davvero potente, per esempio per fornire un'interfaccia a riga di comando per applicazioni e servizi gestiti. –

8

La risposta è "dipende". Puoi fare una varietà di cose con C# (build windows, web client e client mobili).

È possibile richiamare script di PowerShell da C#. Guardate questo sito ==>link

È anche possibile convertire il codice C# per PowerShell ==>link

56

Al livello più alto si hanno due opzioni diverse si può da un programma C# ospite PowerShell ed eseguire comandi PowerShell tramite RunSpaces e tubazioni.

Oppure è possibile eseguire il codice C# all'interno di PowerShell. Questo può essere fatto in due modi. Con uno snapshot di PowerShell, una dll compilata che fornisce cmdlet PowerShell e provider di navigazione o tramite il nuovo cmdlet Add-Type, che consente di importare in modo dinamico il codice C#, VB, F #. Dalla aiuto

$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 per ospitare PowerShell come motore di scripting per la tua applicazione. Script .NET incorporato con un linguaggio che sta rapidamente diventando uno strumento di base. –

+0

C'è un modo per collegare codici VB? –

+3

David - Sì, c'è. Puoi usare [-Lingua {CSharp | CSharpVersion3 | VisualBasic | JScript}] flag –

5

È possibile guardare uno dei due modi:

  1. Come è possibile sfruttare PowerShell all'interno del vostro programma C#
  2. Come si può sfruttare programmazione C# all'interno PowerShell.

In una certa misura, sono domande abbastanza diverse con risposte diverse.

Da C# è possibile sfruttare il motore PowerShell, gli spazi di esecuzione, le linee di condotte ecc. Come per Exchante, è possibile utilizzare C# per eseguire tutte le operazioni della GUI, quindi richiamare un cmdlet di PowerShell per eseguire tutte le operazioni. Questa opzione è appropriata se puoi trovare i cmdlet o gli script di PowerShell da sfruttare.

Da PowerShell, si utilizza C# per espandere ciò che è possibile fare in PowerShell. È possibile creare cmdlts e provider per consentire ad altri di accedere ai dati dell'applicazione. Oppure puoi semplicemente creare oggetti che possono essere utilizzati all'interno di uno script PowerShell. Questa opzione è il modo in cui aiuti ad aprire la tua applicazione per essere gestita in modo più automatico.

Quindi, in base a ciò che si sta cercando di fare, si dispone di opzioni.

2

Scott Hanselman aka Hanselminutes ha diversi podcast su PowerShell, CmdLets, C# e altro ancora. È il migliore se vuoi imparare cos'è, come funziona e altro. Fai una ricerca sul suo sito web per prendere il podcast.

elenco di podcast correlati PS sul suo sito (in ordine cronologico 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