Frage

Ich verwende System.Management.Automation, um ein Programm zu erstellen, das im Wesentlichen als Firewall dient, und ich habe mich gefragt, ob es in PowerShell 2 ein bestimmtes CMDLET gibt, um IPSec -Änderungen für einen Server zu verarbeiten? (dh das dupliziert die NETSH -IPSec -Funktionalität)?

Oder müsste ich einen schreiben? :P

Ich hoffe auf eine sauberere Lösung, als ein [Diagnostics.Process] innerhalb des PowerShell -Code zu rufen, um die NetSH -Abfragen zu bearbeiten, und ein CMDLet wäre besser.

Hat jemand Tipps oder Tricks? Oder sollte ich einfach anfangen, die Dokumentation "Schreiben eines Windows PowerShell Cmdlet Cmdlet" durch:

http://msdn.microsoft.com/en-us/library/dd878294%28vs.85%29.aspx

Danke für alle Ideen!

War es hilfreich?

Lösung

Leider gibt es zu diesem Zeitpunkt keine nativen PowerShell -CMDlets, die Netsh ähnliche Funktionen bieten.

Davon abgesehen müssten Sie keinen neuen Prozess abbauen, um Netsh -Befehle in einer PowerShell -Funktion auszuführen. Sie können jeden EXE ausführen, den Sie normalerweise in CMD in einer PS -Funktion oder einem Skript ausführen, so wie Sie es mit einem CMDLet tun würden. Sie können die Ausgabe in einer Variablen speichern und den Text mit Select -String oder -patch -Operator verarbeiten.

Genau wie ein Beispiel

Function Get-NetShIPInterface {
netsh int ip show int
}
$interface = Get-NetshIPinterface
$interface | select-string "Local Area Connection"

Schließlich werden wir Networking -CMDlets bekommen, aber im Moment kann Netsh die Arbeit erledigen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top