Het beheren van SMB-shares met PowerShell is een echte uitkomst, vooral als je dit op meerdere servers hebt moeten doen of processen wilt automatiseren. Soms kunnen de commando’s en opties overweldigend zijn, met name als je serverinstellingen wilt aanpassen of snel nieuwe shares wilt aanmaken. Gelukkig biedt de SMBShare-module veel mogelijkheden, zoals het aanmaken van shares, het beheren van toegang en zelfs het realtime controleren van geopende shares. Houd er wel rekening mee dat sommige van deze taken beheerdersrechten vereisen, dus ga er niet te enthousiast mee aan de slag zonder de juiste machtigingen. Deze handleiding laat je zien hoe je SMB-shares rechtstreeks vanuit PowerShell kunt aanmaken, beheren en problemen oplossen, waardoor je niet handmatig door menu’s hoeft te navigeren.
Hoe los je problemen met SMB-shares in Windows op met PowerShell?
Een gedeelde map maken in Windows met PowerShell
Ten eerste is het aanmaken van gedeelde mappen niet meer zo eenvoudig als een rechtermuisklik. Als je er snel een wilt instellen, kun je het beste PowerShell gebruiken. Je kunt je bestaande gedeelde mappen controleren met `.com/shares` Get-SmbShare. Daarmee zie je welke mappen er al beschikbaar zijn, inclusief de standaard beheerdersmappen.
Hier is de opdracht om een nieuwe gedeelde map aan te maken:
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"
Om dit even uit te leggen: het geeft volledige toegang aan bepaalde beheerdersgroepen, wijzigingsrechten aan een specifiek machineaccount en leesrechten aan iedereen in de domeingebruikersgroep. Vergeet niet dat je opties kunt toevoegen, zoals -EncryptData $Truehet versleutelen van SMB-verkeer of -CachingModeoffline toegang. Soms is het ook handig om een tijdelijke share aan te maken of verbindingslimieten in te stellen (zoals -Temporaryof -ConcurrentUserLimit 50).Deze opties zijn nuttig voor meer specifieke behoeften, vooral als je dit instelt voor automatisering of tijdelijke tests.
Als je alle instellingen van de gedeelde map wilt bekijken, doe dan het volgende:
Get-SmbShare -Name scripts | select *
En als je een gedeelde map later wilt verwijderen, is dat heel eenvoudig:
Remove-SmbShare Scripts
Het toevoegen van gebruikersrechten is ook eenvoudig:
Grant-SmbShareAccess -Name Scripts -AccountName "woshub\b.hoffmann" -AccessRight Change -Force
Of, om iemands toegang te ontzeggen:
Revoke-SmbShareAccess -Name Scripts -AccountName Everyone -Force
Soms wilt u de toegang voor bepaalde accounts blokkeren (het weigeren van machtigingen heeft doorgaans voorrang op andere):
Block-SmbShareAccess -Name Scripts -AccountName woshub\ExternalGuests -Force
Problemen met vastgelopen SMB-shares oplossen en geopende bestanden beheren
Dit wordt lastig als gebruikers melden dat ‘Het bestand is vergrendeld’ of bepaalde bestanden niet meer kunnen openen. Met PowerShell kun je zien wie bestanden open heeft staan en ze indien nodig zelfs sluiten. Dat is misschien wat drastisch, maar soms noodzakelijk.
Controleer met welke programma’s de bestanden geopend zijn:
Get-SmbOpenFile | select ClientUserName, ClientComputerName, Path, SessionID
Als je de geopende bestanden van een specifieke gebruiker wilt bekijken, is dit handig:
Get-SmbOpenFile -ClientUserName "woshub\b.hoffmann" | select ClientComputerName, Path
En hier komt het vreemde: als je een bestand geforceerd moet sluiten omdat het vastloopt, dan is deze regel de oplossing:
$sessn = New-CIMSession -ComputerName munfs01 Get-SMBOpenFile -CIMSession $sessn | where {$_. Path -like "*sale_report2022.docx*"} | Close-SMBOpenFile -CIMSession $sessn
Ik weet niet waarom, maar soms mislukt het de eerste keer, en werkt het dan wel na een herstart of een paar pogingen. Windows moet het gewoon onnodig moeilijk maken.
Netwerkstations toewijzen met PowerShell
Het handmatig toewijzen van SMB-shares aan netwerkstations kan een lastige klus zijn. Gelukkig New-SmbMappingneemt een PowerShell-cmdlet dit werk uit handen. Zo wijs je de share \\munfs01\scripts toe aan station U:
New-SmbMapping -LocalPath U: -RemotePath \\munfs01\scripts -UserName b.hoffmann -Password my22pass -Persistent $true -SaveCredential
Let op: zonder deze optie -Persistentverdwijnt het station na een herstart. Deze -SaveCredentialoptie slaat uw inloggegevens op in Windows Referentiebeheer – handig voor automatisering! Als u alle toegewezen stations wilt zien, voert u gewoon het volgende commando uit:
Get-SmbMapping
En als het misgaat, is het ongedaan maken van de mapping gewoon:
Remove-SmbMapping U: -Force
Als je vastloopt met een gedeelde map of permanente schijven wilt instellen op meerdere gebruikerscomputers, zijn GPO’s nog steeds nuttig, maar het gebruik van PowerShell is sneller als je een paar servers beheert of de implementatie automatiseert. Houd er wel rekening mee dat SMB-problemen lastig kunnen zijn – soms draait het allemaal om het opruimen van geopende bestanden, het resetten van configuraties of het uitschakelen van oude protocollen zoals SMB1 als deze niet meer nodig zijn (voer hiervoor het commando uit Set-SmbServerConfiguration -EnableSMB1Protocol $false -Force).
Samenvatting
- Het aanmaken van aandelen
New-SmbSharebespaarde me enorm veel tijd. - Het controleren van geopende bestanden helpt de server soepel te laten draaien wanneer er iets vastloopt.
- Wees voorzichtig met machtigingen
Grant-SmbShareAccessenRevoke-SmbShareAccesshoud de toegang overzichtelijk. - Het toewijzen van netwerkstations
New-SmbMappingkan volledig worden geautomatiseerd, wat ideaal is voor implementatiescripts.
Samenvatting
PowerShell biedt een behoorlijk krachtige manier om SMB-shares te beheren, problemen met bestandsvergrendeling op te lossen en uw netwerkshares te automatiseren. Het is niet perfect – soms mislukken commando’s of moeten ze opnieuw worden geprobeerd – maar over het algemeen scheelt het een hoop handmatig werk. Vergeet niet om uw shell als beheerder uit te voeren wanneer dat nodig is en controleer de machtigingen of geopende bestandshandles als er iets vreemds aan de hand is. Hopelijk biedt dit een goed uitgangspunt om SMB-problemen op te lossen zonder al te veel frustratie. Ik hoop dat dit iemand helpt – het werkte voor mij, misschien werkt het ook voor jou.