J'ai une bonne compréhension de C# et une compréhension très basique de powershell. J'utilise Windows PowerShell CTP 3, ce qui est très amusant. Mais je veux aller au-delà de l'écriture de scripts/fonctions. Y a-t-il des choses intéressantes à faire avec C# ?
Réponses
Trop de publicités?Au plus haut niveau, vous disposez de deux options différentes Vous pouvez, à partir d'un programme C#, héberger PowerShell et exécuter des commandes PowerShell via des RunSpaces et des pipelines.
Ou vous pouvez, à partir de PowerShell, exécuter du code C#. Cela peut se faire de deux manières. Avec un snapin PowerShell, une dll compilée qui fournit des cmdlets PowerShell et des fournisseurs de navigation, ou via la nouvelle cmdlet Add-Type qui vous permet d'importer dynamiquement du code C#, VB, F#. A partir de l'aide
$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)
Je pense que la chose la plus intéressante que l'on puisse faire avec C# et PowerShell est de construire des CmdLet's. Il s'agit essentiellement de plugins pour PowerShell qui sont écrits en code géré et agissent comme des fonctions normales. Ils ont une paire verbe-nom et beaucoup des fonctions que vous utilisez déjà sont en fait des cmdlets sous le capot.
Vous pouvez le voir de deux façons : 1. Comment pouvez-vous tirer parti de PowerShell dans votre programme C# ? 2. Comment tirer parti de la programmation C# dans PowerShell.
Dans une certaine mesure, ce sont des questions tout à fait différentes avec des réponses différentes.
En C#, vous pouvez tirer parti du moteur PowerShell, des espaces d'exécution, des pipe-lines, etc. Comme c'est le cas avec Exchante, vous pouvez utiliser C# pour faire tout le travail de l'interface graphique, puis invoquer un cmdlet PowerShell pour faire tout le travail difficile. Cette option est appropriée si vous pouvez trouver des cmdlets ou des scripts PowerShell à exploiter.
À partir de PowerShell, vous utilisez C# pour étendre ce que vous pouvez faire dans PowerShell. Vous pouvez créer des cmdlts et des providers pour permettre à d'autres d'accéder aux données de l'application. Ou vous pouvez simplement créer des objets qui peuvent être utilisés dans un script PowerShell. Cette option est la manière dont vous aidez à ouvrir votre application pour qu'elle soit gérée de manière plus automatisée.
En fonction de ce que vous cherchez à faire, vous avez donc le choix.
Thomas (doctordns@gmail.com)
Scott Hanselman alias Hanselminutes a plusieurs podcasts sur Powershell, CmdLets, C# et plus encore. C'est le meilleur si vous voulez apprendre ce que c'est, comment ça marche et plus encore. Faites une recherche sur son site Web pour obtenir le podcast.
Liste des podcasts liés au PS sur son site (par ordre chronologique inverse) :
#190 : État des lieux de Powershell/Lee Holmes & Jason Shirk
#162 : Powershell 2.0
#49 : Powershell/Bruce Payette
#n°36 : Jeffrey Snover, architecte Powershell
#24 : Windows Powershell (MONAD), Partie II