Wie man Windows-Dateifreigaben mit PowerShell effizient verwaltet

Die Verwaltung von SMB-Freigaben mit PowerShell ist äußerst praktisch, insbesondere wenn Sie dies schon einmal auf mehreren Servern tun mussten oder Prozesse automatisieren möchten. Manchmal können die Befehle und Optionen jedoch etwas unübersichtlich wirken, vor allem, wenn Sie Servereinstellungen anpassen oder spontan neue Freigaben erstellen möchten. Das SMBShare-Modul bietet viele nützliche Funktionen wie das Erstellen von Freigaben, die Zugriffsverwaltung und sogar die Echtzeit-Überprüfung geöffneter Dateien. Beachten Sie jedoch, dass einige dieser Aufgaben Administratorrechte erfordern. Führen Sie die Funktionen daher nur mit den entsprechenden Berechtigungen aus. Diese Anleitung zeigt Ihnen, wie Sie SMB-Freigaben direkt in PowerShell erstellen, verwalten und Fehler beheben – und erspart Ihnen so das mühsame manuelle Durchsuchen von Menüs.

So beheben Sie SMB-Freigabeprobleme in Windows mit PowerShell

Erstellen eines freigegebenen Ordners unter Windows mit PowerShell

Zunächst einmal ist das Erstellen von Freigaben nicht mehr so ​​einfach wie ein Rechtsklick. Wenn Sie schnell eine Freigabe einrichten möchten, ist PowerShell die beste Lösung.Überprüfen Sie Ihre vorhandenen Freigaben mit dem Befehl `ls -l` Get-SmbShare. Dadurch wird angezeigt, welche Freigaben bereits vorhanden sind, einschließlich der standardmäßigen Administratorfreigaben.

Hier ist der Befehl zum Erstellen einer neuen Freigabe:

New-SmbShare -Name Scripts -Path C:\PS -FullAccess woshub\mun_admins, woshub\mun-man01$ -ChangeAccess "woshub\mun-man01_scripts_rw" -ReadAccess "$env:USERDOMAIN\domain users" –description "PowerShell scripts for admin"

Im Detail bedeutet das, dass bestimmten Administratorgruppen Vollzugriff gewährt, die Rechte eines bestimmten Computerkontos geändert und allen Benutzern der Domänenbenutzergruppe Leserechte eingeräumt werden. Sie können außerdem Optionen hinzufügen, beispielsweise -EncryptData $Truezur Verschlüsselung des SMB-Datenverkehrs oder -CachingModefür den Offline-Zugriff. Manchmal ist es auch hilfreich, eine temporäre Freigabe zu erstellen oder Verbindungslimits festzulegen (z. B.`remove` -Temporaryoder `remove` -ConcurrentUserLimit 50).Diese Optionen sind besonders nützlich für spezifischere Anforderungen, insbesondere bei der Einrichtung für Automatisierung oder temporäre Tests.

Um die vollständigen Einstellungen des freigegebenen Ordners anzuzeigen, gehen Sie wie folgt vor:

Get-SmbShare -Name scripts | select *

Und wenn Sie eine Freigabe später löschen möchten, ist das ganz einfach:

Remove-SmbShare Scripts

Das Hinzufügen von Benutzerzugriffen ist ebenfalls unkompliziert:

Grant-SmbShareAccess -Name Scripts -AccountName "woshub\b.hoffmann" -AccessRight Change -Force

Oder, um jemandem den Zugriff zu entziehen:

Revoke-SmbShareAccess -Name Scripts -AccountName Everyone -Force

Manchmal möchten Sie möglicherweise den Zugriff für bestimmte Konten sperren (verweigerte Berechtigungen haben in der Regel Vorrang vor anderen):

Block-SmbShareAccess -Name Scripts -AccountName woshub\ExternalGuests -Force

Behebung von SMB-Freigabeproblemen und Verwaltung geöffneter Dateien

Das wird knifflig, wenn Benutzer melden, dass die Datei gesperrt ist oder sie nicht mehr auf bestimmte Dateien zugreifen können. PowerShell ermöglicht es, anzuzeigen, wer Dateien geöffnet hat, und diese bei Bedarf sogar zu schließen. Das ist zwar etwas drastisch, aber manchmal notwendig.

Prüfen Sie, welche Dateien geöffnet sind mit:

Get-SmbOpenFile | select ClientUserName, ClientComputerName, Path, SessionID

Wenn Sie die geöffneten Dateien eines bestimmten Benutzers anzeigen möchten, hilft Ihnen Folgendes:

Get-SmbOpenFile -ClientUserName "woshub\b.hoffmann" | select ClientComputerName, Path

Und hier kommt das Merkwürdige: Wenn Sie eine Datei zwangsweise schließen müssen, weil sie sich aufgehängt hat oder nicht mehr reagiert, ist diese Zeile der Schlüssel:

$sessn = New-CIMSession -ComputerName munfs01 Get-SMBOpenFile -CIMSession $sessn | where {$_. Path -like "*sale_report2022.docx*"} | Close-SMBOpenFile -CIMSession $sessn

Ich weiß nicht warum, aber manchmal klappt es beim ersten Versuch nicht, dann aber nach einem Neustart oder ein paar Wiederholungen. Windows macht es einem unnötig schwer.

Zuordnung von Netzlaufwerken mit PowerShell

Das manuelle Zuordnen von SMB-Freigaben zu Netzlaufwerken kann mühsam sein. Glücklicherweise New-SmbMappingübernimmt das PowerShell-Cmdlet diese Aufgabe. So ordnen Sie die Freigabe \\munfs01\scripts dem Laufwerk U: zu:

New-SmbMapping -LocalPath U: -RemotePath \\munfs01\scripts -UserName b.hoffmann -Password my22pass -Persistent $true -SaveCredential

Hinweis: Ohne diese Option -Persistentverschwindet das Laufwerk nach einem Neustart. Die -SaveCredentialOption speichert Ihre Anmeldeinformationen im Windows-Anmeldeinformationsspeicher – hurra für die Automatisierung! Um alle zugeordneten Laufwerke anzuzeigen, führen Sie einfach folgenden Befehl aus:

Get-SmbMapping

Und falls etwas schiefgeht, ist das Aufheben der Zuordnung einfach nur:

Remove-SmbMapping U: -Force

Wenn Sie mit einer hartnäckigen Freigabe zu kämpfen haben oder persistente Laufwerke auf mehreren Benutzerrechnern einrichten müssen, sind Gruppenrichtlinienobjekte (GPOs) weiterhin nützlich. Die Verwendung von PowerShell ist jedoch schneller, wenn Sie nur wenige Server verwalten oder die Bereitstellung automatisieren. Beachten Sie, dass SMB-Probleme tückisch sein können – manchmal genügt es, offene Dateien zu bereinigen, Konfigurationen zurückzusetzen oder veraltete Protokolle wie SMB1 zu deaktivieren, falls diese nicht mehr benötigt werden (einfach ausführen Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force).

Zusammenfassung

  • Das Erstellen von Shares hat New-SmbShareenorm viel Zeit gespart.
  • Die Überprüfung geöffneter Dateien trägt dazu bei, dass der Server reibungslos weiterläuft, wenn es zu Systemabstürzen kommt.
  • Vorsicht mit Berechtigungen – die Verwendung von Grant-SmbShareAccessund Revoke-SmbShareAccesshält den Zugriff übersichtlich.
  • Das Mapping von Laufwerken New-SmbMappingkann vollständig automatisiert werden, was sich hervorragend für Bereitstellungsskripte eignet.

Zusammenfassung

PowerShell bietet eine leistungsstarke Möglichkeit, SMB-Freigaben zu verwalten, Dateisperrprobleme zu beheben und Netzwerkfreigaben zu automatisieren. Es ist nicht perfekt – manchmal schlagen Befehle fehl oder erfordern einen zweiten Versuch, aber insgesamt reduziert es den manuellen Aufwand erheblich. Denken Sie daran, die Shell bei Bedarf als Administrator auszuführen und Berechtigungen oder geöffnete Dateihandles zu überprüfen, falls etwas ungewöhnlich funktioniert. Hoffentlich bietet dies einen guten Ausgangspunkt, um SMB-Probleme zu beheben, ohne sich die Haare zu raufen. Ich drücke die Daumen, dass es dem einen oder anderen hilft – bei mir hat es funktioniert, vielleicht klappt es ja auch bei Ihnen.