今回は、Windows Server 2012 R2 Essentialsのファイル サービスを利用し、 「誰」が「どの共有ファイル」を使用しているかを確認する方法をメモ。
PowerShell、および、昔ながらの確認方法を説明します。
3行で分かる、この記事の内容!
- 共有フォルダや共有ファイルは、複数ユーザが利用しているため日中は簡単にサーバを再起動できない!
- とはいえ、再起動しなければならない時が来る!
- 被害を最小限にするためにも、接続中のユーザを把握し適切に切断する方法を理解する!
PowerShellから確認する/切断する
Windows 8 / Windows Server 2012 + Windows PowerShell 4.0から、SmbShare モジュールのxxx-SmbOpenFile 関数を利用する事ができます。利用する事で、共有ファイルを使用しているIPアドレス、ユーザ名、ファイル名等が分かります。
注意点は、PowerShellは管理者権限で実行してください。
- 使用中のファイル情報を取得したい:
Get-SmbOpenFile 関数を使います。
コンピュータ名でフィルタリングする場合は、-ClientComputerName パラメータ、ユーザでフィルタリングは-ClientUserName パラメータを使います。
ユーザ名は、ドメイン名\ユーザ名になります。
- 使用中のファイルを強制切断したい:
Close-SmbOpenFile 関数を使います。
-Force パラメータを使う事で強制切断する事が出来ます。
Windows 8 / 2012以外でPowerShellから接続中の共有ファイルを確認したい!場合は、AndrewMorganさんの「Get-OpenFiles」関数が便利だと思います。
Viewing open files on a file server from powershell.
コマンドプロンプトから確認する
コマンド プロンプトは、管理者として実行してください。
- NET SHARE コマンド
共有フォルダの一覧が確認できます
- NET SESSION コマンド
共有フォルダに接続中のセッション情報が確認できます。
セッションを切断する場合は、/DELETE オプションを付け実行します。
- NET FILE コマンド
現在開かれているファイル情報が確認できます。
ファイルを閉じる場合は、IDを指定し、/CLOSE オプションを付け実行します。
- OPENFILES.EXE
出力結果は、NET FILE コマンドに似ていますが若干異なります。
ファイルを閉じる場合は、/Disconnect パラメータ+αを付け実行します。
詳しくは、>openfiles.exe /Disconnect /?でヘルプを確認してください。
GUIから確認する
- [Win]+[R]→[compmgmt.msc]を実行
- [システム ツール]→[共有フォルダー]をクリック
- [共有]は、NET SHARE コマンドの結果と同じ
- [セッション]は、NET SESSION コマンドの結果と同じ
- [開いているファイル]は、NET FILE コマンドの結果と同じ
NET xxx コマンドを実行するとエラーになる場合
コマンド プロンプト、または、PowerShellから前述のNET xxxx コマンドを実行した場合システム エラー 5 が発生しました。のエラー メッセージが表示される事があります。
アクセスが拒否されました。
その場合は、コマンド プロンプト、または、PowerShellを管理者として実行してください。