descubra qual computador abriu um arquivo no compartilhamento de rede Servidores

2

Eu tenho um Windows Server 2008 e ele compartilha uma pasta. Muitos clientes acessam essa pasta e os arquivos herdados. Um cliente abre um arquivo dll esporadicamente com o modo rw, então depois que nenhum outro cliente pode carregar a dll.

Agora quero determinar qual cliente faz isso. Todas as ferramentas que encontrei:

  • openfile
  • net
  • sharewatch
  • NetShareMonitor

não mostra o cliente de rede que abre o arquivo no modo rw.

Eu acho que é o programa antivírus, mas eu preciso saber qual cliente tem o arquivo aberto.

Editar:

  • Os clientes são máquinas de janelas
  • Todos os clientes usam o mesmo usuário, por isso não posso determinar o cliente com o nome de usuário
por Biber 01.02.2016 / 12:35

3 respostas

2

Essa é uma pergunta antiga, mas, no entanto:

se você tiver o PowerShell 4.0+ (que não vem com o Windows Server 2008, você precisaria atualizar a versão do PowerShell), poderá usar isto:

Diretamente no servidor:

Get-SmbOpenFile | where-object { $_.Path -like 'C:\foo\bar\*' }

de um RemoteMachine:

$cim = New-CimSession ServerName -Credential (get-credential)
Get-SmbOpenFile -CimSession $cim | where-object { $_.Path -like 'C:\foo\bar\*' }

Get-SmbOpenfile retorna uma lista de todos os arquivos abertos no servidor, que filtramos com where-object para ver apenas os que estamos procurando.

Isso retornará, entre outras coisas, o ClientComputerName , que é o IP do computador que abriu o arquivo.

Veja um exemplo de saída:

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

Se você quiser ver rapidamente qual é o nome do host do endereço IP retornado, use:

[Net.DNS]::GetHostByAddress("10.0.0.114") | select -expand HostName
    
por 30.10.2018 / 14:39
1

Isso pode ser útil para você:

NãopossotercertezadequeéomesmolocalnaediçãodoServidor,maseuoacesseiatravésdeWin+X->ComputerManagement->SystemTools->SharedFolders->OpenFiles

Issolistacadaidentificadordearquivoaberto,seu"Modo aberto" (Read / ReadWrite) e o usuário. Você também pode fechar o identificador de arquivo deste local.

    
por 01.02.2016 / 13:49
1

Estamos querendo fazer isso há anos!

Hoje percebemos esse utilitário:

link

Fantástico!

Editar:

Você pode usar NetworkOpenedFiles da Nirsoft para determinar qual host possui um arquivo aberto em um compartilhamento de arquivos do Windows.

    
por 30.10.2018 / 12:57