PowerShell
Bädda in hanterad kod (C # | VB)
Sök…
Introduktion
Detta ämne är att kort beskriva hur C # eller VB. NET-hanterad kod kan skriptas och användas i ett PowerShell-skript. Det här ämnet utforskar inte alla aspekter på cmdleten Add-Type.
För mer information om Add-Type cmdlet, se MSDN-dokumentationen (för 5.1) här: https://msdn.microsoft.com/en-us/powershell/reference/5.1/microsoft.powershell.utility/add- typ
parametrar
Parameter | detaljer |
---|---|
-TypeDefinition <String_> | Accepterar koden som en sträng |
-Språkvård <String_> | Anger språk för hanterad kod.Accepterade värden: CSharp, CSharpVersion3, CSharpVersion2, VisualBasic, JScript |
Anmärkningar
Ta bort tillagda typer
I senare versioner av PowerShell har Remove-TypeData lagts till i PowerShell-cmdletbibliotek som kan möjliggöra borttagning av en typ inom en session. För mer information om denna cmdlet, gå hit: https://msdn.microsoft.com/en-us/powershell/reference/4.0/microsoft.powershell.utility/remove-typedata
CSharp och .NET syntax
För dem som har erfarenhet av .NET säger det sig självt att de olika versionerna av C # kan vara ganska radikalt olika i deras stödnivå för viss syntax.
Om du använder Powershell 1.0 och / eller -Language CSharp, kommer den hanterade koden att använda .NET 2.0 som saknas i ett antal funktioner som C # -utvecklare vanligtvis använder utan andra tanke i dag, till exempel Generics, Linq och Lambda. Ovanpå detta är formell polymorfism, som hanteras med standardparametrar i senare versioner av C # /. NET.
C # Exempel
Detta exempel visar hur man bäddar in några grundläggande C # i ett PowerShell-skript, lägger till det i runspace / session och använder koden i PowerShell-syntax.
$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 Exempel
Detta exempel visar hur man bäddar in några grundläggande C # i ett PowerShell-skript, lägger till det i runspace / session och använder koden i PowerShell-syntax.
$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();