Tags: PowerShell, Dateisystem, Rechteverwaltung
Wenn man Ordner unter Windows für andere Benutzer freigeben 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 verwenden. Bevorzugt man dafür die Kommandozeile 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.
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
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.
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.
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
Verwandte Beiträge
- NTFS-Rechte anzeigen, zuweisen und entfernen mit dem PowerShell-Modul NTFSSecurity
- Icacls, Takeown, PowerShell: Besitzer von Dateien unter NTFS ändern
- Zugriffsrechte auf Freigaben anzeigen, ändern und entziehen mit PowerShell
- icacls, Get-ACL: Dateirechte anzeigen auf der Kommandozeile und in PowerShell
- Netzlaufwerk mit PowerShell verbinden
Weitere Links