Ordner freigeben mit PowerShell


    Tags: , ,

    Windows-Ordner freigebenWenn man Ordner unter Windows für andere Benutzer frei­geben möchte, dann tut man dies zumeist über die GUI des Explorer. Unter Windows Server kann man dafür auch den Wizard des Server Manager ver­wenden. Bevor­zugt man dafür die Kommando­zeile oder Scripts, dann bietet das PowerShell-Modul SmbShare dafür die nötigen Cmdlets.

    PowerShell sieht für die Freigabe eines Ordners im Netzwerk das Cmdlet New-SmbShare vor. Es erfordert eine PowerShell-Session mit administrativen Rechten.

    Der minimale Aufruf von New-SmbShare verlangt die Angabe des Ordners, der im Netz freigegeben werden soll, sowie des Namens, den das neue Share tragen soll:

    New-SmbShare C:\Users\Public\Downloads -Name Download

    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.

    Ordner mit New-SmbShare temporär freigeben

    Beschreibung, User-Limit, Verschlüsselung

    Zusätzlich kann man gleich weitere Eigenschaften konfigurieren, zum Beispiel:

    • Die Beschreibung mit dem Parameter "Description";
    • die maximale Zahl gleichzeitiger Benutzer ("ConcurrentUserLimit");
    • die Verschlüsselung ("EncryptData $true bzw. $false");
    • hochverfügbare Freigabe einrichten ("ContinuouslyAvailable").

    Caching

    Der Parameter CachingMode bestimmt, 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").

    Access Based Enumeration

    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\Public\Downloads -Name Download `
    -FolderEnumerationMode Accessbased

    SMB Compression

    Das Cmdlet unterstützt auch die neue SMB Compression mit dem Parameter CompressData.

    New-SmbShare C:\Users\Public\Downloads -Name Download -CompressData $true

    Eigenschaften eines Shares nachträglich anpassen

    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" `
    -ConcurrentUserLimit 5

    Freigabe nachträglich mit Set-SmbShare anpassen

    Freigaben anzeigen

    Nachdem man einen Ordner freigegeben hat, kann man mit Get-SmbShare, das Ergebnis prüfen. Beim Aufruf ohne Parameter zeigt das Cmdlet eine Liste der Freigaben auf dem lokalen Rechner an.

    Get-SmbShare zeigt standardmäßig die Freigaben des lokalen Rechners an, darunter auch die Admin Shares.

    Standardmäßig gibt Get-SmbShare die Attribute Name, Pfad, Beschreibung und ScopeName (um herauszufinden, ob ein Share auf einem bestimmten Cluster liegt) aus. Zusätzlich kann man aber ermitteln, wie viele User eine Freigabe gerade verwenden:

    Get-SmbShare | select Name, CurrentUsers| Format-List

    Mit Get-SmbShare lassen sich auch die Freigaben auf einem entfernten Computer über eine CIM-Session anzeigen:

    $cim = New-CimSession -ComputerName server1 -Credential user@contoso.com

    Get-SmbShare -CimSession $cim

    Berechtigungen bei der Freigabe festlegen

    Diese Zugriffsrechte 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.

    Jedem der genannten Schalter kann der Name eines oder mehrerer Benutzer bzw. Gruppen übergeben werden, wobei die Werte durch Kommata getrennt werden müssen:

    New-SmbShare C:\Users\Public\Downloads -Name Download `
    -FullAccess contoso\HR,contoso\GL

    Es gilt als Best Practice, allen Benutzern den Vollzugriff zu gewähren und die Berechtigungen nur über NTFS zu regeln.

    PowerShell verfügt über mehrere Cmdlets, um die Berechtigungen auf ein File Share anzuzeigen und nachträglich zu ändern.

    Freigabe eines Ordners aufheben

    Will man schließlich eine Freigabe beenden, dann ruft man dazu Remove-SmbShare auf. Man muss ihm nur den Namen bzw. eine kommaseparierte Liste von Shares übergeben.

    Freigabe eines Ordners löschen mit Remove-SmbShare

    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.

    Täglich Know-how für IT-Pros mit unserem Newsletter

    Wir ver­wenden Ihre Mail-Adresse nur für den Ver­sand der News­letter.
    Es erfolgt keine per­sonen­be­zogene Auswertung.

    Bild von Wolfgang Sommergut
    Wolfgang Sommergut hat lang­jährige Erfahrung als Fach­autor, Berater und Kon­ferenz­sprecher zu ver­schie­denen Themen der IT. Da­ne­ben war er als System­ad­mi­ni­stra­tor und Con­sultant tätig.
    // Kontakt: E-Mail, XING, LinkedIn //

    Verwandte Beiträge

    Weitere Links