Suche…


Einführung

In diesem Thema wird kurz beschrieben, wie C # - oder VB .NET-verwalteter Code in einem PowerShell-Skript skriptiert und verwendet werden kann. In diesem Thema werden nicht alle Facetten des Cmdlets Add-Type untersucht.

Weitere Informationen zum Cmdlet Add-Type finden Sie in der MSDN-Dokumentation (für 5.1) hier: https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/add- Art

Parameter

Parameter Einzelheiten
-TypeDefinition <String_> Akzeptiert den Code als Zeichenfolge
-Sprache <String_> Gibt die Sprache des verwalteten Codes an. Akzeptierte Werte: CSharp, CSharpVersion3, CSharpVersion2, VisualBasic, JScript

Bemerkungen

Hinzugefügte Typen werden entfernt

In späteren Versionen von PowerShell wurde Remove-TypeData zu den PowerShell-Cmdlet-Bibliotheken hinzugefügt, die das Entfernen eines Typs innerhalb einer Sitzung ermöglichen. Weitere Informationen zu diesem Cmdlet finden Sie hier: https://msdn.microsoft.com/en-us/powershell/reference/4.0/microsoft.powershell.utility/remove-typedata

CSharp- und .NET-Syntax

Für die Erfahrung mit .NET ist es selbstverständlich, dass die unterschiedlichen Versionen von C # sich in ihrer Unterstützung für bestimmte Syntax stark unterscheiden können.

Wenn Powershell 1.0 und / oder -Language CSharp verwendet wird, wird für den verwalteten Code .NET 2.0 verwendet, dem eine Reihe von Features fehlen, die C # -Entwickler heutzutage normalerweise ohne weiteres verwenden, wie Generics, Linq und Lambda. Hinzu kommt der formale Polymorphismus, der in späteren Versionen von C # /. NET mit Standardparametern behandelt wird.

C # Beispiel

In diesem Beispiel wird gezeigt, wie einige grundlegende C # -Dateien in ein PowerShell-Skript eingebettet werden, dem Runspace / der Sitzung hinzugefügt und der Code innerhalb der PowerShell-Syntax verwendet wird.

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

VB.NET-Beispiel

In diesem Beispiel wird gezeigt, wie einige grundlegende C # -Dateien in ein PowerShell-Skript eingebettet werden, dem Runspace / der Sitzung hinzugefügt und der Code innerhalb der PowerShell-Syntax verwendet wird.

$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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow