PowerShell – PSProvider / PSDrive

Provider bilden neben den CMDLets eine der Grundlagen der PowerShell. Hierarchisch gegliederte Informationsspeicher, wie die Registry oder das Active Directory, werden so einfach verwaltbar, wie z.B. ein Dateisystem.

Sehen wir uns doch mal die verfügbaren Provider mit Get-PSProvider an.

PSProvider-1

Am einfachsten verständlich wird das Prinzip am Provider FileSystem. Unter Drives sind alle Laufwerke angegeben, die dann wie gewohnt adressierbar sind. In unserem Beispiel C, E, D, H…

Alle angebotenen virtuellen Laufwerke sehen Sie mit Get-PSDrive.

6-kopie

Im Folgenden sehen Sie zur Verdeutlichung einige Beispiele:

Filesystem

Registry

PSProvider-3

Am Beispiel des W32Time wird auch schnell deutlich, wie die Einstellungen oder Parameter eines Registry Keys geändert werden können. Da der Befehl dir nur ein Alias für Get-ChildItem ist, können wir natürlich auch mit weiteren CMDLets arbeiten, wie z.B. Get-ItemProperty, über das wir im Beispiel den eingetragenen NtpServer auslesen können.

PSProvider-4

Nun kann auch jedes Item entsprechend gesetzt, bzw. verändert werden (entsprechende Berechtigungen natürlich vorausgesetzt) und so im Beispiel der NtpServer abgeändert werden. Dazu ist das CMDLet Set-ItemProperty erforderlich.

PSProvider-5

Environment

Genau die gleiche Funktionsweise bietet z.B. der Provider Environment. Dieser stellt das virtuelle Laufwerk Env zur Verfügung, über das alle Systemvariablen erreichbar und ihren Möglichkeiten nach auch editierbar sind.

PSProvider-7

Am Beispiel der Variablen Path, bei der es sich um einen String handelt.

Hinzufügen eine Pfades:

$env:Path = $env:Path + “;C:\_Marco”

Entfernen des Pfades:

$env:Path = $env:Path.replace(“;C:\Marco”,””)