PowerShell
Incorporation de code géré (C # | VB)
Recherche…
Introduction
Cette rubrique décrit brièvement comment le code géré C # ou VB .NET peut être scripté et utilisé dans un script PowerShell. Cette rubrique n'explore pas toutes les facettes de l'applet de commande Add-Type.
Pour plus d'informations sur l'applet de commande Add-Type, consultez la documentation MSDN (pour 5.1) ici: https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/add- type
Paramètres
Paramètre | Détails |
---|---|
-TypeDefinition <String_> | Accepte le code sous forme de chaîne |
-Langue <String_> | Spécifie la langue du code managé. Valeurs acceptées: CSharp, CSharpVersion3, CSharpVersion2, VisualBasic, JScript |
Remarques
Suppression de types ajoutés
Dans les versions ultérieures de PowerShell, Remove-TypeData a été ajouté aux bibliothèques d'applets de commande PowerShell, ce qui peut permettre la suppression d'un type au sein d'une session. Pour plus d'informations sur cette applet de commande, cliquez ici: https://msdn.microsoft.com/en-us/powershell/reference/4.0/microsoft.powershell.utility/remove-typedata
Syntaxe CSharp et .NET
Pour ceux qui expérimentent avec .NET, il va sans dire que les différentes versions de C # peuvent être radicalement différentes dans leur niveau de prise en charge de certaines syntaxes.
Si vous utilisez Powershell 1.0 et / ou -Language CSharp, le code géré utilisera .NET 2.0, qui manque de nombreuses fonctionnalités que les développeurs C # utilisent généralement sans y penser, telles que Generics, Linq et Lambda. En plus de cela, le polymorphisme formel est traité avec les paramètres par défaut dans les versions ultérieures de C # /. NET.
C # Exemple
Cet exemple montre comment intégrer certains éléments C # de base dans un script PowerShell, les ajouter à l'espace d'exécution / session et utiliser le code dans la syntaxe PowerShell.
$code = "
using System;
namespace MyNameSpace
{
public class Responder
{
public static void StaticRespond()
{
Console.WriteLine("Static Response");
}
public void Respond()
{
Console.WriteLine("Instance Respond");
}
}
}
"@
# Check the type has not been previously added within the session, otherwise an exception is raised
if (-not ([System.Management.Automation.PSTypeName]'MyNameSpace.Responder').Type)
{
Add-Type -TypeDefinition $code -Language CSharp;
}
[MyNameSpace.Responder]::StaticRespond();
$instance = New-Object MyNameSpace.Responder;
$instance.Respond();
Exemple VB.NET
Cet exemple montre comment intégrer certains éléments C # de base dans un script PowerShell, les ajouter à l'espace d'exécution / session et utiliser le code dans la syntaxe PowerShell.
$code = @"
Imports System
Namespace MyNameSpace
Public Class Responder
Public Shared Sub StaticRespond()
Console.WriteLine("Static Response")
End Sub
Public Sub Respond()
Console.WriteLine("Instance Respond")
End Sub
End Class
End Namespace
"@
# Check the type has not been previously added within the session, otherwise an exception is raised
if (-not ([System.Management.Automation.PSTypeName]'MyNameSpace.Responder').Type)
{
Add-Type -TypeDefinition $code -Language VisualBasic;
}
[MyNameSpace.Responder]::StaticRespond();
$instance = New-Object MyNameSpace.Responder;
$instance.Respond();