PowerShellでファイルやディレクトリの属性を設定・変更する Set-ItemProperty †
コマンドプロンプトのattribと同等とことをPowerShellでは、Set-ItemPropertyコマンドレットを使うことで実現できます。
以下にSet-ItemPropertyを使った使用例を記します。
関連記事 †
使用したPowerShellバージョンおよびWindows OS †
- PowerShell
$PSVersionTable
Name Value
---- -----
PSVersion 5.1.17763.592
PSEdition Desktop
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.17763.592
CLRVersion 4.0.30319.42000
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
- Windows
(Get-WmiObject Win32_OperatingSystem).Caption
Microsoft Windows 10 Home
ファイルとディレクトリを作成して読み取り専用にしてみる †
動作確認用にfooといる空ファイルとディレクトリを作成しました。
PS O:\wk> New-Item -ItemType File foo
ディレクトリ: O:\wk
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2019/07/08 21:17 0 foo
New-Item -ItemType Directory bar
ディレクトリ: O:\wk
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019/07/08 21:32 bar
ちなみに attrib コマンドのファイルの出力はAとなっています。
O:\wk>attrib foo
A O:\wk\foo
O:\wk>attrib bar
O:\wk\bar
Modeをみると、aがあるのでアーカイブ属性がついていますね。
詳細設定ボタンをクリックするとファイルをアーカイブ可能にするにチェックがついています。
Set-ItemPropertyの構文と属性値 †
Set-ItemPropertyの設定できる属性は下表の通りです。
- 属性オプション表
属性オプション | 意味 |
Archive | アーカイブ属性 |
Readonly | 読み取り専用属性 |
Hidden | 隠しファイル属性 |
Normal | 属性を外す |
System | システムファイル属性 |
実行例 †
上記で作成したfooファイルおよびbarディレクトリの属性を変更してみます。
- ReadOnly属性をつける
Set-ItemProperty -Path .\foo -Name Attributes -Value "ReadOnly"
Set-ItemProperty -Path .\bar -Name Attributes -Value "ReadOnly"
Get-ChildItem .
ディレクトリ: O:\wk
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 2019/07/08 21:32 bar
--r--- 2019/07/08 21:17 0 foo
rがついていますね。ReadOnlyになりました。
- 属性を外す
Set-ItemProperty -Path .\foo -Name Attributes -Value "Normal"
Set-ItemProperty -Path .\bar -Name Attributes -Value "Normal"
Get-ChildItem .
ディレクトリ: O:\wk
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019/07/08 21:32 bar
------ 2019/07/08 21:17 0 foo
rが外れているのが確認できます。
- ReadOnly, Hiddenを一緒につける
以下のようにReadOnlyとHiddenを一緒につけることもできます。
Set-ItemProperty -Path .\foo -Name Attributes -Value "ReadOnly,Hidden"
Get-ChildItem -Force .\foo
ディレクトリ: O:\wk
Mode LastWriteTime Length Name
---- ------------- ------ ----
--rh-- 2019/07/08 21:17 0 foo
rとhがついていますね。
ちなみにGet-ChildItemで隠しファイルを表示する場合は、上記の通り -Forceを付けます。
- 読み取り専用属性の有効・無効は以下のコマンド構文でも可能
読み取り専用の属性をオン・オフしたい場合は以下のように記述することもできます。
Set-ItemProperty -Path ファイルorディレクトリ -Name IsReadOnly -Value $True
Set-ItemProperty -Path ファイルorディレクトリ -Name IsReadOnly -Value $False
実行例です
Set-ItemProperty -Path .\foo -Name IsReadOnly $true
Get-ChildItem .\foo
ディレクトリ: O:\wk
Mode LastWriteTime Length Name
---- ------------- ------ ----
--r--- 2019/07/08 21:17 0 foo
Set-ItemProperty -Path .\foo -Name IsReadOnly $false
Get-ChildItem .\foo
ディレクトリ: O:\wk
Mode LastWriteTime Length Name
---- ------------- ------ ----
------ 2019/07/08 21:17 0 foo
以上、PowerShellでファイルやディレクトリのファイル属性を付与したり外したりする操作例でした。