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.
8.3 KiB
8.3 KiB
| status | last-verified | owner | source |
|---|---|---|---|
| current | 2026-10-02 | active-agent | repository evidence |
Progress
Current status
PRs #91, #92, and #93 are merged. The documentation matches the cmdlets at
master, and the module ships the help file generated from it
(en-US\NTFSSecurity.dll-Help.xml). Otherwise the module source differs
from the 4.2.6 release only by the Remove-Item2 -PassThru rename and
CompatiblePSEditions.
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).
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).
- Read the Docs, next. The local branch
ai/read-the-docsexists and so far carries Memory Bank notes only. The projectntfssecurity(https://app.readthedocs.org/projects/ntfssecurity/) is maintained by GitHub userSup3rlativ3and builds the forkSup3rlativ3/NTFSSecurity(last build about 2021); the repository side is ready (.readthedocs.yml,Docs/requirements.txt). The switch happens in the Read the Docs dashboard. Give the maintainer exact steps for both options: (a)Sup3rlativ3adds him as maintainer and changes the repository URL, or (b) he importsraandree/NTFSSecurityas a new project (the slugntfssecurityis taken). Ask before installing Python formkdocs build --strict. After the switch, confirm a build ofmaster, propose whether theonline versionlinks move to Read the Docs (Decision 4), and add a documentation link toREADME.md. Done when Read the Docs buildsmasterof this repository and shows the current pages. - Manifest and version: remove
Show-NTFSSimpleAccessand the duplicate inheritance entries fromCmdletsToExport(exactly 36 cmdlets exported). Versions disagree: manifest 4.2.5, tag and Gallery 4.2.6,AssemblyVersion4.2.1.0. Propose the next SemVer version with and without[Alias('PassThur')]onRemove-Item2 -PassThru(the rename in #64 is breaking), plusPowerShellVersionandDotNetFrameworkVersion(manifest 2.0 and 3.5; the assemblies target .NET Framework 4.5.2), and ask. Move the[Unreleased]entries into the new version section (ask whether the build-only "Read the Docs build configuration" entry stays, Decision 7) and alignAssemblyInfo. No tag or publish. Done whenTest-ModuleManifestpasses, 36 cmdlets are exported, and CI is green. Inputs:Test-ModuleManifestalready fails onPowerShellVersion = '2.0'withCompatiblePSEditions; releases are Debug builds published with the whole output folder (.pdb,.xml,System.Management.Automation.dll), whichFileListdoesn't list. Before the next build andPublish-Module, cleanC:\Program Files\WindowsPowerShell\Modules\NTFSSecurity, or the removedNTFSSecurity-Help.xmlships again. - 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(pattern:Tests\Help.Tests.ps1), and skip elevated cases when not elevated; check whether AppVeyor 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?