Mobile-Menu

Skripte für das Erstellen und Anpassen von Freigaben nutzen Dateifreigaben in der PowerShell erstellen und verwalten

Von Thomas Joos Lesedauer: 5 min

Anbieter zum Thema

In der PowerShell lassen sich Dateifreigaben erstellen und verwalten. Das ermöglicht die Einrichtung von Skripten für die Automatisierung oder das schnelle Erstellen und Konfigurieren von Freigaben mit einzelnen Cmdlets.

Grundlegend fürs Datenmanagement in Unternehmen ist die Regelung, wer Zugriff auf welche gespeicherten Daten erhält. Über die PowerShell können entsprechende Dateifreigaben verwaltet werden.
Grundlegend fürs Datenmanagement in Unternehmen ist die Regelung, wer Zugriff auf welche gespeicherten Daten erhält. Über die PowerShell können entsprechende Dateifreigaben verwaltet werden.
(Bild: frei lizenziert / Pixabay)

Dateifreigaben lassen sich relativ einfach in der PowerShell erstellen und verwalten. Dazu kommt das PowerShell-Modul „Smbshare“ zum Einsatz. Die einzelnen Cmdlets dieses Moduls lassen sich in der PowerShell zum Beispiel mit dem folgenden Befehl anzeigen:

Get-Command -modul SmbShare

Das Modul gehört zum Standardumfang der PowerShell und ist auch auf Rechnern mit Windows 10 und Windows 11 verfügbar. Auf Servern mit Windows Server 2019 und Windows Server 2022 sind die Cmdlets natürlich ebenfalls Bestandteil der PowerShell. Im Speichertipp „Ordner und Verzeichnisse mit Skripten erstellen“ geben wir einen Einblick in die Möglichkeiten von „New-SmbShare“, dem Cmdlet aus dem Modul „SmbShare“, mit dem sich neue Freigaben erstellen lassen. In diesem Zusammenhang sind auch die Tipps aus dem Beitrag „PowerShell-Cmdlets zum Reparieren von Freigaben, Volumes und Speichersubsystemen“ hilfreich.

Das Verbinden von Freigaben über die PowerShell

Wenn Freigaben erstellt sind, lassen sie sich als Netzlaufwerk verbinden. Wie das geht, zeigen wir im Beitrag „Netzlaufwerke mit der PowerShell verbinden und verwalten“.

Die bisher gezeigten Beispiele sind einfache Einstiege für das Erstellen von Freigaben. Es ist aber zudem möglich, komplexere Einstellungen zu setzen, zum Beispiel über eine Variable. Diese Variable kann mit dem Cmdlet „New-SmbShare“ zum Einsatz kommen, um die Freigaben schließlich zu erstellen. Dadurch lassen sich Freigabename, das Verzeichnis und die Berechtigungen in einer Variablen speichern, zum Beispiel mit:

$Parameters = @{ Name = "Software" Path = "C:\Software" FullAccess = "Dell\Administrator"}

Pfade und Berechtigungen lassen sich natürlich beliebig anpassen. Mit der Eingabe von „$Parameters“ zeigt die PowerShell den Inhalt der Variablen an. Dieser lässt sich jetzt einfach an das Cmdlet „New-SmbShare“ übergeben:

New-SmbShare @Parameters

Die erstellten Freigaben und auch die in diesem Beispiel erstellte Freigabe „Software“ können mit dem Cmdlet „Get-SMbShare“ angezeigt werden. Die Konfiguration der Freigabe „Software“ wiederum funktioniert mit „Get-SmbShare "Software" | fl“.

Bildergalerie

Freigaben mit unterschiedlichen Rechten erstellen

Mit der oben gezeigten Möglichkeit, die einzelnen Daten der Freigabe in einer Variablen zu speichern, um dadurch auch gleich die Rechte für die Freigabe festzulegen, lassen sich noch erweitern. Ein Beispiel dazu ist:

$Parameters = @{ Name = "Software" Path = "C:\Software" ChangeAccess = "Dell\Users", "Dell\HR" FullAccess = "Dell\Administrators"}New-SmbShare @Parameters

Auf diesem Weg lassen sich zahlreiche verschiedene Freigaben erstellen. Im Folgenden zeigen wir einige Beispiele dazu.

So können Freigaben in der PowerShell mithilfe des Cmdlets New-SmbShare erstellt werden:

Eine Freigabe für ein Verzeichnis erstellen:

New-SmbShare -Name "ShareName" -Path "C:\sharedfolder" -FullAccess "Everyone"

Eine Freigabe mit Lese-/Schreibzugriff für einen Benutzer erstellen:

New-SmbShare -Name "ShareName" -Path "C:\sharedfolder" -FullAccess "User1" -ReadAccess "User2"

Eine Freigabe mit Passwortschutz erstellen:

New-SmbShare -Name "ShareName" -Path "C:\sharedfolder" -FullAccess "User1" -ReadAccess "User2" -Password "SecurePassword"

Eine temporäre Freigabe erstellen, die nach Neustart des Computers gelöscht wird:

New-SmbShare -Name "ShareName" -Path "C:\sharedfolder" -FullAccess "Everyone" -Persistent

Die Freigabeberechtigungen unterscheiden sich von Berechtigungen auf dem Dateisystem und sollten gesondert behandelt werden. Um die Freigabeberechtigungen bereits beim Erstellen einer Freigabe auf Basis unterschiedlicher Benutzer oder Gruppen zu setzen, können neben den obigen Beispielen außerdem folgende Befehle zum Einsatz kommen:

Eine Freigabe mit einem Namen, einem Pfad und Berechtigungen, die in Variablen gespeichert sind:

$shareName = "ShareName"$sharePath = "C:\sharedfolder"$fullAccess = "User1"$readAccess = "User2"New-SmbShare -Name $shareName -Path $sharePath -FullAccess $fullAccess -ReadAccess $readAccess

Eine Freigabe mit einer Liste von Berechtigungen, die in einer Variablen gespeichert sind, erstellen:

$shareName = "ShareName"$sharePath = "C:\sharedfolder"$permissions = "User1", "User2"New-SmbShare -Name $shareName -Path $sharePath -FullAccess $permissions[0] -ReadAccess $permissions[1]

Eine Freigabe mit einer Schleife erstellen, um mehrere Freigaben mit unterschiedlichen Namen und Pfaden zu erstellen:

$permissions = "User1", "User2"$shareFolders = @( @{Name = "ShareName1"; Path = "C:\sharedfolder1"}, @{Name = "ShareName2"; Path = "C:\sharedfolder2"})foreach ($folder in $shareFolders) { New-SmbShare -Name $folder.Name -Path $folder.Path -FullAccess $permissions[0] -ReadAccess $permissions[1]}

Berechtigungen für Freigaben setzen

Die Berechtigungen für die Zugriffe auf die Freigaben werden mit „New-SmbShare“ und „Set-SmbShare“ gesetzt. Parallel dazu spielen auch die Berechtigungen auf Ebene des Dateisystems eine Rolle. Dazu kommen die Cmdlets des Moduls „NtfsSecurity“ zum Einsatz. Die zur Verfügung stehenden Cmdlets zeigt die PowerShell mit dem folgenden Befehl an:

Get-Command -modul NtfsSecurity

Installieren lässt sich das Modul mit:

Install-Module NTFSSecurity -Force #-AllowClobber

Danach steht das Modul zur Verfügung. Im Folgenden zeigen wir einige Beispielbefehle für die Verwendung:

NTFS-Berechtigungen für eine Datei oder einen Ordner hinzufügen:

$path = "C:\example"$user = "User1"Grant-NTFSAccess -Path $path -AccountName $user -AccessRights FullControl

NTFS-Berechtigungen für eine Datei oder einen Ordner entfernen:

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Data-Storage und -Management

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung
$path = "C:\example"$user = "User1"Revoke-NTFSAccess -Path $path -AccountName $user

Überprüfen von NTFS-Berechtigungen für eine Datei oder einen Ordner:

$path = "C:\example"Get-NTFSAccess -Path $path

Überschreiben der NTFS-Berechtigungen für eine Datei oder einen Ordner:

$path = "C:\example"$user = "User1"Set-NTFSAccess -Path $path -AccountName $user -AccessRights FullControl

SmbShare und NtfsSecurity miteinander kombinieren

Alle Beispiele der Module „SmbShare“ und „NtfsSecurity“ lassen sich miteinander kombinieren, um Freigaben zu erstellen, Berechtigungen für die Freigaben zu setzen und die Rechte parallel noch auf Ebene des Dateisystems für die einzelnen Verzeichnisse zu definieren. Beispiele dazu sind:

Eine Freigabe erstellen und Berechtigungen anhand einer Liste von Benutzern hinzufügen:

$shareName = "ShareName"$sharePath = "C:\sharedfolder"$permissions = "User1", "User2"New-SmbShare -Name $shareName -Path $sharePath -FullAccess $permissions[0]Grant-NTFSAccess -Path $sharePath -AccountName $permissions[1] -AccessRights ReadAndExecute

Überprüfen, ob eine Freigabe vorhanden ist, unter Umständen erstellen und Berechtigungen hinzufügen:

$shareName = "ShareName"$sharePath = "C:\sharedfolder"$permissions = "User1", "User2"if (!(Get-SmbShare | Where-Object {$_.Name -eq $shareName})) { New-SmbShare -Name $shareName -Path $sharePath -FullAccess $permissions[0]}Grant-NTFSAccess -Path $sharePath -AccountName $permissions[1] -AccessRights ReadAndExecute

Eine Liste von Freigaben erstellen, Berechtigungen hinzufügen und überprüfen:

$permissions = "User1", "User2"$shareFolders = @( @{Name = "ShareName1"; Path = "C:\sharedfolder1"}, @{Name = "ShareName2"; Path = "C:\sharedfolder2"})foreach ($folder in $shareFolders) { New-SmbShare -Name $folder.Name -Path $folder.Path -FullAccess $permissions[0] Grant-NTFSAccess -Path $folder.Path -AccountName $permissions[1] -AccessRights ReadAndExecute $ntfsPermissions = Get-NTFSAccess -Path $folder.Path Write-Host "NTFS Permissions for $($folder.Name): $ntfsPermissions"}
Bildergalerie

Aktuelles eBook

Alle Daten im Griff – der Weg zum passenden Data-Management

eBook Data-Management
eBook „Data-Management“
(Bild: Storage-Insider)

Daten nur zum Selbstzweck zu speichern, kann sich heute praktisch kein Unternehmen mehr leisten. Um den Überblick zu behalten und Nutzen aus den gespeicherten Daten zu ziehen, wird ein entsprechendes Datenmanagement benötigt. Unser neues eBook erläutert detailliert, worauf es dabei ankommt, welche Ansätze es gibt und wo Potenziale zur Verbesserung liegen.

Die Themen im Überblick:

  • Data-Management lokal und in der Private Cloud
  • Data-Management in der Cloud
  • Globales Data-Management

(ID:49265880)