Zarządzaj otwartymi plikami na serwerze plików Windows

Administratorzy serwerów plików Windows często zmuszają użytkowników do zamykania plików otwieranych przez użytkowników. Taki problem powstaje, gdy kilku użytkowników pracuje jednocześnie z jednym plikiem. Często, jeśli oprogramowanie nie działa poprawnie lub użytkownik poprawnie kończy sesję, pliki w folderze sieciowym są otwierane i blokowane, a inni użytkownicy nie mogą wprowadzać w nim zmian. W tym artykule pokażemy, jak uzyskać listę otwartych plików na serwerze plików, dowiedzieć się, którzy użytkownicy ich używają i jak zresetować te sesje plików..

Treść

  • Wyświetl listę otwartych plików na serwerze plików Windows
  • Jak ustalić, który użytkownik otworzył plik
  • Jak zamknąć otwarty plik
  • Jak zdalnie zamykać otwarte pliki za pomocą PowerShell

Wyświetl listę otwartych plików na serwerze plików Windows

Listę plików otwieranych przez użytkowników na serwerze plików Windows można uzyskać za pomocą standardowej konsoli graficznej Zarządzanie komputerem (Zarządzanie komputerem - compmgmt.msc).

Uruchom konsolę Zarządzanie komputerem na serwerze plików (lub połącz się z nią zdalnie za pomocą konsoli z komputera) i przejdź do sekcji Narzędzia systemowe -> Udostępnione foldery -> Otwórz pliki (Narzędzia -> Foldery udostępnione -> Pliki otwarte). Prawa strona okna wyświetla listę plików serwera otwartych zdalnie. Lista zawiera lokalną ścieżkę do pliku, nazwę konta użytkownika, liczbę blokad i tryb, w którym plik jest otwarty (odczyt lub zapis + odczyt).

Tę samą listę otwartych plików można uzyskać za pomocą wbudowanego narzędzia konsoli Pliki otwarte. Na przykład za pomocą następującego polecenia można uzyskać identyfikator sesji, nazwę użytkownika i pełną ścieżkę lokalną do otwartego pliku:

Openfiles / Query / fo csv | więcej

Gdy użytkownik zdalnie uzyskuje dostęp do folderu lub pliku w folderze sieciowym (SMB) na serwerze, tworzona jest nowa sesja dla użytkownika, który definiuje to połączenie. Połączenia użytkowników są zarządzane za pomocą tych identyfikatorów sesji..

To samo polecenie można wykonać zdalnie, na przykład potrzebujesz listy otwartych plików na serwerze plików mskfs01:

Openfiles / Query / s mskfs01 / fo csv

Zespół Openfiles ma kolejną interesującą okazję, aby przejrzeć listę plików otwieranych lokalnie. Aby go użyć, musisz włączyć opcję Utrzymaj listę obiektów za pomocą polecenia openfiles / local on i zrestartuj serwer. Następnie pliki otwierane przez procesy lokalne zaczną się pojawiać na liście (zaleca się stosowanie tego trybu tylko do debugowania, ponieważ może to negatywnie wpłynąć na wydajność serwera).

Jak ustalić, który użytkownik otworzył plik

Aby zidentyfikować użytkownika, który otworzył (zablokował) plik cons.adm na serwerze uruchom polecenie:

Openfiles / Query / s mskfs01 / fo csv | find / i „cons.adm”

Klucz / i używane do wyszukiwania bez rozróżniania wielkości liter

Oczywiście możesz podać tylko część nazwy pliku. Na przykład musimy dowiedzieć się, kto otworzył plik xlsx, którego nazwa to farma liniowa, używamy tego potoku:

Openfiles / Query / s mskfs01 / fo csv | znajdź / i „farma” | znajdź / i „xlsx”

Możesz oczywiście znaleźć plik w konsoli graficznej zarządzania komputerem, ale jest to mniej wygodne (konsola nie zapewnia możliwości wyszukiwania).

Jak zamknąć otwarty plik

Aby zamknąć otwarty plik, musisz go znaleźć na liście plików w sekcji Otwórz plik i wybrać „Zamknij otwarty plik„.

Jeśli na serwerze plików znajdują się setki otwartych plików, znalezienie ich w konsoli nie będzie łatwe. Wygodniej jest korzystać z narzędzia Pliki otwarte. Jak już powiedzieliśmy, zwraca identyfikator sesji otwartego pliku. W przypadku tego identyfikatora sesji plik można przymusowo zamknąć, resetując połączenie. Znajdź identyfikator żądanego pliku:

Openfiles / Query / s mskfs01 / fo csv | znajdź / i „farma” | znajdź / i „.xlsx”

Odłączamy od niego użytkownika za pomocą otrzymanego identyfikatora:

Openfiles / Disconnect / s mskfs01 / ID 67109098

Jak zdalnie zamykać otwarte pliki za pomocą PowerShell

W Windows Server 2012 / Windows 8 PowerShell wprowadził cmdlety do pracy z piłkami i plikami na serwerze SMB. Tych poleceń cmdlet można używać do zdalnego resetowania połączeń z otwartym plikiem..

Listę otwartych plików można uzyskać za pomocą polecenia cmdlet Get.-SMBOpenFile , i zamknij plik (zresetuj połączenie) za pomocą Close-SmbOpenFile.

Łączymy się ze zdalnym serwerem:

$ sessn = New-CIMSession -Computername mskfs01

Znajdź i zamknij otwarty plik pubs.docx za pomocą jednego polecenia:

Get-SMBOpenFile -CIMSession $ sessn | gdzie $ _. Ścieżka "* pubs.docx" | Zamknij-SMBOpenFile -CIMSession $ sessn

Potwierdź zamknięcie pliku, naciskając Y.

Aby usunąć potwierdzenie wymuszonego zamknięcia pliku na serwerze, użyj przełącznika -Force

Tych samych poleceń można użyć, na przykład, do zamknięcia wszystkich plików otwartych przez niektórych użytkowników (użytkownik poszedł do domu i nie wydał plików). Na przykład, aby zresetować wszystkie sesje plików dla ipivanov, wykonaj

Get-SMBOpenFile -CIMSession $ sessn | gdzie $ _. ClientUserName "* ipivanov *" | Zamknij-SMBOpenFile -CIMSession $ sessn