mirror of https://github.com/raandree/NTFSSecurity
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.7 KiB
7.7 KiB
| status | last-verified | owner | source |
|---|---|---|---|
| current | 2026-10-04 | active-agent | repository evidence |
Progress
Current status
PRs #91 to #96 are merged; master (4f9f7cc) carries version 5.0.0,
which is not released yet. CI runs on GitHub Actions: build, docs checks,
and tests in Windows PowerShell 5.1 and PowerShell 7, plus the wiki, which
is generated from Docs (43 pages). AppVeyor no longer reports on master.
PR-ready locally: ai/version-history, the version history completed from
the PowerShell Gallery packages.
Recent milestones
- 2026-10-02: Memory Bank initialized. PR #91 aligned the documentation
with the code (36 cmdlet pages, conceptual pages, README,
mkdocs.yml,.readthedocs.yml,CHANGELOG.md) and madeappveyor.ymlbuild the module and check the docs against that build (Decision 6); squash-merged as690d8dd. - 2026-10-02: PR #83 (TechNet links) closed by the maintainer as superseded by #91.
- 2026-10-04: Work package 1 merged as PR #92 with a merge commit
(
d917832):promptHistory.mdignored, Decision 7, Decisions moved todecisions/. - 2026-10-04: Work package 2 squash-merged as PR #93 (
14799fb): generated help file shipped (Decision 8), stale help files removed,FileListcomplete,Tests\Help.Tests.ps1(218 Pester tests), CI steps 03 (help file current) and 04 (Pester, one Tests-tab entry per test; the NUnit upload had listed 870), six cmdlet-page links reworded for the help text. AppVeyor passed 218 of 218 on the PR (54834295) and onmaster(54834350). - 2026-10-04: Work packages 3 (#94,
bde59a5), 4 (#95,6665825), and the move to GitHub Actions (#96,4f9f7cc) merged with merge commits: Read the Docs dropped (Decision 9), version 5.0.0 with a valid manifest (Decision 10), CI and a wiki generated fromDocson GitHub Actions (Decision 11). The firstmasterrun (37218869672) passed and published the wiki (62ec94a, 43 pages). - 2026-10-04: The maintainer kept the version history separate from
CHANGELOG.mdand had it completed from the six PowerShell Gallery packages and the commit history: release dates, notes for 4.2.2, detailed notes for 4.2.4, and separate notes for 4.2.5 and 4.2.6 (ai/version-history).
Stable capabilities
- 36 cmdlets: access (7), audit (5), inheritance (6), owner and security descriptor (4), privileges (3), long-path items (6), links, hash, and disk space (5).
- Works in Windows PowerShell 5.1 and PowerShell 7 (smoke-tested), except
Get-FileHash2, which fails in PowerShell 7 (missingRIPEMD160type).
Open work
Work packages in the order agreed with the maintainer. Each gets one
ai/<slug> branch and PR, committed locally. The maintainer pushes and
opens the PR (the agent can't; see techContext.md, Constraints), and the
next package starts only after the maintainer's go-ahead.
- Housekeeping: done (#92).
- Ship help: done (#93).
- Docs on GitHub: done (#94).
- Manifest and version 5.0.0: done (#95). Before the release: set the date
of the 5.0.0 section to the release date (fold the
[Unreleased]entries into it), tag5.0.0(novprefix), build in Release, and cleanC:\Program Files\WindowsPowerShell\Modules\NTFSSecuritybeforePublish-Module; releases so far were Debug builds published with the whole output folder (.pdb,.xml,System.Management.Automation.dll), and the removedNTFSSecurity-Help.xmlwould ship again. 4b. CI and the wiki on GitHub Actions: done (#96). Left to the maintainer: revoke AppVeyor's GitHub access if it is still granted, consider Restrict editing to collaborators only for the wiki, and optionally askSup3rlativ3to delete the Read the Docs project. 4c. Version history from the PowerShell Gallery: PR-ready onai/version-history. - Code defects, listed below:
review: on, one PR per group, regression test first. Pester 5 tests importNTFSSecurity\bin\Release, run in a$env:TEMPsandbox and in the CI workflow (pattern:Tests\Help.Tests.ps1), and skip elevated cases when not elevated; check whether the GitHub Actions Windows runner runs elevated. Each fix updates its cmdlet page andCHANGELOG.md.
Code defects (work package 5)
Numbered as agreed with the maintainer; each is documented on its page.
A: Crashes and wrong results
- (1)
Set-NTFSInheritancereads an unsetNullable<bool>when-AccessInheritanceEnabledis omitted; omitted should mean unchanged. - (2)
Get-ChildItem2casts a file-PathtoDirectoryInfo(InvalidCastException). - (3)
Get-FileHash2returns at a folder in-Pathand skips the rest. - (4)
Get-NTFSAuditre-emits the previous item's entries after a failed path, and returns nothing without the Security privilege instead of an error. - (5)
Add-NTFSAudit:-Accountand-AccessRightsshare position 2; use 2 and 3 likeRemove-NTFSAudit. - (6)
-PassThrureturns access entries inAdd-NTFSAuditSD sets andRemove-NTFSAuditPath sets. - (7)
FileSystemAuditRule2.GetFileSystemAuditRulestakesInheritanceEnabledfromAreAccessRulesProtected. - (8)
Get-NTFSInheritance -SecurityDescriptorreportsAuditInheritanceEnabled = $truewithout a SACL (Path set:$null). - (9)
Get-NTFSOwner: the access-denied retry repeats the failing call, and the catch-all turnsPipelineStoppedExceptionintoReadSecurityError. - (10)
Copy-Item2fails on a folder with files (DirectoryNotFoundException). - (11)
Disable-Privilegeshits a nullprivilegesfield whenEnablePrivileges = $false. - (12) The six inheritance cmdlets enable privileges unconditionally in
BeginProcessingand leave them enabled. - (13) Format view
Children2: theInheritscolumn usesIsInheritanceBlocked, so it always showsTrueforGet-ChildItem2.
B: Ignored parameters and parameter sets
- (14) SD sets of
Add-/Remove-NTFSAccessandAdd-/Remove-NTFSAuditcannot resolve without-AppliesToor the flag parameters. - (15)
Get-NTFSEffectiveAccess:-ExcludeNoneAccessEntrieshas no effect, there is no output without-Path, and the SD set returns nothing. - (16)
Get-NTFSOrphanedAccess,Get-NTFSOrphanedAudit, andGet-NTFSSimpleAccessignore-Accountand-SecurityDescriptor;Get-NTFSOrphanedAuditwrites collections;SimpleFileSystemAccessRulehas no format view. - (17)
removeSpecificinRemove-NTFSAccess/Auditis never bound;Remove-NTFSAuditleavesappliesTouninitialized.
C: Error handling
- (18)
Copy-Item2,Move-Item2,Remove-Item2: one failing path skips the rest of-Path(returninstead ofcontinue). - (19)
Remove-NTFSAccesscontinues after a failed read and writes a second, misleadingRemoveAceError. - (20) The inheritance cmdlets write
-PassThruoutput infinally, even after a failure. - (21)
New-NTFSHardLinksays the target path exists when it doesn't.
D: Metadata and cosmetics
- (22) Wrong or missing
[OutputType](Test-Path2,Get-FileHash2,Add-NTFSAudit,*-Item2, inheritance cmdlets);Enable-/Disable-Privileges -PassThruwrites one collection;New-NTFSSymbolicLink -PassThrureturnsFileInfofor folder links. - (23) Typos: "Privliege" in the
Get-NTFSEffectiveAccesswarning; "are now enabled" in theDisable-Privilegesverbose message. - (24) Dead code in
RemoveItem2.csandOtherCmdlets.cs.
E: Maintainer decisions before changing behavior
Clear-NTFSAccess -DisableInheritancediscards inherited entries: keep that, or copy them?Set-NTFSInheritancedefaults are the opposite of the dedicated inheritance cmdlets: align?- The audit inheritance switches are named
*AccessRules: add*AuditRulesaliases? Get-FileHash2fails in PowerShell 7 (RIPEMD160): drop the algorithm there, load it lazily, or deprecate the cmdlet?