Windows PowerShell and PowerShell 7 compatibility
Microsoft's edit ·
Microsoft's commit message in MicrosoftDocs/PowerShell-Docs · commit 445fd81 · +34 −1 lines · also on GitHub
⋯ 22 unchanged lines
2323
PowerShell. For a detailed discussion of changes between versions and the addition of new features,
2424
see the **What's New** articles for each version.
2525
26
−- [What's new in PowerShell 7.x](What-s-New-in-PowerShell-71.md)
26
+- [What's new in PowerShell 7.3](What-s-New-in-PowerShell-73.md)
27
+- [What's new in PowerShell 7.2](What-s-New-in-PowerShell-72.md)
28
+- [What's new in PowerShell 7.1](What-s-New-in-PowerShell-71.md)
29
+- [What's new in PowerShell 7.0](What-s-New-in-PowerShell-70.md)
2730
- [What's new in PowerShell 6.x](/previous-versions/powershell/scripting/whats-new/what-s-new-in-powershell-core-62?view=powershell-6&preserve-view=true)
2831
2932
## .NET Framework vs .NET Core
⋯ 5 unchanged lines
3538
Core, see
3639
[Breaking changes for migration from .NET Framework to .NET Core](/dotnet/core/compatibility/fx-core).
3740
41
+Each new release of PowerShell is built on a newer version of .NET. There can be breaking changes in
42
+.NET that affect PowerShell.
43
+
44
+- PowerShell 7.3 (preview) - Built on .NET 7.0 (preview)
45
+- PowerShell 7.2 (LTS-current) - Built on .NET 6.0 (LTS-current)
46
+- PowerShell 7.1 - Built on .NET 5.0
47
+- PowerShell 7.0 (LTS) - Built on .NET Core 3.1 (LTS)
48
+- PowerShell 6.2 - Built on .NET Core 2.1
49
+- PowerShell 6.1 - Built on .NET Core 2.1
50
+- PowerShell 6.0 - Built on .NET Core 2.0
51
+
3852
With the advent of
3953
[.NET Standard 2.0](https://devblogs.microsoft.com/dotnet/introducing-net-standard/), PowerShell can
4054
load many traditional Windows PowerShell modules without modification. Additionally, PowerShell 7
⋯ 398 unchanged lines
439453
}
440454
441455
[M]::AggregateString((gci).Name, [M]::DoubleStrLen)
456
+```
457
+
458
+### String comparison behavior changed in PowerShell 7.1
459
+
460
+PowerShell 7.1 is built on .NET 5.0, which introduced the following breaking change:
461
+
462
+- [Behavior changes when comparing strings on .NET 5+](/dotnet/standard/base-types/string-comparison-net-5-plus)
463
+
464
+As of .NET 5.0, culture invariant string comparisons ignore non-printing control characters.
465
+
466
+For example, the following two strings are considered to be identical:
467
+
468
+```powershell
469
+# Escape sequence "`a" is Ctrl-G or [char]7
470
+'Food' -eq "Foo`ad"
471
+```
472
+
473
+```Output
474
+True
442475
```
443476
444477
## Cmdlet changes
⋯ 407 unchanged lines
Microsoft's Markdown source from MicrosoftDocs/PowerShell-Docs, © Microsoft Corporation, under CC BY 4.0. Changed lines with up to 3 unchanged lines around each; ChangeIntel kept this copy 10 Oct 03:16 UTC. The commit date is when the source changed, which can be hours or days before Learn published it.