Geöffnete Dateien anzeigen und schließen mit PowerShell
Oft lässt sich eine Datei auf einem Server nicht löschen, da sie noch geöffnet ist. Leider sieht man oft nur durch Umwege die Details dazu. PowerShell bietet uns wie immer Möglichkeiten! Wie man Geöffnete Dateien findet und schließen kann, seht ihr bei uns 🙂
Geöffnete Dateien finden
Um sich die geöffneten Dateien anzeigen zu lassen, brauchen wir einen einfachen PowerShell Befehl:
Get-SmbOpenFile | Format-List
Aktive Sessions / Verbindungen anzeigen
Um aus Interesse die aktiven Verbindungen anzeigen zu lassen, benötigt man diesen Befehl:
Get-SmbSession
Geöffnete Dateien schließen
Zum Schluss soll die Datei oder auch Dateien geschlossen werden. Dazu benötigt man die “FileID”. Diese wird oben bei “Get-SmbOpenFile” ausgespuckt.
Um nun die Datei zu schließen, benötigt man diesem Befehl, inkl. die “FileID” der zu schließenden Datei:
Close-SmbOpenFile -FileId 120259084297
Alle Dateien automatisiert schließen
Natürlich haben wir auch die Möglichkeit alle geöffneten Dateien schließen zu lassen. Hierzu muss man das PS1 Script ein wenig erweitern. Außerdem habe ich eingebaut, dass alle Files geschlossen werden, welche nicht von einem bestimmten Benutzer sind.
Get-SmbOpenFile | Where {$_.ClientUserName -notcontains "DOMAIN\User"} | Foreach-Object { Close-SmbOpenFile -FileId $_.FileId }
In Zeile 1 muss der Benutzer angegeben werden, der vom Dateien schließen ausgenommen werden soll. Beispielsweise wird hier der Admin-User angegeben.
Hinweis
Die Befehle sind für das Protokoll SMB. Also vor allem interessant auf Arbeiten auf Fileservern!
Außerdem werden für die Aktion werden Administrator – Rechte benötigt, also PowerShell auch mit erhöhten Rechten starten 🙂