#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)