Proxy Functions

Folgende Situation:

Bei Problemen mit dem Drucken hilft es oft den Spoolerdienst neu zu starten. Für die Administratoren sind dies immer leidige Situationen. Also wird beschlossen dies an andere abzugeben. Um nicht jedem gleich Administrationsrechte zu geben, wird entschieden, via PowerShell Proxy Funktionen bereitzustellen. Solche Funktionen haben nur definierte Eigenschaften gegenüber der eigentlichen Funktion.

Die Kollegen sollen also eine Funktion bereitgestellt bekommen, mit der es nur möglich ist, den Spoolerdienst neu zu starten. Die grundlegende Funktion ist also:

Restart-Service

Um Proxy Funktionen besser zu verstehen schauen wir uns erstmal die Funktion genauer an:

Get-Command Restart-Service | fl *

Es soll nur noch möglich sein bestimmte Parameter zu nutzen und das nur mit definierten Eigenschaften. Also muss die Eigenschaft “Parameter” angepasst werden. Diese Metadaten müssen zunächst extrahiert werden:

$meta= New-Object System.Management.Automation.CommandMetadata (Get-Command -Name Restart-Service)

$meta beinhaltet jetzt nur noch die Metadaten der Funktion


Uns interessieren aber immer noch die Parameter:

$meta | Select-Object -ExpandProperty Parameters

Im nächsten Schritt soll nun die neue Funktion Restart-Service erstellt werden. Dazu wird die Klasse ProxyCommand genutzt und die Ausgabe in ein File geschrieben. Damit dieses File gleich eingebunden werden kann, wird es als Modul gespeichert. Außerdem werden Modulfunktionen immer vor den internen Funktionen angewandt.

Der Inhalt dieser Datei erinnert schon an eine Funktion:

 

Diese Datei wird jetzt nach unseren Wünschen bearbeitet. Das heißt erstmal wird diese als Funktion deklariert, indem der Beginn und das Ende angepasst werden “Function Restart-Service { […]}” Außerdem werden alle Parameter bis auf –Name und Force gelöscht und der Name Parameter bekommt zusätzlich ein ValidateSet mit dem Wert “Spooler”.

So haben wir dann folgendes Ergebnis:

 

 

Das Modul muss jetzt expliziert geladen werden und schon kann die Funktion genutzt werden.

Über die Tab- Vervollständigung ist zu erkennen, dass neben den Common Parametern nur – Force und –Name vorhanden sind und bei –Name nur Spooler.

 

2016-10-02-20_04_04-093016_1134_proxyfuncti4-png-%e2%80%8e-fotos

 

Gibt man nun einen anderen Dienst ein, kommt die erwartete Fehlermeldung:

Interessant wird es, wenn man sich die Hilfe anzeigen lassen möchte:

Es werden beide Funktionen angezeigt und um die Hilfe der Proxy Funktion anzeigen zu lassen, müssen wir einen kleinen Trick anwenden und den Modulnamen davor schreiben.

Zu erkennen ist jetzt nochmal, dass nur die von uns bestimmten Parameter und die CommonParameters angezeigt werden.

Jedoch kann man das jetzt schlecht für jede Funktion machen, die man delegieren möchte, vor allem, wenn man weiterhin an die ursprüngliche Funktion kommt.

Proxy Funktionen sind mittlerweile veraltet und es wird Just Enought Administration (JEA) genutzt.

Über Andreas Bittner

MCSA Server 2016, MCSA Server 2012R2, Exchange 2010 & SharePoint Devop
Dieser Beitrag wurde unter Allgemein, DevOps, Grundlage, PowerShell, Scripting abgelegt und mit , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.