Come visualizzare, gestire e chiudere i file aperti sul file server di Windows
Come visualizzare l’elenco dei file aperti su Windows Server
È possibile ottenere l’elenco dei file aperti dagli utenti sul file server Windows utilizzando la console grafica integrata di Gestione computer (compmgmt.msc).
Apri lo snap-in Gestione computer sul tuo file server (o connettiti al server in remoto dalla console di gestione in esecuzione sul tuo computer) e vai su Strumenti di sistema -> Cartelle condivise -> Apri file. L’elenco dei file aperti sul server remoto viene visualizzato sul lato destro della finestra. L’elenco contiene il percorso locale di un file, il nome dell’account utente che apre il file, il numero di blocchi e la modalità di apertura del file (Leggi o Scrivi + Leggi).

Puoi ottenere lo stesso elenco di file aperti utilizzando lo strumento console incorporato – Openfiles . Ad esempio, utilizzando il seguente comando è possibile ottenere l’ID sessione, il nome utente e il percorso locale completo del file aperto:
Openfiles /Query /fo csv |more

Puoi eseguire lo stesso comando da remoto. Ad esempio, è necessario mostrare un elenco di file aperti sul file server lon-fs01:
Openfiles /Query /s lon-fs01 /fo csv
openfiles /local one riavviare il server. Successivamente, i file aperti dai processi locali verranno aggiunti all’elenco dei file aperti (si consiglia di utilizzare questa modalità solo a scopo di debug, poiché può influire negativamente sulle prestazioni del server).Come rilevare un utente che ha aperto un file
Per rilevare un utente che ha aperto (bloccato) il file nomefile.docx sul server, eseguire questo comando:
Openfiles /Query /s lon-fs01 /fo csv | find /i "filename.docx"
Ovviamente, puoi specificare solo una parte del nome del file. Ad esempio, devi sapere chi ha aperto un file XLSX contenente “salereport” nel suo nome, quindi usa la seguente pipe:
Openfiles /Query /s lon-fs01 /fo csv | find /i "salereport"| find /i "xlsx"
Ovviamente puoi trovare questo file nella GUI di Gestione computer, ma è meno conveniente (questa console non fornisce funzionalità di ricerca).
Come forzare la chiusura di un file condiviso aperto
Per chiudere un file aperto, trovalo nell’elenco dei file nella sezione Apri file e seleziona Chiudi file aperto nel menu contestuale.

Se ci sono centinaia di file aperti sul tuo file server, non sarà facile trovare il file specifico nella console. È più conveniente usare lo strumento Openfiles . Come abbiamo già detto, restituisce l’ID di sessione del file aperto. Utilizzando questo ID sessione è possibile forzare la chiusura del file ripristinando la connessione. Trova l’ID del file che ti serve:
Openfiles /Query /s lon-fs01 /fo csv | find /i "farm"| find /i ".xlsx"
Disconnetti l’utente dal file utilizzando l’ID ricevuto:
Openfiles /Disconnect /s lon-fs01 /ID 617909089
Come chiudere i file aperti in remoto usando PowerShell
Nuovi cmdlet per la gestione di condivisioni e file su un server SMB sono stati visualizzati in PowerShell per Windows Server 2012 / Windows 8. Questi cmdlet possono essere utilizzati per ripristinare in remoto le connessioni su un file aperto.
È possibile ottenere l’elenco dei file aperti utilizzando Get-SMBOpenFile e chiudere un file (ripristinare una connessione) utilizzando Close-SmbOpenFile .
Quindi, connettiamoci a un server remoto:
$sessn = New-CIMSession –Computername lon-fs01
Trova e chiudi il file aperto pubs.docx usando un singolo comando:
Get-SMBOpenFile -CIMSession $sessn | where {$_.Path –like "*pubs.docx"} | Close-SMBOpenFile -CIMSession $sessn
Conferma la chiusura del file premendo Y.

Questi comandi possono essere utilizzati, ad esempio, per chiudere tutti i file aperti da un determinato utente (un utente è tornato a casa e non ha rilasciato i file). Ad esempio, per ripristinare tutte le sessioni di file dell’utente mjenny, eseguire questo comando:
Get-SMBOpenFile -CIMSession $sessn | where {$_.ClientUserName –like "*mjenny*"}|Close-SMBOpenFile -CIMSession $sessn




