WindowsのファイルをPowerShellを使ってロックファイルにする

どうも、Tです。

とあるテストでWindowsで使っているCIFS共有のオープンファイルに対しての検証が必要になったのですが、そういえばどうやるのか・・・とつまずいたので備忘録です。

やりたいこと

CIFS共有領域にロックファイルを作成する

環境

  • ファイルの場所:CIFS領域
  • OS:Windows 10 Pro バージョン1809

ファイルをロックする

下記のコマンドでファイルのロック、アンロックが可能です。

# Lock
$file = [System.IO.File]::Open($filePath,[System.IO.FileMode]::Open,[System.IO.FileAccess]::Read,[System.IO.FileShare]::None)

# UnLock
$file.Close()

コマンドの$filePathの部分が、共有するファイル名までのパスを指定する部分ですが、”Z:\locktest.txt”のようにダブルウォーテーションで括ってあげてください。

あと、$file.Close()でアンロックできるはずですが、なぜかロックが外れませんでした・・・・PowerShellを閉じるとアンロック状態になります。

ファイルロックの確認

ロック状態でテキストファイルを開こうとすると下記のようなメッセージが表示されます。

削除しようとするとPowerShellがロックしているため削除できません。

参考

PowerShellでファイルロックをする方法 - Qiita
Power Shellを使ってみた初めて単体テスト設計書を作成した際に参考にしていた設計書に「対象ファイルが開かれているときに操作ができないこと」というテスト項目が現れました。利用している…

まとめ

やりたいことは簡単なんですが、Windowsはこのあたりが面倒です。System.IOを使って制御しているそうですが、よくわからんので暇なとき調べよ・・・。