もくじ
📝 はじめに
PowerShellでファイル操作をしていると、
「このファイルは読み取り専用か?」
「隠しファイルになっていないか?」
「なぜ削除や上書きができないのか?」
といった疑問が出てくることがあります。
こうした原因を調べるうえで重要なのが
ファイル属性です。
PowerShellでは
Get-ItemProperty を使うことで、
ファイルが持つ属性情報を確認できます。
- 削除できないファイルの原因を調べたい
- 読み取り専用・隠し属性を確認したい
- スクリプトで属性による判定をしたい
✅ このコマンドでできること(要点)
- ファイルの属性情報を取得できる
- 読み取り専用・隠し・システム属性を確認できる
- 属性を条件にした処理が書ける
- トラブル原因の切り分けに使える
✅ Get-ItemProperty で属性を確認できる理由
Get-ItemProperty は、
ファイルやフォルダが持つ
プロパティ(値)を取得するコマンドです。
ファイルの場合、
Attributes というプロパティに
「読み取り専用」「隠し」などの属性情報が含まれています。
つまり、
「なぜ操作できないのか?」を調べるときの
確認用コマンドとして非常に有効です。
🧩 基本構文
Get-ItemProperty ファイルパス
ファイルやフォルダのパスを指定します。
▶ 基本的な使い方(まずこれだけ)
🔹 ファイルの属性を確認する
Get-ItemProperty C:\Work\sample.txt
出力の中にある
Attributes が
ファイル属性です。
🔹 属性だけを確認する
(Get-ItemProperty C:\Work\sample.txt).Attributes
読み取り専用(ReadOnly)や
隠し(Hidden)などが表示されます。
🛠 よく使われる指定例
🔹 読み取り専用かどうかを判定する
$attr = (Get-ItemProperty C:\Work\sample.txt).Attributes
$attr -match "ReadOnly"
読み取り専用属性が含まれているかを確認できます。
🔹 隠しファイルかどうかを確認する
(Get-ItemProperty C:\Work\sample.txt).Attributes -match "Hidden"
隠し属性が設定されている場合は
True になります。
💼 実務でよく使う使用例(応用)
🔹 削除前に読み取り専用をチェックする
$item = Get-ItemProperty C:\Temp\data.txt
if ($item.Attributes -match "ReadOnly") {
Write-Host "読み取り専用のため削除できません"
}
🔹 属性によって処理を分ける
$attr = (Get-ItemProperty C:\Work\sample.txt).Attributes
if ($attr -match "Hidden") {
Write-Host "隠しファイルです"
}
- Get-ChildItem で複数ファイル取得
- Where-Object で属性条件を指定
- -Force と組み合わせて対処
🧩 よくある勘違い・つまずきポイント
- Get-Item では属性の確認が分かりにくい
- Attributes は複数同時に設定される場合がある
- 文字列として判定するときは注意が必要
- フォルダにも属性がある
- 権限エラーと属性エラーを混同しやすい
🔄 cmdとの違いについて
cmd では attrib コマンドを使いますが、
PowerShellでは
Get-ItemProperty によって
属性をオブジェクトとして扱えるのが特徴です。
そのため、条件分岐や自動処理に向いています。
⚠ エラー・うまく動かないときの確認ポイント
- 指定したファイルが存在しているか
- 対象がファイルかフォルダか
- 属性ではなく権限の問題ではないか
- 管理者権限が必要な場所ではないか
🧠 注意点
ファイル属性は
削除・コピー・移動の可否に影響します。
操作できない場合は、
まず属性を確認する癖をつけると
トラブル対応がスムーズになります。
📌 まとめ
- Get-ItemProperty でファイル属性を確認できる
- Attributes プロパティが重要
- 読み取り専用・隠し属性の判定に使える
- トラブル切り分けに非常に有効
🔎 PowerShellコマンドを探す
やりたいことからコマンドを探すこともできます。
- ファイル属性を確認したい
- 削除できない原因を調べたい
- 読み取り専用かどうか確認したい
- 隠しファイルを判定したい
- エラーや実行できない原因を調べたい
- PowerShellで安全に操作したい
- 自動処理で条件分岐したい
