Netzlaufwerke anzeigen, freigeben, verbinden und trennen mit PowerShell

    Windows-Ordner freigebenWindows 8 und Server 2012 brachten ein neues Modul namens SmbShare, das meh­rere Cmdlets zur Bearbeitung von Netzwerk­freigaben enthält. Zu den Aufgaben, die sich damit erledigen lassen, zählen das Erstellen, Konfigu­rieren und Löschen von Freigaben sowie das Zuordnen und Entfernen von Laufwerks­buchstaben.

    Windows bietet eine Reihe von Tools für das Management von Netzwerk­freigaben. Möchte man in AD-Domänen allen PCs einheitliche Laufwerks­buchstaben zu Netzfreigaben zuordnen, dann sind dafür die Gruppenrichtlinien das geeignete Mittel (siehe dazu: Netzlaufwerke verbinden mit Group Policy Preferences).

    Will man hingegen Verzeichnisse freigeben, dann stehen neben dem Explorer weitere Bordmittel zur Verfügung, darunter das Programm net.exe für die Kommandozeile und ein entsprechender Abschnitt in Computerverwaltung. Außerdem kann der Server Manager diese Aufgabe übernehmen.

    Eine weitere Alternative sind schließlich die neuen SMB-Cmdlets in PowerShell. Sie decken ein breites Spektrum an Funktionen ab und machen in Scripts den Aufruf externer Programme wie net.exe überflüssig.

    Freigegebene Netzlaufwerke anzeigen

    Eine der häufigsten Anforderungen bei der Verwaltung von Netzlauf­werken besteht darin, dass man sich einen Überblick über die freigegebenen Ordner eines Computers zu verschaffen muss. Diesem Zweck dient Get-SmbShare, das beim Aufruf ohne Parameter eine Liste der Freigaben auf dem lokalen Rechner anzeigt. Diese kann man durch Angabe eines Namens einschränken, wobei auch Wildcards zulässig sind:

    Get-SmbShare *pro*

    Dieses Beispiel würde nur jene Freigaben des lokalen Rechners auflisten, deren Name die Zeichenkette "pro" enthält.

    Standardmäßig zeigt Get-SmbShare die Attribute Name, Pfad, Beschreibung und ScopeName (um herauszufinden, ob ein Share auf einem bestimmten Cluster liegt). Zusätzlich kann man aber erfahren, wie viele User eine Freigabe gerade verwenden oder wie viele gleichzeitige Benutzer maximal darauf zugreifen dürfen:

    Get-SmbShare | select Name, CurrentUsers, ConcurrentUserLimit | fl

    Mit Get-SmbShare lassen sich auch die Freigaben auf einem entfernten Computer anzeigen. Dafür ist jedoch nicht wie bei vielen anderen Cmdlets der Parameter -ComputerName zuständig, vielmehr übergibt man die Namen an -CimSession.

    Neue Freigabe erstellen mit New-SmbShare

    PowerShell kann nicht nur vorhandene Shares anzeigen, sondern auch neue einrichten. Während für das Ausführen von Get-SmbShare eine normale PowerShell-Session ausreicht, erfordert das Freigeben eines Verzeichnisses mit New-SmbShare administrative Rechte.

    Der Aufruf von New-SmbShare verlangt erwartungsgemäß die Angabe des Ordners, der im Netz freigegeben werden soll, sowie des Namens, den das neue Share tragen soll. Darüber hinaus kann man gleich eine Reihe von Eigenschaften festlegen, darunter die Beschreibung (Parameter "Description"), die Konfiguration für Offline-Dateien, das Anzeigen von Dateien abhängig von den Benutzerrechten oder die Lebensdauer der Freigabe.

    So bestimmt der Parameter CachingMode, ob das lokale Zwischenspeichern unterbunden wird (Wert "None"), oder ob es für Dateien und Programme automatisch erfolgen ("Programs") oder bloß manuell möglich sein soll ("Manual").

    Möchte man sicherstellen, dass Benutzer nur die Verzeichnisse und Dateien zu sehen bekommen, für die sie auch Rechte besitzen, dann kann man mit Hilfe von PowerShell die Access Based Enumeration konfigurieren. Zuständig ist hierfür der Parameter FolderEnumerationMode mit dem Wert AccessBased:

    New-SmbShare C:\Users\me\Downloads -Name Download -FolderEnumerationMode Accessbased

    Verzichtet man auf die Angabe von FolderEnumerationMode, dann sehen die Benutzer standardmäßig alle Dateien, auch wenn sie auf diese nicht zugreifen können.

    Will man ein Verzeichnis nur vorübergehend bis zum nächsten Reboot freigeben, dann verwendet man den Schalter Temporary. Lässt man ihn aus, ist die Freigabe per Voreinstellung permanent.

    Freigaben auf dem lokalen Rechner anzeigen und Beschreibung mit Set-SmbShare ändern.

    Alle genannten Eigenschaften mit Ausnahme von -Temporary lassen sich nachträglich ändern, indem man Set-SmbShare mit den denselben Parametern aufruft wie New-SmbShare. Zwingend ist in diesem Fall die Angabe des betreffenden Freigabenamens:

    Set-SmbShare -Name Download -Description "Ordner für Downloads"

    Rechte bei der Freigabe vergeben

    Ein wesentlicher Aspekt bei der Freigabe von Verzeichnissen ist natürlich die Vergabe von Rechten. Diese lassen sich gleich beim Anlegen mit New-SmbShare festlegen. Dafür dienen die Parameter FullAccess, NoAccess, ReadAccess und ChangeAccess. Letzterer bestimmt, wer die Zugriffsrechte für eine Freigabe ändern darf, während alle anderen den Zugriff auf die freigegebenen Ressourcen regeln.

    Jedem der genannten Schalter kann der Name eines oder mehrerer Benutzer bzw. Gruppen übergeben werden, wobei die Werte durch Kommata getrennt werden müssen. Man sollte dabei natürlich auf inkonsistente Konfigurationen achten und zum Beispiel Aufrufe vermeiden, bei denen Benutzern redundante Rechte eingeräumt werden.

    Folgendes Beispiel gewährt den Gruppen HR und GL der Domäne contoso volle Zugriffsrechte auf die Freigabe Download gleich beim Erstellen:

    New-SmbShare C:\Shares\Downloads -Name Download -FullAccess contoso\HR,contoso\GL

    Freigabe eines Ordners aufheben

    Will man schließlich eine Freigabe beenden, dann erfüllt das Cmdlet Remove-SmbShare diese Aufgabe. Verglichen mit New-SmbShare ist seine Verwendung ziemlich einfach, weil man ihm nur den Namen bzw. eine kommaseparierte Liste von Shares übergeben muss. Möchte man Rückfragen und die damit verbundene Bestätigung der Aktion unterdrücken, fügt man den Schalter -Force hinzu:

    Remove-SmbShare Download,Temp -Force

    Dieser Aufruf würde die Freigaben Download und Temp beenden. Wie bei den beiden anderen Cmdlets lässt sich der Befehl mit dem Parameter -CimSession auf entfernte Rechner anwenden.

    Client-Befehle: Netzlaufwerke anzeigen, verbinden, trennen

    Neben den oben vorgestellten Cmdlets, die dazu dienen, Ressourcen eines Rechners im Netz bereitzustellen, anzuzeigen oder zu entfernen, bietet PowerShell auch solche, mit denen man diesen Freigaben auf einem Client einen Laufwerksbuchstaben zuordnet oder einen solchen löscht.

    Zuordnungen von Netzfreigaben zu Laufwerken anzeigen und entfernen mit Remove-SmbShare

    Wenn man im ersten Schritt sehen möchte, welche Mappings für Netzlaufwerke bereits existieren, dann gibt Get-SmbMapping darüber Auskunft. Ruft man es ohne Parameter auf, dann listet es alle Zuordnungen auf. Alternativ kann man eine Laufwerks­kennung angeben, um zu erfahren, mit welchem Share sie verknüpft ist:

    Get-SmbMapping u:

    Das Ganze funktioniert auch umgekehrt, indem man mit RemotePath die Freigabe spezifiziert und so den lokalen Laufwerksbuchstaben erhält.

    Laufwerksbuchstaben zuordnen

    Um ein Share zu einer Laufwerkskennung zuzuordnen, verwendet man das Cmdlet New-SmbMapping. Es erwartet die Angabe des lokalen Pfads und jenen der Freigabe. Zusätzlich ist es möglich, dem Aufruf den Benutzernamen und das Passwort mitzugeben. Dies erfolgt nicht wie sonst üblich mit einem Credentials-Objekt, sondern im Klartext:

    New-SmbMapping -LocalPath x: -RemotePath \\ds\usbshare1 -user contoso\Acon -password P@ssw0rd -SaveCredentials

    Wenn man die Anmeldedaten bei der Herstellung eines weiteren Mappings nicht erneut eingeben möchte, dann kann man sie mit dem zusätzlichen Schalter SaveCredentials speichern.

    Laufwerksbuchstaben löschen

    Das Trennen einer Laufwerkszuordnung geschieht schließlich mit Hilfe von Remove-SmbMapping. Dem Cmdlet reicht die Angabe des lokalen oder des entfernten Pfades. Zusätzlich kann man durch Verwendung von UpdateProfile dafür sorgen, dass Windows das Laufwerk nach der nächsten Anmeldung nicht erneut zuordnet, sondern dieses permanent löscht:

    Remove-SmbMapping x: -UpdateProfile

    Alle drei Cmdlets für das Anzeigen, Verbinden und Löschen einer Laufwerkszuordnung lassen sich mit CimSession auch auf entfernte Rechner anwenden.

    Keine Kommentare