Viele wissen, dass man in Powershell auch direkt .Net-Klassen verwenden kann. Diese werden dann zur Laufzeit kompiliert.
Was viele nicht wissen, ist dass man aber auch „reinen“ .Net Code in Powershell verwenden kann.
Index
C# Code in Powershell kompilieren und verwenden
Ich möchte Ihnen in diesem Artikel zeigen, wie Sie .Net Code und DLLs in PowerShell einbinden können.
Beginnen möchte ich mit dem Kompilieren von .Net Code in PowerShell:
Add-Type -TypeDefinition @“
using System;
using System.IO;
public class Permissions
{
public static System.Collections.Hashtable GetPermissions(string path) {
}
}
„@
Der Code wird dann zum Start-Zeitpunkt des Skripts im Speicher kompiliert. Die Klasse lässt sich danach wie eine normale .Net Klasse ensprechen:
$permissions = [Permissions]::GetPermissions($path)
Wichtig: Bitte beachten Sie, dass keine globalen Variablen die im Powershell-Teil des Skripts definiert wurden zur Verfügung stehen. Weiterhin muss „Add-Type“ immer an erster Stelle im Skript stehen.
Vorteile von .Net Code in PowerShell
Die Vorteile dieser Technik sind sehr vielseitig.
Zum einen ist .Net Code (C#) in den meisten Fällen schneller als reine Powershell-cmdlets (besonders wenn es um File-System-Operationen geht).
Zum anderen existiert manchmal schon .Net Code (C#) verhanden, den man verwenden möchte.
Fertige DLLs in Powershell einbinden
Wenn Sie nicht nur vorhandenen .Net Code verwenden möchten, gibt es auch die Möglichkeit eine DLL einzubinden. Um die Funktionen einer DLL zu verwenden, gehen Sie wie folgt vor.
Fertige DLLs lassen sich einbinden mit:
$assembly = [Reflection.Assembly]::LoadFile(„c:\path\file.dll“)
$instance = New-Object Class.Of.Assembly
$instance.Property1 = $variable1
$instance.Property2 = $variable2
$instance.Property3 = $variable3
$result = $instance.function()
Leave a Reply
<p>Danke für Ihre Anregungen, Fragen und Hinweise.<br/>Infos zum <a href="https://www.active-directory-faq.dekontakt/">Datenschutz</a></p>