Releases: santisq/PSTree
v2.2.8
What's Changed
-
Adds
LastWriteTimeproperty toTreeRegistryKeyclass by @santisq in #55. This exposes the last write time of registry keys, a property not available in .NET’sMicrosoft.Win32.RegistryKeyclass, using the Windows APIRegQueryInfoKey.PS ..\PSTree> pstreereg HKCU:\System -k -d 2 | select Hierarchy, LastWriteTime Hierarchy LastWriteTime --------- ------------- System 2/4/2021 1:15:18 AM ├── CurrentControlSet 7/31/2025 6:21:49 PM │ ├── Control 9/25/2025 10:08:11 AM │ ├── Enum 7/31/2025 6:21:49 PM │ └── Policies 2/4/2021 1:15:01 AM └── GameConfigStore 8/22/2022 9:04:22 AM ├── Children 5/26/2024 9:27:44 PM └── Parents 5/26/2024 9:27:44 PM
Full Changelog: v2.2.7...v2.2.8
v2.2.7
What's Changed
This new version brings two small changes:
- Ctrl+C Cancellation: Added support for gracefully canceling operations using Ctrl+C when the cmdlets are traversing a hierarchy. Previously, the only way to stop the process was by restarting the session.
- Sort Order for Registry Keys: Similar to issue #9 but for the
Get-PSTreeRegistrycmdlet. It now sorts Registry Keys in ascending order.
Full Changelog: v2.2.6...v2.2.7
v2.2.6
v2.2.5
What's Changed
This version modifies the Get-PSTreeRegistry cmdlet to include registry default values (unnamed values displayed as (Default) in regedit), which were previously excluded due to a filter on empty value names.
Impact of the Change
Before: (Default) values (empty-named registry values) were excluded from the output:
PS ..\PSTree> Get-PSTreeRegistry Registry::HKEY_CLASSES_ROOT\LibreOffice.Pdf\shell\new
Kind Hierarchy
---- ---------
RegistryKey new
RegistryKey └── commandAfter: (Default) values are now included:
PS ..\PSTree> Get-PSTreeRegistry Registry::HKEY_CLASSES_ROOT\LibreOffice.Pdf\shell\new
Kind Hierarchy
---- ---------
RegistryKey new
String ├── (Default)
RegistryKey └── command
String └── (Default)
PS ..\PSTree> (Get-PSTreeRegistry Registry::HKEY_CLASSES_ROOT\LibreOffice.Pdf\shell\new)[-1].GetValue()
"C:\Program Files\LibreOffice\program\sdraw.exe" -n "%1"Full Changelog: v2.2.4...v2.2.5
v2.2.4
What's Changed
- Optimized code to reduce memory allocations, improving performance for large data sets.
- Adds
-Includeand-Excludeparameters to theGet-PSTreeRegistrycmdlet by @santisq in PR #46. These work similarly to theirGet-PSTreecounterparts—see the docs for details—but here’s a quick look at what’s now possible:
# Basic tree view
PS ..\PSTree> Get-PSTreeRegistry HKCU:\System -Depth 2
Hive: HKEY_CURRENT_USER\System
Kind Hierarchy
---- ---------
RegistryKey System
RegistryKey ├── GameConfigStore
DWord │ ├── GameDVR_Enabled
DWord │ ├── GameDVR_FSEBehaviorMode
Binary │ ├── Win32_AutoGameModeDefaultProfile
Binary │ ├── Win32_GameModeRelatedProcesses
DWord │ ├── GameDVR_HonorUserFSEBehaviorMode
DWord │ ├── GameDVR_DXGIHonorFSEWindowsCompatible
DWord │ ├── GameDVR_EFSEFeatureFlags
RegistryKey │ ├── Parents
RegistryKey │ └── Children
RegistryKey └── CurrentControlSet
RegistryKey ├── Policies
RegistryKey └── Control
# Filter out specific items
PS ..\PSTree> Get-PSTreeRegistry HKCU:\System -Depth 2 -Exclude CurrentControlSet, GameDV*
Hive: HKEY_CURRENT_USER\System
Kind Hierarchy
---- ---------
RegistryKey System
RegistryKey └── GameConfigStore
Binary ├── Win32_AutoGameModeDefaultProfile
Binary ├── Win32_GameModeRelatedProcesses
RegistryKey ├── Parents
RegistryKey └── Children
# Select GameDVR-related values
PS ..\PSTree> Get-PSTreeRegistry HKCU:\System -Depth 2 -Include GameDVR*
Hive: HKEY_CURRENT_USER\System
Kind Hierarchy
---- ---------
RegistryKey System
RegistryKey └── GameConfigStore
DWord ├── GameDVR_Enabled
DWord ├── GameDVR_FSEBehaviorMode
DWord ├── GameDVR_HonorUserFSEBehaviorMode
DWord ├── GameDVR_DXGIHonorFSEWindowsCompatible
DWord └── GameDVR_EFSEFeatureFlagsFull Changelog: v2.2.3...v2.2.4
v2.2.3
What's Changed
- Introduced the
RegistryStyleclass and added aRegistryproperty to theTreeStyleclass. - Moved file system style properties from
TreeStyleto a newFileSystemStyleclass, with aFileSystemproperty added toTreeStyle. - Added coloring support for
Get-PSTreeRegistry, allowing customization based on theKindproperty ofTreeRegistryBaseinstances. See about_TreeStyle for details.
Full Changelog: v2.2.2...v2.2.3
v2.2.2
What's Changed
- Renamed Output Types: Updated type names by removing the
PSprefix (e.g.,PSTreeFile→TreeFile,PSTreeRegistryKey→TreeRegistryKey) to improve naming consistency and clarity, making the module’s output objects more intuitive. - New Cmdlet: This version introduces
Get-PSTreeRegistry, a new Windows-only cmdlet that traverses the Windows Registry in a tree-like format, enabling hierarchical exploration of registry keys and values for system configuration and troubleshooting. Explore its capabilities in the documentation or check out practical examples in the README. Note that this version does not include colorized output, but this feature is planned for future releases. If you have suggestions, spot any bugs, or want to contribute, please submit an issue.
Full Changelog: v2.2.1...v2.2.2
v2.2.1
What's Changed
-
Big code refactoring, this update improves readability and simplicity.
-
Updates to
-Includeand-Excludeparameters, with this update the patterns are evaluated using the
object's.Nameproperty instead of.FullName. -
In addition to the above, this update improves how the cmdlet displays trees when
-Includeis used.
Before, the cmdlet would display sub-trees where no files were matched by the include patterns. Now, only trees having files matched by the patterns are displayed.# PSTree v2.2.0 PS ..\pwsh> Get-PSTree ..\PSTree -Include *.ps1, *.cs -Exclude *tools, *output Source: C:\User\PSTree Mode Length Hierarchy ---- ------ --------- d---- 29.57 KB PSTree -a--- 1.34 KB ├── build.ps1 d---- 0.00 B ├── .github d---- 4.10 KB │ └── workflows d---- 4.11 KB ├── .vscode d---- 229.32 KB ├── assets d---- 0.00 B ├── docs d---- 12.55 KB │ └── en-US d---- 13.63 KB ├── module d---- 0.00 B ├── src d---- 11.50 KB │ └── PSTree -a--- 1.06 KB │ ├── Cache.cs -a--- 2.65 KB │ ├── CommandWithPathBase.cs -a--- 2.98 KB │ ├── PSTreeDirectory.cs -a--- 1.42 KB │ ├── PSTreeFile.cs -a--- 1.69 KB │ ├── PSTreeFileSystemInfo_T.cs -a--- 524.00 B │ ├── PSTreeFileSystemInfo.cs -a--- 404.00 B │ ├── TreeComparer.cs d---- 0.00 B │ ├── bin d---- 6.54 KB │ ├── Commands d---- 3.63 KB │ ├── Extensions d---- 1.14 KB │ ├── Internal d---- 16.83 KB │ ├── obj d---- 9.28 KB │ └── Style d---- 17.87 KB └── tests -a--- 765.00 B ├── FormattingInternals.tests.ps1 -a--- 6.15 KB ├── GetPSTreeCommand.tests.ps1 -a--- 1.77 KB ├── PSTreeDirectory.tests.ps1 -a--- 920.00 B ├── PSTreeFile.tests.ps1 -a--- 2.63 KB ├── PSTreeFileSystemInfo_T.tests.ps1 -a--- 4.90 KB └── TreeStyle.tests.ps1 # PSTree v2.2.1 PS ..\pwsh> Get-PSTree ..\PSTree -Include *.ps1, *.cs -Exclude tools, output Source: C:\User\PSTree Mode Length Hierarchy ---- ------ --------- d---- 1.34 KB PSTree -a--- 1.34 KB ├── build.ps1 d---- 0.00 B ├── src d---- 10.70 KB │ └── PSTree -a--- 1.06 KB │ ├── Cache.cs -a--- 2.65 KB │ ├── CommandWithPathBase.cs -a--- 2.98 KB │ ├── PSTreeDirectory.cs -a--- 1.42 KB │ ├── PSTreeFile.cs -a--- 1.69 KB │ ├── PSTreeFileSystemInfo_T.cs -a--- 524.00 B │ ├── PSTreeFileSystemInfo.cs -a--- 404.00 B │ └── TreeComparer.cs d---- 17.10 KB └── tests -a--- 765.00 B ├── FormattingInternals.tests.ps1 -a--- 6.15 KB ├── GetPSTreeCommand.tests.ps1 -a--- 1.77 KB ├── PSTreeDirectory.tests.ps1 -a--- 920.00 B ├── PSTreeFile.tests.ps1 -a--- 2.63 KB ├── PSTreeFileSystemInfo_T.tests.ps1 -a--- 4.90 KB └── TreeStyle.tests.ps1
Full Changelog: v2.2.0...v2.2.1
v2.2.0
What's Changed
- Adds
TreeStyleto PSTree by @santisq in #37. For details on how to customize your output see about_TreeStyle.
Full Changelog: v2.1.18...v2.2.0
v2.1.18
What's Changed
- Makes
Depthproperty public forPSTreeFileSystemInfoinstances. - Makes
GetParents()method private, absolutely no reason to have it public. - Added properties
ItemCountandTotalItemCounttoPSTreeDirectoryinstances, requested in #34.
PS ..\PSTree> pstree -Recurse -Force -Directory | Select-Object Hierarchy, Depth, ItemCount, TotalItemCount -First 15
Hierarchy Depth ItemCount TotalItemCount
--------- ----- --------- --------------
PSTree 0 15 1476
├── .git 1 13 1078
│ ├── hooks 2 13 13
│ ├── info 2 1 1
│ ├── logs 2 2 24
│ │ └── refs 3 2 22
│ │ ├── heads 4 9 9
│ │ └── remotes 4 1 11
│ │ └── origin 5 10 10
│ ├── objects 2 244 995
│ │ ├── 00 3 3 3
│ │ ├── 01 3 2 2
│ │ ├── 02 3 3 3
│ │ ├── 03 3 4 4
│ │ ├── 04 3 2 2
PS ..\PSTree> (Get-ChildItem -Force).Count
15
PS ..\PSTree> (Get-ChildItem -Force -Recurse).Count
1476
PS ..\PSTree> (Get-ChildItem .git -Force).Count
13
PS ..\PSTree> (Get-ChildItem .git -Force -Recurse).Count
1078
PS ..\PSTree>Full Changelog: v2.1.17...v2.1.18

