Dela via


Skript med kompatibla PowerShell-utgåvor

Från och med version 5.1 finns PowerShell i olika utgåvor som anger olika funktionsuppsättningar och plattformskompatibilitet.

  • Desktop Edition: Bygger på .NET Framework och ger kompatibilitet med skript och moduler som är inriktade på versioner av PowerShell som körs på fullständiga fotavtrycksversioner av Windows, till exempel Server Core och Windows Desktop.

  • Core Edition: Bygger på .NET Core och ger kompatibilitet med skript och moduler som är inriktade på versioner av PowerShell som körs på mindre fotavtrycksversioner av Windows, till exempel Nano Server och Windows IoT.

Den version av PowerShell som körs visas i egenskapen PSEdition för $PSVersionTable.

$PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.14300.1000
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
CLRVersion                     4.0.30319.42000
BuildVersion                   10.0.14300.1000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Skriptförfattare kan förhindra att ett skript körs om det inte körs på en kompatibel version av PowerShell med hjälp av parametern PSEdition på en #requires instruktion.

Set-Content C:\script.ps1 -Value "#requires -PSEdition Core
Get-Process -Name PowerShell"
Get-Content C:\script.ps1
#requires -PSEdition Core
Get-Process -Name PowerShell

C:\script.ps1
C:\script.ps1 : The script 'script.ps1' cannot be run because it contained a "#requires" statement for PowerShell editions 'Core'. The edition of PowerShell that is required by the script does not match the currently running PowerShell Desktop edition.
At line:1 char:1
+ C:\script.ps1
+ ~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (script.ps1:String) [], RuntimeException
    + FullyQualifiedErrorId : ScriptRequiresUnmatchedPSEdition

PowerShell-galleriet användare kan hitta listan över skript som stöds i en specifik PowerShell-utgåva. Skript utan PSEdition_Desktop- och PSEdition_Core-taggar anses fungera bra på PowerShell Desktop-utgåvan.

# Find scripts supported on PowerShell Desktop edition
Find-Script -Tag PSEdition_Desktop

# Find scripts supported on PowerShell Core edition
Find-Script -Tag PSEdition_Core

Mer information