Windows 파일 서버 관리자는 여러 사용자가 동시에 연 공유 파일을 강제로 닫아야 하는 경우가 많습니다. 이것은 일반적으로 데스크톱 소프트웨어가 예상대로 작동하지 않거나 사용자가 잘못 로그오프하거나 사용자가 파일을 열고 닫는 것을 잊은 경우(집에 갔을 때, 휴가 중 등) 발생합니다. 이 모든 경우에 공유 네트워크 폴더의 파일은 여전히 열려 있고 잠겨 있으며 다른 사용자가 수정할 수 없습니다. 다른 사용자는 잠긴 파일을 열려고 할 때 다음과 같은 메시지를 볼 수 있습니다(사용된 응용 프로그램에 따라 다름):The document filename is locked for editing by another user. To open a read-only copy of his document, click…
이 기사에서는 Windows 파일 서버에서 열린 파일 목록을 가져오는 방법, 공유 폴더에서 파일을 잠근 사용자를 찾는 방법, 열린 파일의 잠금을 해제하기 위해 파일 세션을 닫는(재설정) 방법을 보여줍니다.피>
Windows Server의 공유 네트워크 폴더에서 열린 파일 보기
내장된 컴퓨터 관리 를 사용하여 Windows 파일 서버에서 사용자가 연 파일 목록을 얻을 수 있습니다. (compmgmt.msc
) 그래픽 스냅인.
파일 서버에서 컴퓨터 관리 콘솔을 열고(또는 컴퓨터에서 실행 중인 관리 콘솔에서 원격으로 서버에 연결) 시스템 도구 로 이동합니다. -> 공유 폴더 -> 파일을 엽니다. 현재 SMB 서버에서 열려 있는 파일 목록이 창 오른쪽에 표시됩니다. 목록에는 파일에 대한 로컬 경로, 파일을 여는 사용자 계정 이름, 잠금 수 및 파일을 여는 모드(읽기 또는 쓰기+읽기)가 포함됩니다.
내장된 openfiles.exe
를 사용하여 열린 파일의 동일한 목록을 얻을 수 있습니다. 콘솔 도구. 예를 들어, 다음 명령을 사용하여 세션 ID, 사용자 이름 및 열린 파일에 대한 전체 로컬 경로를 가져올 수 있습니다.
openfiles /Query /fo csv |more
사용자가 서버의 공유 네트워크 폴더에 있는 폴더나 파일에 원격으로 액세스하면 새 SMB 세션이 생성됩니다. 이러한 세션 ID를 사용하여 열린 파일을 관리할 수 있습니다.
원격 서버에 열려 있는 파일 목록을 표시할 수 있습니다. 예를 들어 lon-fs01의 공유 폴더에서 열려 있는 모든 파일을 나열해야 합니다. 호스트:
openfiles /Query /s lon-fs01 /fo csv
openfiles
명령을 사용하면 로컬에서 열린 파일 목록도 볼 수 있습니다. 이를 사용하려면 "객체 목록 유지 " 명령을 사용하는 옵션:openfiles /local on
, 서버를 재부팅하십시오. 그 후 openfiles
명령은 로컬 프로세스에서 연 파일을 표시합니다(서버 성능에 부정적인 영향을 줄 수 있으므로 이 모드는 디버깅 목적으로만 사용하는 것이 좋습니다). 공유 폴더에서 파일을 잠그고 있는 사람을 찾는 방법
filename.docx를 열(잠근) 사용자를 식별하려면 원격 서버 lon-fs01의 공유 네트워크 폴더에 있는 파일에서 다음 명령을 실행합니다.
openfiles /Query /s lon-fs01 /fo csv | find /i "filename.docx"
/i
키는 대소문자를 구분하지 않는 파일 검색을 수행하는 데 사용됩니다. 파일 이름의 일부만 지정할 수 있습니다. 예를 들어 이름에 'sale_report'가 포함된 XLSX 파일을 열었던 사용자를 찾아야 합니다. 다음 파이프를 사용하십시오.
openfiles /Query /s lon-fs01 /fo csv | find /i "sale_report"| find /i "xlsx"
찾기
물론 컴퓨터 관리 GUI에서 이 파일을 찾을 수 있지만 덜 편리합니다(이 콘솔은 검색 기능을 제공하지 않습니다).
SMB 공유에서 열린 파일을 강제로 닫는 방법
열려 있는 파일을 닫으려면 파일 열기의 파일 목록에서 파일을 찾으세요. 섹션에서 열린 파일 닫기 를 선택하십시오. 컨텍스트 메뉴에서.
파일 서버에 수백 개의 열린 파일이 있는 경우 콘솔에서 특정 파일을 찾기가 쉽지 않습니다. Openfiles 를 사용하는 것이 더 편리합니다. 명령줄 도구. 이미 말했듯이 열린 파일의 세션 ID를 반환합니다. 이 세션 ID를 사용하여 SMB 연결을 재설정하여 파일을 강제로 닫을 수 있습니다.
먼저 열려 있는 파일의 세션 ID를 찾아야 합니다.
openfiles /Query /s lon-fs01 /fo csv | find /i "farm"| find /i ".xlsx"
찾기
수신된 SMB 세션 ID를 사용하여 파일에서 사용자 연결 끊기:
openfiles /Disconnect /s lon-fs01 /ID 617909089
모든 세션을 강제로 재설정하고 특정 사용자가 연 모든 파일의 잠금을 해제할 수 있습니다.
openfiles /disconnect /s lon-fs01/u corp\mjenny /id *
openfiles /disconnect
를 사용하십시오. 명령 또는 Close-SMBOpenFile
cmdlet(아래에서 설명)은 매우 주의해야 합니다. Get-SMBOpenFile:PowerShell을 사용하여 열린 파일 처리기 찾기 및 닫기
Windows Server 2012/Windows 8용 PowerShell 버전에는 SMB 서버에서 공유 및 파일을 관리하기 위한 새로운 cmdlet이 나타났습니다. 이러한 cmdlet을 사용하여 열린 파일에 대한 네트워크 연결을 원격으로 닫을 수 있습니다.
Get-SMBOpenFile을 사용하여 열려 있는 파일 목록을 가져올 수 있습니다. cmdlet. SmbOpenFile 닫기 원격 파일에 대한 연결을 닫거나 재설정하는 데 사용됩니다.
Windows SMB 서버에서 열려 있는 파일 목록을 표시하려면 다음 명령을 실행하십시오.
Get-SMBOpenFile
이 명령은 파일 ID, 세션 ID 및 전체 파일 이름(경로)을 반환합니다.
사용자 및 컴퓨터 이름(IP 주소)으로 열려 있는 파일 목록을 표시할 수 있습니다.
Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID
특정 사용자가 연 모든 파일을 나열할 수 있습니다.
Get-SMBOpenFile –ClientUserName "corp\mjenny"|select ClientComputerName,Path
또는 특정 컴퓨터/서버에서:
Get-SMBOpenFile –ClientComputerName 192.168.1.190| select ClientUserName,Path
선택
열린 파일 목록을 패턴별로 표시할 수 있습니다. 예를 들어, 모든 exe를 나열하려면 공유 폴더에서 열린 파일:
Get-SmbOpenFile | Where-Object {$_.Path -Like "*.exe*"}
또는 특정 이름의 파일 열기:
Get-SmbOpenFile | Where-Object {$_.Path -Like "*reports*"}
Close-SmbOpenFile cmdlet은 열린 파일 처리기를 닫는 데 사용됩니다. ID로 파일을 닫을 수 있습니다:
Close-SmbOpenFile -FileId 4123426323239
그러나 일반적으로 파일을 닫는 것이 더 편리합니다.
Get-SmbOpenFile | where {$_.Path –like "*annual2020.xlsx"} | Close-SmbOpenFile -Force
Out-GridView
사용 cmdlet을 사용하면 열려 있는 파일을 찾고 닫기 위한 간단한 GUI 양식을 만들 수 있습니다. 다음 스크립트는 열린 파일을 나열합니다. SMB 세션을 재설정하려는 열린 파일을 찾으려면 Out-GridView 테이블의 기본 제공 필터를 사용해야 합니다. 그런 다음 필요한 파일을 선택하고 확인을 클릭해야 합니다. 그 결과 선택한 파일이 강제로 닫힙니다.
Get-SmbOpenFile|select ClientUserName,ClientComputerName,Path,SessionID| Out-GridView -PassThru –title “Select Open Files”|Close-SmbOpenFile -Confirm:$false -Verbose
PowerShell을 사용하여 원격 컴퓨터에서 열린 파일을 닫는 방법
Get-SMBOpenFile
및 Close-SmbOpenFile
cmdlet을 사용하여 열린(잠긴) 파일을 원격으로 찾고 닫을 수 있습니다. 먼저 CIM 세션을 통해 원격 Windows SMB 서버에 연결해야 합니다.
$sessn = New-CIMSession –Computername lon-fs01
Enter-PSSession
또는 Invoke-Command
. 다음 명령은 열린 파일 pubs.docx에 대한 SMB 세션을 찾습니다. 파일 세션을 닫습니다.
Get-SMBOpenFile -CIMSession $sessn | where {$_.Path –like "*pubs.docx"} | Close-SMBOpenFile -CIMSession $sessn
Y
를 눌러 파일 닫기를 확인합니다. . 결과적으로 파일의 잠금을 해제했습니다. 이제 다른 사용자가 열 수 있습니다.
SMB 서버에서 파일을 강제로 닫는 확인을 제거하려면
-Force
를 사용하십시오. 열쇠. PowerShell을 사용하면 SMB 세션을 닫고 특정 사용자가 연 모든 파일의 잠금을 해제할 수 있습니다(사용자가 집에 가서 열린 파일을 해제하지 않음). 예를 들어, 사용자 mjenny의 모든 파일 세션을 재설정하려면 , 다음 명령을 실행하십시오:
Get-SMBOpenFile -CIMSession $sessn | where {$_.ClientUserName –like "*mjenny*"}|Close-SMBOpenFile -CIMSession $sessn