#author("2019-07-09T00:16:14+09:00","","")
#author("2019-07-09T00:17:33+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)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS