Get-ChildItem
type: Concept
definition: 指定したパス以下のファイルやフォルダーを一覧・検索するPowerShellコマンドレット。-Recurseで再帰的に列挙でき、-Filterや-LiteralPath、LastWriteTimeによる絞り込みと組み合わせて使う。
alternative label: Get-ChildItemコマンドレット
should precede: Measure-Object

Get-Acl
type: Concept
definition: ファイルやフォルダーのセキュリティ記述子を取得し、既定でDACLのアクセス制御エントリ一覧(Accessプロパティ)を返すコマンドレット。SDDL形式でも取得できる。
alternative label: Get-Aclコマンドレット
recommended for: ACLの棚卸し・レポート化

PowerShell
type: Concept
definition: オブジェクトパイプラインとエラー処理機構を持つ、Microsoftが最も堅牢で最新のWindows自動化に推奨するコマンドラインシェル兼スクリプト言語。
alternative label: Windows PowerShell
alternative label: pwsh
alternative label: PowerShell 7
uses: Get-ChildItem
uses: Measure-Object
uses: Get-FileHash

Measure-Object
type: Concept
definition: パイプラインを流れるオブジェクトの件数・合計・平均・最大・最小を集計するPowerShellのコマンドレット。
alternative label: -Sum
alternative label: -Average
alternative label: -Maximum

走査漏れリスク
type: Concept
definition: アクセス拒否やパス長超過などにより、対象がファイルサーバー棚卸しの列挙・集計結果から漏れてしまうリスク。数えられなかった場所は「ゼロ」ではなく「不明」として扱う必要がある。
alternative label: 調査漏れ

MAX_PATH(パス長260文字)制限
type: Concept
definition: Windows APIのパス長上限が260文字であるという制限。レジストリのLongPathsEnabledとアプリ側のlongPathAware宣言の両方が揃わない限り多くのWin32関数に適用され、超えるパスでは列挙が失敗することがある。
alternative label: MAX_PATH

LastAccessTime(最終アクセス日時)
type: Concept
definition: ファイルが最後に読まれた日時を示すプロパティ。NTFSでは性能上の理由から更新が既定で無効化・システム管理されている環境が多く、実際に読まれていても更新されないことがある。
alternative label: 最終アクセス日時
not recommended for: 古いファイル(未使用ファイル)の判定
configured by: fsutil

古いファイル(未使用ファイル)の判定
type: Concept
definition: ファイルサーバーの棚卸しで、長期間更新・利用されていないファイルを一覧化し、削除候補の材料にする作業。
requires: Get-ChildItem

LastWriteTime(最終更新日時)
type: Concept
definition: ファイルの内容が最後に変更された日時を示すプロパティ。ファイルサーバー棚卸しにおける「古いファイル」判定の基準として推奨される。
alternative label: 最終更新日時
recommended for: 古いファイル(未使用ファイル)の判定

fsutil
type: Concept
definition: NTFSボリュームの低レベルな照会・設定を行うコマンドラインツール。ファイルのエクステント照会、8.3短縮名の設定、USNジャーナル操作、リパースポイント照会など多数のサブコマンドを持つ。
alternative label: fsutil.exe

Get-FileHash
type: Concept
definition: ファイルのハッシュ値(既定SHA256)を計算し、配布物やバックアップ、重複候補の内容が同一かを確認できるPowerShellのコマンドレット。

セキュリティ記述子
type: Concept
definition: ファイルやフォルダーごとに付く、所有者・DACL・SACLをまとめて保持する構造。Get-Aclが取得するのはこれである。
alternative label: Security Descriptor
verified by: Get-Acl

DACL(随意アクセス制御リスト)
type: Concept
definition: 誰に何を許可・拒否するかを列挙する、セキュリティ記述子内のアクセス制御リスト。Get-AclのAccessプロパティで見えるのはこの中身である。
alternative label: Discretionary Access Control List
stored in: セキュリティ記述子
configured by: icacls
configured by: Set-Acl

ACE(アクセス制御エントリ)
type: Concept
definition: DACLの1行に相当するエントリで、IdentityReference(誰が)・FileSystemRights(何ができるか)・AccessControlType(許可/拒否)・IsInherited(継承か直接付与か)を持つ。
alternative label: Access Control Entry
stored in: DACL(随意アクセス制御リスト)

icacls
type: Concept
definition: DACLの表示・変更を行うコマンドラインツール。/saveでACLをファイルへ保存し/restoreで復元でき、/grant・/remove・/resetなどのオプションを持つ。
alternative label: icacls.exe
recommended for: ACLの変更作業

Set-Acl
type: Concept
definition: 取得したセキュリティ記述子をモデルとして対象のACLを変更するコマンドレット。-WhatIf/-Confirmに対応する。
alternative label: Set-Aclコマンドレット

ACLの棚卸し・レポート化
type: Concept
definition: 誰がどこに何の権限を持っているかを一覧化し、CSVなどの台帳にまとめる調査作業。

ACLの変更作業
type: Concept
definition: 棚卸しと部門確認を経たうえで行う、フォルダー・ファイルのアクセス許可(DACL)の変更作業。

隔離→観察→削除の運用
type: Concept
definition: 削除の前に対象ファイルを日付入りの隔離フォルダーへ元の階層を保ったまま移し、台帳に記録して一定期間観察してから削除する運用手順。
alternative label: 隔離ワークフロー
verified by: Get-Acl

移動時のアクセス許可継承
type: Concept
definition: オブジェクトは移動先の親フォルダーから既定でアクセス許可を継承するが、唯一の例外が同じボリューム内の別フォルダーへの移動で、この場合だけ元のアクセス許可がそのまま保持される。
alternative label: Move-Itemの権限継承

UNCパス
type: Concept
definition: \\サーバー名\共有名\...の形式で共有フォルダーの実体を指す、Windowsのユニバーサル命名規則によるパス表記。
alternative label: Universal Naming Convention
alternative label: \\サーバー名\共有名
may cause: エラー1219(ERROR_SESSION_CREDENTIAL_CONFLICT)

エラー1219(ERROR_SESSION_CREDENTIAL_CONFLICT)
type: Concept
definition: 同じログオンセッションから同じサーバーへ異なるユーザー名で複数の接続を張ろうとしたときに返る、by design(仕様)のエラー。
alternative label: ERROR_SESSION_CREDENTIAL_CONFLICT

subject: PowerShell
predicate: uses
object: Get-ChildItem
description: PowerShellはGet-ChildItemでファイルサーバーの項目を再帰的に列挙できる
evidence: get-childitem
verified at: 2026-08-01
certainty: established

subject: PowerShell
predicate: uses
object: Measure-Object
description: PowerShellはMeasure-Objectでファイルサイズなどを集計できる
evidence: measure-object
verified at: 2026-08-01
certainty: established

subject: Get-ChildItem
predicate: shouldPrecede
object: Measure-Object
description: 容量調査ではGet-ChildItemで再帰的にファイルを列挙してから、その結果をMeasure-Objectで合計する
evidence: get-childitem
evidence: measure-object
verified at: 2026-08-01
certainty: established

subject: Get-ChildItem
predicate: mayCause
object: 走査漏れリスク
description: -ErrorAction SilentlyContinueで列挙を継続すると、アクセス拒否されたフォルダーの中身は集計・列挙から漏れる
evidence: about commonparameters
verified at: 2026-08-01
certainty: context-dependent

subject: MAX_PATH(パス長260文字)制限
predicate: mayCause
object: 走査漏れリスク
description: 260文字(MAX_PATH)を超えるパスでは、ツールによって列挙が失敗し走査結果に欠けが生じることがある
evidence: maximum-file-path-limitation
verified at: 2026-08-01
certainty: context-dependent

subject: LastAccessTime(最終アクセス日時)
predicate: notRecommendedFor
object: 古いファイル(未使用ファイル)の判定
description: NTFSでは最終アクセス日時の更新が既定で無効化・システム管理されている環境が多く、実際に読まれていても更新されないため、古いファイル判定の基準には使うべきでない
evidence: fsutil-behavior
verified at: 2026-08-01
certainty: established

subject: LastWriteTime(最終更新日時)
predicate: recommendedFor
object: 古いファイル(未使用ファイル)の判定
description: 最後に内容が変更された日時であるLastWriteTimeを、古いファイル判定の基準として使う
evidence: fsutil-behavior
verified at: 2026-08-01
certainty: established

subject: 古いファイル(未使用ファイル)の判定
predicate: requires
object: Get-ChildItem
description: 古いファイルの一覧化は、Get-ChildItemで対象ファイルを再帰列挙したうえでLastWriteTimeによる絞り込みを行うため、Get-ChildItemによる列挙を前提とする
evidence: get-childitem
verified at: 2026-08-01
certainty: established

subject: LastAccessTime(最終アクセス日時)
predicate: configuredBy
object: fsutil
description: 最終アクセス日時の更新の有効/無効は、fsutil behaviorのdisablelastaccessパラメーターとレジストリ値NtfsDisableLastAccessUpdateで制御される
evidence: fsutil-behavior
verified at: 2026-08-01
certainty: established

subject: PowerShell
predicate: uses
object: Get-FileHash
description: PowerShellはGet-FileHashで重複ファイルの候補をハッシュ値の一致で抽出できる
evidence: get-filehash
verified at: 2026-08-01
certainty: established

subject: セキュリティ記述子
predicate: verifiedBy
object: Get-Acl
description: ファイル・フォルダーのセキュリティ記述子はGet-Aclコマンドレットで取得・確認できる
evidence: get-acl
verified at: 2026-08-01
certainty: established

subject: DACL(随意アクセス制御リスト)
predicate: storedIn
object: セキュリティ記述子
description: DACLは、ファイル・フォルダーごとに付くセキュリティ記述子の中に保持される
evidence: get-acl
evidence: system.security.accesscontrol.objectsecurity.areaccessrulesprotected
verified at: 2026-08-01
certainty: established

subject: ACE(アクセス制御エントリ)
predicate: storedIn
object: DACL(随意アクセス制御リスト)
description: ACE(アクセス制御エントリ)はDACLの中に1行ずつ並ぶ
evidence: get-acl
verified at: 2026-08-01
certainty: established

subject: DACL(随意アクセス制御リスト)
predicate: configuredBy
object: icacls
description: DACLはicaclsコマンドで表示・変更できる
evidence: icacls
verified at: 2026-08-01
certainty: established

subject: DACL(随意アクセス制御リスト)
predicate: configuredBy
object: Set-Acl
description: DACLはGet-Aclで取得したセキュリティ記述子を編集し、Set-Aclで適用することでも変更できる
evidence: set-acl
verified at: 2026-08-01
certainty: established

subject: Get-Acl
predicate: recommendedFor
object: ACLの棚卸し・レポート化
description: Get-Aclは結果がオブジェクトなのでフィルタ・CSV化が容易で、調査・レポート用途の第一候補になる
evidence: get-acl
verified at: 2026-08-01
certainty: established

subject: icacls
predicate: recommendedFor
object: ACLの変更作業
description: icaclsは/saveでバックアップを取り/restoreで戻せるため、定型的な権限変更の第一候補になる
evidence: icacls
verified at: 2026-08-01
certainty: established

subject: Set-Acl
predicate: recommendedFor
object: ACLの変更作業
description: ルールをコードで組み立てる必要がある複雑な条件付き変更にはSet-Aclを使う
evidence: set-acl
verified at: 2026-08-01
certainty: context-dependent

subject: 隔離→観察→削除の運用
predicate: requires
object: icacls
description: 同じボリューム内の移動ではアクセス許可が継承されず元のまま残る例外があるため、隔離後にicacls /resetで継承既定へ戻す運用が必要になる
evidence: permissions-on-copying-moving-files
evidence: icacls
verified at: 2026-08-01
certainty: context-dependent

subject: 隔離→観察→削除の運用
predicate: requires
object: 移動時のアクセス許可継承
description: 隔離先を元と同じボリュームにする(記事が勧める構成)場合、隔離作業はアクセス許可が継承されず元のまま残るという例外を踏まえて設計する必要がある(別ボリュームへ移す場合は移動先の継承をそのまま受けるため、この考慮は不要)
evidence: permissions-on-copying-moving-files
verified at: 2026-08-01
certainty: context-dependent

subject: UNCパス
predicate: mayCause
object: エラー1219(ERROR_SESSION_CREDENTIAL_CONFLICT)
description: UNCパス越しに同じサーバーへ複数のユーザー名で接続しようとすると、2つ目の接続がエラー1219(ERROR_SESSION_CREDENTIAL_CONFLICT)で失敗する
evidence: system-error-codes--1000-1299-
verified at: 2026-08-01
certainty: established

subject: Get-ChildItem
predicate: notRecommendedFor
object: UNCパス
description: 大規模走査でUNCパス越しにGet-ChildItemを再帰実行すると、ファイル1つごとのメタデータ取得がネットワーク往復になり所要時間が桁で変わるため、可能ならファイルサーバー上またはPowerShell Remotingでの実行が推奨される
evidence: use-universal-naming-convention-path
verified at: 2026-08-01
certainty: context-dependent

subject: 隔離→観察→削除の運用
predicate: verifiedBy
object: Get-Acl
description: 隔離後の権限が想定どおりかは、移動後に数件をGet-Aclで確認することで検証できる
evidence: get-acl
evidence: permissions-on-copying-moving-files
verified at: 2026-08-01
certainty: established