ささやかな日々記

日々過ごす中で感じたことや培ったことが誰かの役に立てられたらと思うSEの雑記

PowerShell ファイルの作成・上書き

ファイルの作成と上書きについて。これはPowerShellに限った話ではないですが、上書きの方法と権限がなければ出来ないよ、というお話。

 

まずはファイルの新規作成

PS C:\> New-Item abc.txt


ディレクトリ: C:\


Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019/04/13 16:28 0 abc.txt

 

そして同じことをもう一度実行するとすでにファイルがあるため、当然失敗します。

PS C:\> New-Item abc.txt
New-Item : ファイル 'C:\abc.txt' は既に存在します。
発生場所 行:1 文字:1
+ New-Item abc.txt
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : WriteError: (C:\abc.txt:String) [New-Item], IOException
+ FullyQualifiedErrorId : NewItemIOError,Microsoft.PowerShell.Commands.NewItemCommand

 

上書きするためには「-Force」オプションを使用します。

PS C:\> New-Item abc.txt -Force


ディレクトリ: C:\


Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019/04/13 16:34 0 abc.txt

 

しかし、権限を読み取り専用に変更すると「Force」オプションをつけてもファイルの上書きがされず、操作が失敗します。

PS C:\> New-Item abc.txt -Force
New-Item : パス 'C:\abc.txt' へのアクセスが拒否されました。
発生場所 行:1 文字:1
+ New-Item abc.txt -Force
+ ~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (C:\abc.txt:String) [New-Item], UnauthorizedAccessException
+ FullyQualifiedErrorId : NewItemUnauthorizedAccessError,Microsoft.PowerShell.Commands.NewItemCommand

 

こんな感じで。

上書きオプション付けてても失敗して、あれ?ということがあったのでここにメモ。