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-04 | 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). - 2026-10-04: The maintainer dropped Read the Docs: the docs stay on GitHub
and the wiki is retired (Decision 9). Work package 3 committed locally on
ai/docs-on-github(84328dc). The strict Read the Docs build prepared before stays unmerged on the local branchai/read-the-docs.
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 (was: Read the Docs), PR-ready on
ai/docs-on-github: Read the Docs and MkDocs configuration removed,Docs/index.mdrenamed toDocs/README.md, the wiki's version history and install steps moved intoDocs(with reconstructed notes for 4.2.5 and 4.2.6), contributor guide updated. After the merge, the maintainer turns the wiki off, points the notes of releases 4.2.4 and 4.2.6 toDocs/Version-History.md, and may askSup3rlativ3to delete the Read the Docs project. - Manifest and version, in progress, stacked on
ai/docs-on-github. Maintainer decisions:PowerShellVersion5.1,DotNetFrameworkVersion4.5.2,RootModuleinstead ofModuleToProcess; version 5.0.0 with[Alias('PassThur')]onRemove-Item2 -PassThru(the changelog lists-PassThurunder Deprecated); the changelog entry about the documentation site is gone (work package 3). Open: which assemblies follow the module version. RemoveShow-NTFSSimpleAccessand the duplicate inheritance entries fromCmdletsToExport(exactly 36 cmdlets exported), move the[Unreleased]entries into the 5.0.0 section, and alignAssemblyInfo. No tag or publish. Done whenTest-ModuleManifestpasses in Windows PowerShell 5.1 and PowerShell 7, 36 cmdlets are exported, the versions agree, and CI is green. Baseline:Test-ModuleManifestfails in both editions (CompatiblePSEditionsneedsPowerShellVersion5.1) and warns aboutModuleToProcess; 41CmdletsToExportentries, 37 unique; versions: manifest 4.2.5,NTFSSecurity4.2.1.0,Security23.2.3.0,PrivilegeControl1.0.0.0,ProcessPrivileges1.5.7.0 (vendored);Logisn't shipped. 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?