Finden Sie heraus, welcher Computer eine Datei auf der Netzwerkfreigabe des Servers geöffnet hat

Finden Sie heraus, welcher Computer eine Datei auf der Netzwerkfreigabe des Servers geöffnet hat

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:

Bildbeschreibung hier eingeben

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-SmbOpenfileGibt eine Liste aller geöffneten Dateien auf dem Server zurück, mit der wir filtern, where-objectum nur die Dateien anzuzeigen, nach denen wir suchen.

Dabei wird unter anderem die ClientComputerNameIP-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

verwandte Informationen