Skip to content

Commit b810551

Browse files
committed
Updates for release of PS7.6-preview.6
1 parent 4b34925 commit b810551

File tree

2 files changed

+134
-79
lines changed

2 files changed

+134
-79
lines changed

reference/docs-conceptual/learn/experimental-features.md

Lines changed: 93 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
description: Lists the currently available experimental features and how to use them.
3-
ms.date: 11/21/2025
3+
ms.date: 12/09/2025
44
title: Using Experimental Features in PowerShell
55
---
66
# Using Experimental Features in PowerShell
@@ -15,14 +15,14 @@ breaking changes.
1515
> [!CAUTION]
1616
> Experimental features aren't intended to be used in production since the changes are allowed to be
1717
> breaking. Experimental features aren't officially supported. However, we appreciate any feedback
18-
> and bug reports. You can file issues in the [GitHub source repository][16].
18+
> and bug reports. You can file issues in the [GitHub source repository][17].
1919
2020
For more information about enabling or disabling these features, see
2121
[about_Experimental_Features][05].
2222

2323
## Experimental feature lifecycle
2424

25-
The [Get-ExperimentalFeature][19] cmdlet returns all experimental features available to PowerShell.
25+
The [Get-ExperimentalFeature][21] cmdlet returns all experimental features available to PowerShell.
2626
Experimental features can come from modules or the PowerShell engine. Module-based experimental
2727
features are only available after you import the module. In the following example, the
2828
**PSDesiredStateConfiguration** isn't loaded, so the `PSDesiredStateConfiguration.InvokeDscResource`
@@ -43,7 +43,7 @@ PSSerializeJSONLongEnumAsNumber True PSEngine Serialize enums based on long o
4343
PSSubsystemPluginModel True PSEngine A plugin model for registering and un-registering PowerShell subsyste…
4444
```
4545

46-
Use the [Enable-ExperimentalFeature][18] and [Disable-ExperimentalFeature][17] cmdlets to enable or
46+
Use the [Enable-ExperimentalFeature][20] and [Disable-ExperimentalFeature][19] cmdlets to enable or
4747
disable a feature. You must start a new PowerShell session for this change to be in effect. Run the
4848
following command to enable the `PSCommandNotFoundSuggestion` feature:
4949

@@ -86,13 +86,14 @@ Legend
8686
| [PSCommandNotFoundSuggestion][06] | ![Experimental][02] | ![Mainstream][01] | ![Mainstream][01] |
8787
| [PSCommandWithArgs][07] | ![Experimental][02] | ![Mainstream][01] | ![Mainstream][01] |
8888
| [PSDesiredStateConfiguration.InvokeDscResource][08] | ![Experimental][02] | ![Experimental][02] | ![Experimental][02] |
89-
| [PSFeedbackProvider][09] | ![Experimental][02] | ![Experimental][02] | ![Experimental][02] |
89+
| [PSFeedbackProvider][09] | ![Experimental][02] | ![Experimental][02] | ![Mainstream][01] |
9090
| [PSLoadAssemblyFromNativeCode][10] | ![Experimental][02] | ![Experimental][02] | ![Experimental][02] |
9191
| [PSModuleAutoLoadSkipOfflineFiles][11] | ![Experimental][02] | ![Mainstream][01] | ![Mainstream][01] |
92-
| [PSNativeWindowsTildeExpansion][12] | | ![Experimental][02] | ![Experimental][02] |
93-
| [PSRedirectToVariable][13] | | ![Experimental][02] | ![Experimental][02] |
94-
| [PSSerializeJSONLongEnumAsNumber][14] | | ![Experimental][02] | ![Experimental][02] |
95-
| [PSSubsystemPluginModel][15] | ![Experimental][02] | ![Experimental][02] | ![Experimental][02] |
92+
| [PSNativeWindowsTildeExpansion][12] | | ![Experimental][02] | ![Mainstream][01] |
93+
| [PSProfileDSCResource][13] | | | ![Experimental][02] |
94+
| [PSRedirectToVariable][14] | | ![Experimental][02] | ![Mainstream][01] |
95+
| [PSSerializeJSONLongEnumAsNumber][15] | | ![Experimental][02] | ![Experimental][02] |
96+
| [PSSubsystemPluginModel][16] | ![Experimental][02] | ![Experimental][02] | ![Mainstream][01] |
9697

9798
### PSCommandNotFoundSuggestion
9899

@@ -155,6 +156,10 @@ use or support MOF compilation. For more information, see
155156

156157
### PSFeedbackProvider
157158

159+
> [!NOTE]
160+
> This experimental feature was added in PowerShell 7.4-preview.3. This feature became mainstream in
161+
> PowerShell 7.6-preview.6.
162+
158163
When you enable this feature, PowerShell uses a new feedback provider to give you feedback when a
159164
command can't be found. The feedback provider is extensible, and can be implemented by third-party
160165
modules. The feedback provider can be used by other subsystems, such as the predictor subsystem, to
@@ -170,8 +175,6 @@ This feature includes two built-in feedback providers:
170175
in an interactive run, and for providing predictive IntelliSense results for the next command
171176
line.
172177

173-
This feature was added in PowerShell 7.4-preview.3.
174-
175178
### PSLoadAssemblyFromNativeCode
176179

177180
Exposes an API to allow assembly loading from native code.
@@ -190,10 +193,54 @@ always kept on disk.
190193

191194
This feature was added in PowerShell 7.4-preview.1.
192195

196+
### PSNativeWindowsTildeExpansion
197+
198+
> [!NOTE]
199+
> This experimental feature was added in PowerShell 7.5-preview.2. This feature became mainstream in
200+
> PowerShell 7.6-preview.6.
201+
202+
When this feature is enabled, PowerShell expands unquoted tilde (`~`) to the user's current home
203+
folder before invoking native commands. The following examples show how the feature works.
204+
205+
With the feature disabled, the tilde is passed to the native command as a literal string.
206+
207+
```powershell
208+
PS> cmd.exe /c echo ~
209+
~
210+
```
211+
212+
With the feature enabled, PowerShell expands the tilde before it's passed to the native command.
213+
214+
```powershell
215+
PS> cmd.exe /c echo ~
216+
C:\Users\username
217+
```
218+
219+
This feature only applies to Windows. On non-Windows platforms, tilde expansion is handled natively.
220+
221+
### PSProfileDSCResource
222+
223+
> [!NOTE]
224+
> This experimental feature was added in PowerShell 7.6-preview.6.
225+
226+
The PowerShell 7.6-preview.6 release added this feature as an advertisement for a new DSCv3
227+
resource. The experimental feature flag doesn't do anything. You can use the new DSC v3 resource
228+
regardless of whether this feature is enabled or disabled.
229+
230+
The `Microsoft.PowerShell/Profile` resource enables you to manage PowerShell profiles using Desired
231+
State Configuration (DSC) v3. This release includes two new files in the `$PSHOME` folder:
232+
233+
- `pwsh.profile.dsc.resource.json` - DSC v3 resource manifest file
234+
- `pwsh.profile.resource.ps1` - DSC v3 resource implementation file
235+
236+
The resource supports operations to get, set, and export profile content for different profile
237+
types. For more information, see the notes in the PR [PowerShell/PowerShell#26157][26157].
238+
193239
### PSRedirectToVariable
194240

195241
> [!NOTE]
196-
> This experimental feature was added in PowerShell 7.5-preview.4.
242+
> This experimental feature was added in PowerShell 7.5-preview.4. This feature became mainstream in
243+
> PowerShell 7.6-preview.6.
197244
198245
When enabled, this feature adds support for redirecting to the Variable: drive. This feature allows
199246
you to redirect data to a variable using the `Variable:name` syntax. PowerShell inspects the target
@@ -217,48 +264,12 @@ Output 2
217264
WARNING: Warning, Warning!
218265
```
219266

220-
### PSSubsystemPluginModel
221-
222-
This feature enables the subsystem plugin model in PowerShell. The feature makes it possible to
223-
separate components of `System.Management.Automation.dll` into individual subsystems that reside in
224-
their own assembly. This separation reduces the disk footprint of the core PowerShell engine and
225-
allows these components to become optional features for a minimal PowerShell installation.
226-
227-
Currently, only the **CommandPredictor** subsystem is supported. This subsystem is used along with
228-
the PSReadLine module to provide custom prediction plugins. In future, **Job**,
229-
**CommandCompleter**, **Remoting** and other components could be separated into subsystem assemblies
230-
outside of `System.Management.Automation.dll`.
231-
232-
The experimental feature includes a new cmdlet, [Get-PSSubsystem][20]. This cmdlet is only available
233-
when the feature is enabled. This cmdlet returns information about the subsystems that are available
234-
on the system.
235-
236-
### PSNativeWindowsTildeExpansion
237-
238-
When this feature is enabled, PowerShell expands unquoted tilde (`~`) to the user's current home
239-
folder before invoking native commands. The following examples show how the feature works.
240-
241-
With the feature disabled, the tilde is passed to the native command as a literal string.
242-
243-
```powershell
244-
PS> cmd.exe /c echo ~
245-
~
246-
```
247-
248-
With the feature enabled, PowerShell expands the tilde before it's passed to the native command.
249-
250-
```powershell
251-
PS> cmd.exe /c echo ~
252-
C:\Users\username
253-
```
254-
255-
This feature only applies to Windows. On non-Windows platforms, tilde expansion is handled natively.
256-
257-
This feature was added in PowerShell 7.5-preview.2.
258-
259267
### PSSerializeJSONLongEnumAsNumber
260268

261-
This feature enables the cmdlet [ConvertTo-Json][21] to serialize any enum values based on
269+
> [!NOTE]
270+
> This experimental feature was added in PowerShell 7.5-preview.5.
271+
272+
This feature enables the cmdlet [ConvertTo-Json][23] to serialize any enum values based on
262273
`Int64/long` or `UInt64/ulong` as a numeric value rather than the string representation of that enum
263274
value. This aligns the behavior of enum serialization with other enum base types where the cmdlet
264275
serializes enums as their numeric value. Use the **EnumsAsStrings** parameter to serialize as the
@@ -286,6 +297,25 @@ For example:
286297
# { "Key": "Cmdlets" }
287298
```
288299

300+
### PSSubsystemPluginModel
301+
302+
> [!NOTE]
303+
> This feature became mainstream in PowerShell 7.6-preview.6.
304+
305+
This feature enables the subsystem plugin model in PowerShell. The feature makes it possible to
306+
separate components of `System.Management.Automation.dll` into individual subsystems that reside in
307+
their own assembly. This separation reduces the disk footprint of the core PowerShell engine and
308+
allows these components to become optional features for a minimal PowerShell installation.
309+
310+
Currently, only the **CommandPredictor** subsystem is supported. This subsystem is used along with
311+
the PSReadLine module to provide custom prediction plugins. In future, **Job**,
312+
**CommandCompleter**, **Remoting** and other components could be separated into subsystem assemblies
313+
outside of `System.Management.Automation.dll`.
314+
315+
The experimental feature includes a new cmdlet, [Get-PSSubsystem][22]. This cmdlet is only available
316+
when the feature is enabled. This cmdlet returns information about the subsystems that are available
317+
on the system.
318+
289319
<!-- link references -->
290320
[01]: ../../media/shared/check-mark-button-2705.svg
291321
[02]: ../../media/shared/construction-sign-1f6a7.svg
@@ -299,12 +329,14 @@ For example:
299329
[10]: #psloadassemblyfromnativecode
300330
[11]: #psmoduleautoloadskipofflinefiles
301331
[12]: #psnativewindowstildeexpansion
302-
[13]: #psredirecttovariable
303-
[14]: #psserializejsonlongenumasnumber
304-
[15]: #pssubsystempluginmodel
305-
[16]: https://github.com/PowerShell/PowerShell/issues/new/choose
306-
[17]: xref:Microsoft.PowerShell.Core.Disable-ExperimentalFeature
307-
[18]: xref:Microsoft.PowerShell.Core.Enable-ExperimentalFeature
308-
[19]: xref:Microsoft.PowerShell.Core.Get-ExperimentalFeature
309-
[20]: xref:Microsoft.PowerShell.Core.Get-PSSubsystem
310-
[21]: xref:Microsoft.PowerShell.Utility.ConvertTo-Json
332+
[13]: #psprofiledscresource
333+
[14]: #psredirecttovariable
334+
[15]: #psserializejsonlongenumasnumber
335+
[16]: #pssubsystempluginmodel
336+
[17]: https://github.com/PowerShell/PowerShell/issues/new/choose
337+
[19]: xref:Microsoft.PowerShell.Core.Disable-ExperimentalFeature
338+
[20]: xref:Microsoft.PowerShell.Core.Enable-ExperimentalFeature
339+
[21]: xref:Microsoft.PowerShell.Core.Get-ExperimentalFeature
340+
[22]: xref:Microsoft.PowerShell.Core.Get-PSSubsystem
341+
[23]: xref:Microsoft.PowerShell.Utility.ConvertTo-Json
342+
[26157]: https://github.com/PowerShell/PowerShell/pull/26157

reference/docs-conceptual/whats-new/What-s-New-in-PowerShell-76.md

Lines changed: 41 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
---
22
title: What's New in PowerShell 7.6
33
description: New features and changes released in PowerShell 7.6
4-
ms.date: 10/09/2025
4+
ms.date: 12/09/2025
55
---
66

77
# What's New in PowerShell 7.6
88

9-
PowerShell 7.6-preview.5 includes the following features, updates, and breaking changes. PowerShell
9+
PowerShell 7.6-preview.6 includes the following features, updates, and breaking changes. PowerShell
1010
7.6 is built on .NET 9.0.101 GA release.
1111

12-
For a complete list of changes, see the [CHANGELOG][04] in the GitHub repository.
12+
For a complete list of changes, see the [CHANGELOG][log] in the GitHub repository.
1313

1414
## Updated modules
1515

16-
PowerShell 7.6-preview.5 includes the following updated modules:
16+
PowerShell 7.6-preview.6 includes the following updated modules:
1717

18-
- **Microsoft.PowerShell.PSResourceGet** v1.1.0
18+
- **Microsoft.PowerShell.PSResourceGet** v1.2.0-preview5
1919
- **PSReadLine** v2.4.4-beta4
2020
- **Microsoft.PowerShell.ThreadJob** v2.2.0
2121
- **ThreadJob** v2.1.0
@@ -35,9 +35,12 @@ name, the **ThreadJob** v2.1.0 module is a proxy module that points to the
3535

3636
## Tab completion improvements
3737

38-
- Use parameter `HelpMessage` for tool tip in parameter completion ([#25108][25108]) (Thanks @jborean93!)
38+
- Properly Expand Aliases to their actual ResolvedCommand ([#26571][26571]) (thanks @kilasuit!)
39+
- Use parameter `HelpMessage` for tool tip in parameter completion ([#25108][25108]) (Thanks
40+
@jborean93!)
3941
- Remove duplicate modules from completion results ([#25538][25538]) (Thanks @MartinGC94!)
40-
- Add completion for variables assigned in `ArrayLiteralAst` and `ParenExpressionAst` ([#25303][25303]) (Thanks @MartinGC94!)
42+
- Add completion for variables assigned in `ArrayLiteralAst` and `ParenExpressionAst`
43+
([#25303][25303]) (Thanks @MartinGC94!)
4144
- Fix tab completion for env/function variables ([#25346][25346]) (Thanks @jborean93!)
4245
- Update Named and Statement block type inference to not consider **AssignmentStatements** and
4346
Increment/decrement operators as part of their output ([#21137][21137]) (Thanks @MartinGC94!)
@@ -53,7 +56,7 @@ name, the **ThreadJob** v2.1.0 module is a proxy module that points to the
5356
efficient char searching ([#24879][24879]) (Thanks @ArmaanMcleod!)
5457
- Update `IndexOfAny()` calls with invalid path/filename to `SearchValues<char>` for more efficient
5558
char searching ([#24896][24896]) (Thanks @ArmaanMcleod!)
56-
- Replace `char[]` array in `CompletionRequiresQuotes` with cached `SearchValues<char>`
59+
- Replace `char\[\]` array in `CompletionRequiresQuotes` with cached `SearchValues<char>`
5760
([#24907][24907]) (Thanks @ArmaanMcleod!)
5861
- Add quote handling in `Verb`, `StrictModeVersion`, `Scope` and `PropertyType` Argument
5962
Completers with single helper method ([#24839][24839]) (Thanks @ArmaanMcleod!)
@@ -88,8 +91,9 @@ name, the **ThreadJob** v2.1.0 module is a proxy module that points to the
8891

8992
## Cmdlet improvements
9093

91-
- Fix Out-GridView by replacing use of obsolete BinaryFormatter with custom implementation ([#25497][25497])
92-
(Thanks @mawosoft!)
94+
- Add `-Delimiter` parameter to `Get-Clipboard` ([#26572][26572]) (thanks @MartinGC94!)
95+
- Fix Out-GridView by replacing use of obsolete BinaryFormatter with custom implementation
96+
([#25497][25497]) (Thanks @mawosoft!)
9397
- Improve verbose and debug logging level messaging in web cmdlets ([#25510][25510]) (Thanks
9498
@JustinGrote!)
9599
- Improve debug logging of Web cmdlet request and response ([#25479][25479]) (Thanks @JustinGrote!)
@@ -137,6 +141,9 @@ name, the **ThreadJob** v2.1.0 module is a proxy module that points to the
137141

138142
## Engine improvements
139143

144+
- Fix a regression in the API `CompletionCompleters.CompleteFilename()` that causes null reference
145+
exception ([#26487][26487])
146+
- Close pipe client handles after creating the child ssh process ([#26564][26564])
140147
- Update the **PSDiagnostics** module to manage the PowerShellCore provider in PowerShell 7
141148
([#25590][25590])
142149
- Allow opt-out of the named-pipe listener using the environment variable
@@ -176,18 +183,30 @@ name, the **ThreadJob** v2.1.0 module is a proxy module that points to the
176183

177184
## Experimental features
178185

179-
The following experimental features are included in PowerShell 7.6-preview.3:
186+
The PowerShell 7.6-preview.6 release includes the following changes to experimental features.
180187

181-
- [PSNativeWindowsTildeExpansion][01] - Add tilde expansion for Windows-native executables
182-
- [PSRedirectToVariable][02] - Allow redirecting to a variable
183-
- [PSSerializeJSONLongEnumAsNumber][03] - `ConvertTo-Json` now treats large enums as numbers
188+
The following experimental features are mainstream:
189+
190+
- [PSFeedbackProvider][01]
191+
- [PSNativeWindowsTildeExpansion][02]
192+
- [PSRedirectToVariable][04]
193+
- [PSSubsystemPluginModel][06]
194+
195+
This release includes following experimental features:
196+
197+
- [PSSerializeJSONLongEnumAsNumber][05] - `ConvertTo-Json` now treats large enums as numbers
198+
- [PSProfileDSCResource][03] - Add DSC v3 resource for PowerShell Profiles
184199

185200
<!-- end of content -->
186201
<!-- reference links -->
187-
[01]: ../learn/experimental-features.md#psnativewindowstildeexpansion
188-
[02]: ../learn/experimental-features.md#psredirecttovariable
189-
[03]: ../learn/experimental-features.md#psserializejsonlongenumasnumber
190-
[04]: https://github.com/PowerShell/PowerShell/blob/master/CHANGELOG/preview.md
202+
[01]: ../learn/experimental-features.md#psfeedbackprovider
203+
[02]: ../learn/experimental-features.md#psnativewindowstildeexpansion
204+
[03]: ../learn/experimental-features.md#psprofiledscresource
205+
[04]: ../learn/experimental-features.md#psredirecttovariable
206+
[05]: ../learn/experimental-features.md#psserializejsonlongenumasnumber
207+
[06]: ../learn/experimental-features.md#pssubsystempluginmodel
208+
209+
[log]: https://github.com/PowerShell/PowerShell/blob/master/CHANGELOG/preview.md
191210

192211
[14553]: https://github.com/PowerShell/PowerShell/pull/14553
193212
[17687]: https://github.com/PowerShell/PowerShell/pull/17687
@@ -278,3 +297,7 @@ The following experimental features are included in PowerShell 7.6-preview.3:
278297
[26081]: https://github.com/PowerShell/PowerShell/pull/26081
279298
[26086]: https://github.com/PowerShell/PowerShell/pull/26086
280299
[26118]: https://github.com/PowerShell/PowerShell/pull/26118
300+
[26487]: https://github.com/PowerShell/PowerShell/pull/26487
301+
[26564]: https://github.com/PowerShell/PowerShell/pull/26564
302+
[26571]: https://github.com/PowerShell/PowerShell/pull/26571
303+
[26572]: https://github.com/PowerShell/PowerShell/pull/26572

0 commit comments

Comments
 (0)