今週は、ファイル共有機能によって共有しているフォルダ、あるいはそこに置かれたファイルへの接続を、管理者が確認したり、強制的にクローズしたりする方法について解説する。通常はあまり必要としない機能だが、サーバのメンテナンス、あるいはクライアントPCのトラブルといった場面では必要性が高い。

セッションの強制切断

[コンピュータの管理]管理ツールでは、共有資源に誰が接続しているか、どのファイルが開かれているか、といった情報の確認が可能だ。サーバのシャットダウンや再起動を行う場面、あるいはクライアントPCがハングアップして強制再起動した際にロックされたままのファイルが残った場面で、これらの機能が役に立つ。

Windowsサーバでは、ユーザーがサーバの共有資源に接続していることを指して「セッション」という(TCP/IPでいうところのセッションとは意味が異なる)。そのセッションの一覧は、[コンピュータの管理]管理ツール左側のツリー画面で[システムツール]-[共有フォルダ]-[セッション]を選択すると確認できる。

また、一覧で強制切断したいセッションを選択して、[操作]-[セッションを閉じる]、あるいは右クリックして[セッションを閉じる]を選択すると、セッションの強制切断が可能だ。

[システムツール]-[共有フォルダ]-[セッション]を選択すると、セッションの一覧表示や強制切断が可能

ちなみに、セッションの一覧表示と強制切断は、NET SESSIONコマンドでも行える。ただしこのコマンドでは、すべての共有フォルダを対象とする点に注意したい(特定の共有フォルダに限定することができない)。以下にNET SESSIONコマンドの実行例を示す。

セッション一覧の表示

NET SESSION

すべてのセッションを強制的に閉じる

NET SESSION /DELETE

開かれたファイルの強制クローズ

アプリケーションソフトが共有フォルダ上のファイルを開いた状態で、そのソフトウェア、あるいはオペレーティングシステムがハングアップすると、ファイルが開かれた状態のままになる場合がある。すると、そのファイルはロックがかかった状態になり、他のユーザーが開こうとしてもエラーになってしまう。そのままでは具合が悪いが、[コンピュータの管理]管理ツールを使えば強制クローズが可能だ。

[コンピュータの管理]管理ツール左側のツリー画面で、[システムツール]-[共有フォルダ]-[開いているファイル]を選択すると、画面右側には開かれているファイルの一覧を表示する。

その中から、開きっぱなしになってしまったファイルを選択して、[操作]-[開かれているファイルを閉じる]、あるいは右クリックして[開かれているファイルを閉じる]を選択すると、強制クローズが可能だ。ただし、間違って問題のないファイルを強制クローズすると別のトラブルの原因になりかねない。ユーザー名の情報、あるいは前述したセッションの情報も併用して、強制クローズの対象を間違えないように念を入れて確認したい。

[システムツール]-[共有フォルダ]-[開いているファイル]を選択すると、開かれているファイルの一覧表示や強制クローズが可能

なお、開かれたファイルの確認や強制クローズ操作は、NET FILEコマンド、あるいはOPENFILESコマンドで行うこともできる。

NET FILEコマンドでもOPENFILESコマンドでも、個々のファイルごとにID番号を表示するので、クローズしたいファイルに該当するID番号を確認した上で、強制クローズを指示する。OPENFILESコマンドの場合、特定のユーザーが開いているファイルをまとめてクローズできるなど、NET FILEコマンドよりも機能的に優れている。

開かれているファイルの一覧表示

NET FILE

表示した一覧のうち、識別IDが「258」のファイルを強制クローズ

NET FILE 258 /CLOSE

開かれているファイルの一覧を、LIST形式・詳細情報付きで表示

OPENFILES /Query /FO LIST /V

表示した一覧のうち、識別IDが「16」のファイルを強制クローズ

OPENFILES /Disconnect /ID 16

表示した一覧のうち、ユーザー「masuda」が開いているファイルを強制クローズ

OPENFILES /Disconnect /A masuda

機能的に優れていることから、これから覚えるのであればOPENFILESコマンドだけでよいだろう。そのOPENFILESコマンドの構文は、以下のようになっている。

OPENFILES /Query [/S <システム> [/U [<ドメイン名>\]<ユーザー名> [/P [<パスワード>]]]] [/FO {TABLE | LIST | CSV}] [/NH] [/V]
OPENFILES /Disconnect [/S <システム> [/U [<ドメイン名>\]<ユーザー名> [/P [<パスワード>]]]] {[/ID <id>] [/A <ユーザー名>] [/O {Read | Write | Read/Write | *}]} [/OP <ファイル>]
OPENFILES /Local {ON | OFF}
引数 説明
/Query 開かれているファイルに関する情報を表示
/Disconnect 開かれているファイルを強制クローズ
/S リモートコンピュータを指定する。省略時はローカルコンピュータが対象となる。「/Query」「/Disconnect」と併用する
/U [\] コマンド実行時の資格情報を指定する。「/Query」「/Disconnect」と併用する
/P [] 「/U」で指定したユーザーのパスワードを指定する。省略すると、コマンド実行時に問い合わせる
/FO {TABLE | LIST | CSV} 「/Query」と併用して、出力結果の表示形式を指定する
/NH 「/Query」と併用して、列の見出しを表示しないように指示する。「/FO TABLE」あるいは「/FO CSV」で意味を持つ
/V 「/Query」と併用して、詳細情報の表示を指示する
/ID 「/Disconnect」と併用して、強制的に閉じるファイルのIDを指示する。IDに「*」を指定すると、開かれているすべてのファイルを強制的に閉じる
/A 「/Disconnect」と併用して、特定のユーザーが開いているファイルをまとめてクローズする。「*」はすべてのユーザーを対象とする
/O {Read | Write | Read/Write | *} 「/Disconnect」と併用して、どのモードで開かれたファイルを切断対象にするかを指定する。「*」はすべてのファイルを対象とする
/OP 「/Disconnect」と併用して、強制クローズの対象をファイル名で指定する。「*」はすべてのファイルを対象とする
/Local {ON | OFF} ローカルで開いているファイルに関する情報を表示するかどうかを指定する。ONは表示、OFFは非表示