【 Close-SmbOpenFile 】コマンドレット――SMBサーバ上で開かれているファイルを強制的に閉じるWindows PowerShell基本Tips(79)

本連載は、PowerShellコマンドレットについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は「Close-SmbOpenFile」コマンドレットを解説します。

» 2023年08月04日 05時00分 公開
[後藤諭史@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「Windows PowerShell基本Tips」のインデックス

連載目次

 本連載では、Windows PowerShellの基本的なコマンドレットについて、基本的な書式からオプション、具体的な実行例までを分かりやすく紹介していきます。今回は、「SMB(Server Message Block)」サーバ上で開かれているファイルを強制的に閉じる「Close-SmbOpenFile」コマンドレットです。

Close-SmbOpenFileコマンドレットとは?

 ネットワーク経由でのファイル共有は非常に便利です。しかし、権限さえあれば誰でもファイルを開いて編集できるため、自分が必要なときに他の人にファイルを開かれていて編集できない、といった場面に遭遇することもあるでしょう(画面1)。

ALT 画面1 2人同時にファイルを開くと、一方が「使用中のファイル」として編集できない

 本連載第75回で紹介した「Get-SmbOpenFile」は、誰がどこからアクセスしてきているかなどの詳細情報を取得するコマンドレットですが、今回紹介する「Close-SmbOpenFile」は、開かれているファイルを強制的に閉じるコマンドレットになります。

 コマンドプロンプトであれば「net file /close」を使用しますが、Close-SmbOpenFileコマンドレットはGet-SmbOpenFileコマンドレットと組み合わせることで、より便利に使用できます。

Close-SmbOpenFileコマンドレットの書式

Close-SmbOpenFile [オプション]


Close-SmbOpenFileコマンドレットの主なオプション

オプション 意味
-FileId 閉じたいファイルのIDを指定する。省略可能
-SessionId 閉じたいファイルを使用しているSMBセッションの「セッションID」を指定する。省略可能
-ClientComputerName 閉じたいファイルを使用しているセッションを確立している「IPアドレス」を指定する。省略可能
-ClientUserName 閉じたいファイルを使用しているセッションを確立している「ユーザー名」を指定する。省略可能


開かれているファイルを強制的に閉じる

 オプションを指定せずにClose-SmbOpenFileコマンドレットを実行すると、現在開かれている全てのファイルを閉じます(画面2)。ファイルを閉じる際には、閉じて問題ないかどうかの確認プロンプトが表示されるので、個別に応答する場合は[Y]キーで、全てを閉じて問題ない場合は[A]キーで応答します。なお、Close-SmbOpenFileコマンドレットは、管理者権限で実行する必要があります。

コマンドレット実行例

Close-SmbOpenFile

ALT 画面2 Close-SmbOpenFileコマンドレットをオプションなしで実行すると、全てのファイルを閉じる

 画面1のダイアログボックスで「ほかの人がファイルの使用を終了したときに通知を受け取る」を選択していた場合は、ファイルを強制的に閉じることで解放されるので、以下のような通知が届いて編集可能になります(画面3)。

ALT 画面3 ファイルを強制的に閉じた後、待機していたクライアントで編集可能となった旨のポップアップが表示される

 Close-SmbOpenFileコマンドレットの実行時に、確認プロンプトが不要である場合やスクリプトで本コマンドレットを使用する場合は、「-Force」オプションを指定することで、確認プロンプトを返すことなくファイルを閉じることができます(画面4)。

コマンドレット実行例

Close-SmbOpenFile -Force

ALT 画面4 「-Force」オプションを付与して実行すると、確認のプロンプトが表示されなくなる


指定したセッションが開いているファイルを閉じる

 特定のセッションが開いているファイルだけを閉じたい場合は、「-SessionId」オプションを利用して「セッションID」を指定します(画面5)。セッションIDはGet-SMBOpenFileコマンドレットで取得可能です。

コマンドレット実行例

Close-SmbOpenFile -SessionId "755914244109" -Force

ALT 画面5 「-SessionId」オプションを指定してファイルを閉じた


指定したファイルだけを閉じる

 特定のファイルだけを閉じたい場合は、「-FileId」オプションを利用して「ファイルID」を指定します(画面6)。ファイルIDはGet-SMBOpenFileコマンドレットで取得可能です。

コマンドレット実行例

Close-SmbOpenFile -FileId "755914247997" -Force

ALT 画面6 「-FileId」オプションを指定してファイルを閉じた


指定した拡張子のファイルだけを閉じる

 Close-SmbOpenFileコマンドレットはGet-SmbOpenFileコマンドレットと組み合わせることで、特定の拡張子を持つファイルだけを閉じることが可能です。

 使い方は、Get-SmbOpenFileコマンドレットで特定の拡張子を持つファイルを抽出し、パイプ(|)でClose-SMBOpenFileコマンドレットにつなぎます(画面7)。

コマンドレット実行例

Get-SmbOpenFile | Where-Object -Property ShareRelativePath -Match "\.PPTX" | Close-SmbOpenFile -Force

ALT 画面7 拡張子「.pptx」という条件を指定して、抽出されたファイルだけを閉じた

筆者紹介

後藤 諭史(ごとう さとし)

Microsoft MVP for Cloud and Datacenter Management(2012-2023)。現業の傍ら、コミュニティーイベントでの登壇や著作にてMicrosoftテクノロジーに関する技術情報の発信、共有を続けている。ネットワークやハードウェアといった物理層に近いところが大好きな、昔ながらのインフラ屋さん。得意技はケーブル整線。近著は『詳解! Windows Server仮想ネットワーク』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。