J'ai une compréhension décente de C # et une compréhension très basique de PowerShell. J'utilise Windows PowerShell CTP 3, ce qui est vraiment amusant. Mais je veux aller au-delà de l'écriture de scripts/fonctions. Y a-t-il des trucs sympas à voir avec C #?
Je pense que la chose la plus intéressante que vous pouvez faire avec C # et PowerShell est de construire CmdLet. Ce sont essentiellement des plugins pour PowerShell qui sont écrits en code managé et agissent comme des fonctions normales. Ils ont une paire verbe-nom et de nombreuses fonctions que vous utilisez déjà sont en fait des applets de commande sous le capot.
Au plus haut niveau, vous avez deux options différentes. Vous pouvez à partir d'un programme C # héberger PowerShell et exécuter des commandes PowerShell via 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 composant logiciel enfichable PowerShell, une DLL compilée qui fournit des applets de commande PowerShell et des fournisseurs de navigation, ou via la nouvelle applet de commande Add-Type, qui vous permet d'importer dynamiquement du code C #, VB, F #. 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)
Vous pouvez le regarder de deux manières:
Dans une certaine mesure, ce sont des questions très différentes avec des réponses différentes.
À partir de C #, vous pouvez tirer parti du moteur PowerShell, des espaces d'exécution, des pipelines, etc. Comme pour Exchante, vous pouvez utiliser C # pour effectuer toutes les tâches de l'interface graphique, puis appeler une applet de commande PowerShell pour effectuer toutes les tâches matérielles. Cette option est appropriée si vous pouvez trouver des applets de commande ou des scripts PowerShell à exploiter.
À partir de PowerShell, vous utilisez C # pour développer ce que vous pouvez faire dans PowerShell. Vous pouvez créer des cmdlts et des fournisseurs pour permettre à d'autres d'accéder aux données d'application. Ou vous pouvez simplement créer des objets qui peuvent être utilisés dans un script PowerShell. Cette option est la façon dont vous aidez à ouvrir votre application pour qu'elle soit gérée de manière plus automatisée.
Donc, selon ce que vous cherchez à faire, vous avez des options.
Scott Hanselman aka Hanselminutes a plusieurs podcasts sur Powershell, CmdLets, C # et plus. C'est le meilleur si vous voulez apprendre ce que c'est, comment cela fonctionne et plus encore. Faites une recherche sur son site Web pour récupérer le podcast.
Liste des podcasts liés à PS sur son site (dans l'ordre chronologique inverse):
# 190: État de Powershell/Lee Holmes & Jason Shirk
# 162: Powershell 2.
# 49: Powershell/Bruce Payette
# 36: Jeffrey Snover, architecte Powershell
# 24: Windows Powershell (MONAD), Partie II