- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2019-07-09T00:16:14+09:00","","")
#navi(../)
* PowerShellでファイルやディレクトリの属性を設定・変更する Set-ItemProperty [#qd228e75]
コマンドプロンプトのattribと同等とことをPowerShellでは、Set-ItemPropertyコマンドレットを使うことで実現できます。~
以下にSet-ItemPropertyを使った使用例を記します。
#htmlinsert(win-top.html)
#contents
* 関連記事 [#u70bf396]
-[[PowerShellで読み取り専用ファイル・フォルダの一覧を取得する>PowerShell/読み取り専用ファイル・フォルダの一覧を取得する]]
-[[コマンドプロンプトでファイル属性の表示および変更・attrib>コマンドプロンプト/ファイル属性の表示および変更・attrib]]
-[[コマンドプロンプトでフォルダのみ読み取り専用にする方法・attrib>コマンドプロンプト/フォルダのみ読み取り専用にする方法・attrib]]
* 使用したPowerShellバージョンおよびWindows OS [#o882866a]
-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
* ファイルとディレクトリを作成して読み取り専用にしてみる [#zc6b59c5]
動作確認用に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があるのでアーカイブ属性がついていますね。~
#ref(01.png)
#br
詳細設定ボタンをクリックするとファイルをアーカイブ可能にするにチェックがついています。
#ref(02.png)
#br
** Set-ItemPropertyの構文と属性値 [#s0d5ce74]
Set-ItemPropertyの設定できる属性は下表の通りです。~
-属性オプション表
|''属性オプション''|''意味''|
|Archive|アーカイブ属性|
|Readonly|読み取り専用属性|
|Hidden|隠しファイル属性|
|Normal|属性を外す|
|System|システムファイル属性|
-構文~
Set-ItemProperty -Path ファイル名rディレクトリ -Name Attributes -Value 属性オプション
属性は複数同時に付与することができます。
** 実行例 [#jc4bc0c0]
上記で作成したfooファイルおよびbarディレクトリの属性を変更してみます。
- ReadOnly属性をつける
Set-ItemProperty -Path .\foo -Name Attributes -Value "ReadOnly"
Set-ItemProperty -Path .\bar -Name Attributes -Value "ReadOnly"
#br
Get-ChildItem .
ディレクトリ: O:\wk
Mode LastWriteTime Length Name
---- ------------- ------ ----
d-r--- 2019/07/08 21:32 bar
--r--- 2019/07/08 21:17 0 foo
#br
''r''がついていますね。ReadOnlyになりました。
- 属性を外す
Set-ItemProperty -Path .\foo -Name Attributes -Value "Normal"
Set-ItemProperty -Path .\bar -Name Attributes -Value "Normal"
#br
Get-ChildItem .
ディレクトリ: O:\wk
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2019/07/08 21:32 bar
------ 2019/07/08 21:17 0 foo
#br
''r''が外れているのが確認できます。
- ReadOnly, Hiddenを一緒につける
以下のようにReadOnlyとHiddenを一緒につけることもできます。
Set-ItemProperty -Path .\foo -Name Attributes -Value "ReadOnly,Hidden"
#br
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 .\foo -Name Attributes -Value "Normal"
#br
Get-ChildItem -Force .\foo
ディレクトリ: O:\wk
Mode LastWriteTime Length Name
---- ------------- ------ ----
------ 2019/07/08 21:17 0 foo
- ''読み取り専用属性の有効・向こうは以下のコマンド構文でも可能''
読み取り専用の属性をオン・オフしたい場合は以下のように記述することもできます。
Set-ItemProperty -Path ファイルorディレクトリ -Name IsReadOnly -Value $True
#br
Set-ItemProperty -Path ファイルorディレクトリ -Name IsReadOnly -Value $False
#br
実行例です
Set-ItemProperty -Path .\foo -Name IsReadOnly $true
Get-ChildItem .\foo
ディレクトリ: O:\wk
Mode LastWriteTime Length Name
---- ------------- ------ ----
--r--- 2019/07/08 21:17 0 foo
#br
Set-ItemProperty -Path .\foo -Name IsReadOnly $false
Get-ChildItem .\foo
ディレクトリ: O:\wk
Mode LastWriteTime Length Name
---- ------------- ------ ----
------ 2019/07/08 21:17 0 foo
以上、PowerShellでファイルやディレクトリのファイル属性を付与したり外したりする操作例でした。
#htmlinsert(win-btm.html)