Windows Creating and Opening Files
最近PowerShellを使ってスクリプトを書いたのですが、Windowsのファイルオープン仕様でまんまとトラップにはまりました。UNIXの人間だからはまったのか...
Windowsでは、ファイルをオープンする際、アクセスモードと共有モードの指定ができるようです。
監視系のソフトが以下のモードで常時ファイルをオープンしているとします。(多分)
アクセスモード | 共有モード |
---|---|
READ | WRITE/READ/DELETE |
共有モードがWRITE/READ/DELETE全てOKだからファイルをクリアするのに、Clear-Contentコマンドでも問題ないだろうと思っていました。
が、、、
Clear-contentのコマンドが異常終了。。
Clear-contentコマンドのモードを確認すると以下のとおり、共有モードがWRITEなんですね。
つまりREADでオープンしているプロセスがいるので、WRITEだけ許可するのはおかしいだろということですね。結局Out-fileコマンドでクリアすることにしました。
PSコマンド | アクセスモード | 共有モード |
---|---|---|
Clear-Content | WRITE/READ | WRITE |
Out-file | WRITE/READ | READ |
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363874%28v=vs.85%29.aspx
Windowsは難しい〜。っていうかClear-ContentでREADを許可しない仕様はどうなのって気がします。
2014年入ってからまだいいことないな〜。年男なのに。。