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.8 KiB
7.8 KiB
| status | last-verified | owner | source |
|---|---|---|---|
| current | 2026-10-02 | active-agent | repository evidence |
Progress
Current status
PR #91 is merged: documentation matches the cmdlets at HEAD. The module
source is unchanged since the 4.2.6 release except the
Remove-Item2 -PassThru rename and CompatiblePSEditions.
Recent milestones
- 2026-10-02: Memory Bank initialized.
- 2026-10-02: Documentation aligned with the code: 36 cmdlet pages filled
from the C# source and checked at runtime in a sandbox; Concepts, Examples,
home page, contributor guide, README rewritten;
mkdocs.ymlnav,edit_uri, and.readthedocs.yml(build.os) fixed;CHANGELOG.mdcreated. - 2026-10-02: PR #91 build fixed:
appveyor.ymlbuilds the module from source and checks the docs against that build instead of the Gallery release (root cause of theRemove-Item2 -PassThrudrift failure). - 2026-10-02: PR #91 merged into
masteras690d8dd(squash merge); branchai/docs-alignmentdeleted locally and on GitHub. - 2026-10-02: Work package 1 (housekeeping,
ai/housekeeping): localpromptHistory.mdignored by git; changelog policy recorded as Decision 7; Decisions moved fromsystemPatterns.mdtodecisions/. - 2026-10-02: PR #83 (TechNet tutorial links) reviewed and found
superseded: #91 ships the same two
learn.microsoft.comlinks inDocs/index.mdandREADME.md. The maintainer decided to close it; the remote-mutation hook denied the agent'sgh pr close, so the maintainer closed it by hand (2026-10-02 21:18 UTC). - 2026-10-02: Work package 2 (ship help,
ai/ship-help, stacked onai/housekeeping):en-US\NTFSSecurity.dll-Help.xmlgenerated fromDocs/Cmdlets, committed, copied by the csproj, and listed in a completeFileList(Decision 8); staleNTFSSecurity-Help.xmland the unusedNTFSSecurity.Help.pshprojremoved;Tests\Help.Tests.ps1(Pester 5) and two CI steps added; six inline links in five cmdlet pages reworded because platyPS drops the space after a link in the help text. Tests: 218 of 218 pass in Windows PowerShell 5.1; without the help file 180 of 182 failed. - 2026-10-04: Work packages 1 and 2 pushed; AppVeyor 54834155
(
74abb0b) and 54834154 (fba3a7d, 218 of 218 Pester tests) passed. A follow-up commit reports each test once on the AppVeyor Tests tab (the NUnit upload listed 870 entries).
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
the next package starts only after the maintainer's go-ahead.
- Housekeeping:
ai/housekeepingpushed at74abb0b, AppVeyor green; PR intomasterto open. - Ship help:
ai/ship-helppushed atfba3a7d, AppVeyor green; the follow-up commit for the Tests tab awaits push. PR intoai/housekeepingto open. - Read the Docs: project
ntfssecurity(maintainerSup3rlativ3) builds the fork; switch it to this repository or import a new project. Ask before installing Python formkdocs build --strict. - Manifest and version: remove
Show-NTFSSimpleAccessand the duplicate inheritance entries fromCmdletsToExport(36 cmdlets remain); ask about the next version (with or without aPassThuralias),PowerShellVersion, andDotNetFrameworkVersion; alignAssemblyInfo. No tag or publish. Inputs found in work package 2:Test-ModuleManifestalready fails onPowerShellVersion = '2.0'withCompatiblePSEditions; releases ship Debug builds plus.pdb,.xml, andSystem.Management.Automation.dll(Private=Truereference), whichFileListdoesn't list. - 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 inappveyor.yml, and skip elevated cases when not 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?