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();


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow