![Finden Sie heraus, welcher Computer eine Datei auf der Netzwerkfreigabe des Servers geöffnet hat](https://rvso.com/image/1482464/Finden%20Sie%20heraus%2C%20welcher%20Computer%20eine%20Datei%20auf%20der%20Netzwerkfreigabe%20des%20Servers%20ge%C3%B6ffnet%20hat.png)
Ich habe einen Windows Server 2008 und dieser teilt einen Ordner. Viele Clients greifen auf diesen Ordner und die darin enthaltenen Dateien zu. Ein Client öffnet sporadisch eine DLL-Datei im Modus rw, sodass danach kein anderer Client die DLL laden kann.
Nun möchte ich herausfinden, welcher Client dies tut. Alle Tools, die ich gefunden habe:
- Datei öffnen
- Netz
- aktiencheck.de
- NetShareMonitor
zeigt mir nicht den Netzwerkclient an, der die Datei im RW-Modus öffnet.
Ich denke, es liegt am Antivirenprogramm, aber ich muss wissen, auf welchem Client die Datei geöffnet ist.
Bearbeiten:
- Die Clients sind Windows-Rechner
- Alle Clients verwenden den gleichen Benutzer, daher kann ich den Client nicht anhand des Benutzernamens bestimmen
Antwort1
Das könnte für Sie von Nutzen sein:
Ich bin nicht sicher, ob es derselbe Speicherort in der Server Edition ist, aber ich habe über Win+ X-> Computer Management
-> System Tools
-> Shared Folders
-> darauf zugegriffen.Open Files
Hier werden alle geöffneten Dateihandles, ihr „Öffnungsmodus“ (Lesen/Lesen/Schreiben) und der Benutzer aufgelistet. Von hier aus können Sie die Dateihandles auch schließen.
Antwort2
Das wollten wir schon seit Jahren machen!
Heute haben wir dieses Dienstprogramm entdeckt:
https://www.nirsoft.net/utils/network_opened_files.html
Fantastisch!
Bearbeiten:
Sie können NetworkOpenedFiles von Nirsoft verwenden, um zu bestimmen, welcher Host eine geöffnete Datei auf einer Windows-Dateifreigabe hat.
Antwort3
Dies ist eine alte Frage, aber trotzdem:
Wenn Sie PowerShell 4.0+ haben (das nicht in Windows Server 2008 enthalten ist, Sie müssten Ihre PowerShell-Version aktualisieren), können Sie Folgendes verwenden:
Direkt auf dem Server:
Get-SmbOpenFile | where-object { $_.Path -like 'C:\foo\bar\*' }
von einer RemoteMachine:
$cim = New-CimSession ServerName -Credential (get-credential)
Get-SmbOpenFile -CimSession $cim | where-object { $_.Path -like 'C:\foo\bar\*' }
Get-SmbOpenfile
Gibt eine Liste aller geöffneten Dateien auf dem Server zurück, mit der wir filtern, where-object
um nur die Dateien anzuzeigen, nach denen wir suchen.
Dabei wird unter anderem die ClientComputerName
IP-Adresse des Rechners zurückgegeben, der die Datei geöffnet hat.
Hier ist eine Beispielausgabe:
PS C:\WINDOWS\system32> get-smbopenfile -cimsession $cim | where-object { $_.Path -like 'D:\Daten\Transfer\*' }
FileId SessionId Path ShareRelativePath ClientComputerName ClientUserName PSComputerName
------ --------- ---- ----------------- ------------------ -------------- --------------
347355680805 348160786757 D:\Daten\TRANSFER\xy TRANSFER\xy 10.0.0.114 INTERNAL\xy Server
Wenn Sie dann schnell den Hostnamen der zurückgegebenen IP-Adresse sehen möchten, verwenden Sie:
[Net.DNS]::GetHostByAddress("10.0.0.114") | select -expand HostName