Leveraging compatibility
In this chapter so far, you have looked at the issue of compatibility between Windows PowerShell and PowerShell 7. You have examined the new features in PowerShell 7 and looked at the Windows PowerShell compatibility mechanism.
The compatibility mechanism allows you to use incompatible Windows PowerShell cmdlets inside a PowerShell session. Incompatible Windows PowerShell cmdlets/modules rely on features that, while present in the full .NET CLR, are not available in .NET Core 5.0 (and are unlikely ever to be added to .NET Core). For example, the Get-WindowsFeature
cmdlet uses a .NET type System.Diagnostics.Eventing.EventDescriptor
, as you saw earlier. Although the cmdlet cannot run natively in PowerShell 7, the compatibility mechanism allows you to make use of the cmdlet's functionality.
When Import-Module
begins loading an incompatible module, it checks to see if a remoting session with the name WinPSCompatSession
exists. If that remoting session...