Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Sürüm 5.1'den başlayarak, PowerShell, farklı özellik setlerini ve platform uyumluluğunu ifade eden farklı sürümlerde mevcuttur.
- Masaüstü Sürümü: .NET Framework üzerine kuruludur, Windows PowerShell v4.0 ve altı sürümlerin yanı sıra Windows Masaüstü, Windows Server, Windows Server Core ve diğer birçok Windows sürümünde Windows PowerShell 5.1 için geçerlidir.
- Çekirdek Sürümü: .NET Core üzerine kuruludur, PowerShell 6.0 ve üzeri sürümlerin yanı sıra Windows IoT ve Windows Nano Server gibi daha az yer kaplayan Windows Sürümlerinde Windows PowerShell 5.1 için de geçerlidir.
PowerShell sürümleri hakkında daha fazla bilgi için about_PowerShell_Editions bakın.
Uyumlu sürümleri bildirme
Modül yazarları, modül bildirim anahtarını kullanarak modüllerinin CompatiblePSEditions bir veya daha fazla PowerShell sürümüyle uyumlu olduğunu bildirebilir. Bu anahtar yalnızca PowerShell 5.1 veya sonraki sürümlerde desteklenir.
Uyarı
Modül bildirimi anahtarla CompatiblePSEditions belirtildikten veya değişkeni $PSEdition kullandıktan sonra PowerShell v4 veya daha düşük bir sürüme aktarılamaz.
New-ModuleManifest -Path .\TestModuleWithEdition.psd1 -CompatiblePSEditions Desktop,Core -PowerShellVersion 5.1
$ModuleInfo = Test-ModuleManifest -Path .\TestModuleWithEdition.psd1
$ModuleInfo.CompatiblePSEditions
Desktop
Core
$ModuleInfo | Get-Member CompatiblePSEditions
TypeName: System.Management.Automation.PSModuleInfo
Name MemberType Definition
---- ---------- ----------
CompatiblePSEditions Property System.Collections.Generic.IEnumerable[string] CompatiblePSEditions {get;}
Kullanılabilir modüllerin listesini alırken, listeyi PowerShell sürümüne göre filtreleyebilirsiniz.
Get-Module -ListAvailable -PSEdition Desktop
Directory: C:\Program Files\WindowsPowerShell\Modules
ModuleType Version Name ExportedCommands
---------- ------- ---- ----------------
Manifest 1.0 ModuleWithPSEditions
Get-Module -ListAvailable -PSEdition Core | % CompatiblePSEditions
Desktop
Core
PowerShell 6'dan başlayarak, modüller 'den $env:windir\System32\WindowsPowerShell\v1.0\Modulesiçeri aktarıldığında bir modülün CompatiblePSEditions uyumlu olup olmadığına karar vermek için değer kullanılır.
Bu davranış yalnızca Windows için geçerlidir. Bu senaryonun dışında, değer yalnızca meta veri olarak kullanılır.
Uyumlu modülleri bulma
PowerShell Galerisi kullanıcıları, PSEdition_Desktop ve PSEdition_Core etiketlerini kullanarak belirli bir PowerShell Edition'da desteklenen modüllerin listesini bulabilir.
PSEdition_Desktop ve PSEdition_Core etiketleri olmayan modüllerin PowerShell Desktop sürümlerinde düzgün çalıştığı kabul edilir.
# Find modules supported on PowerShell Desktop edition
Find-Module -Tag PSEdition_Desktop
# Find modules supported on PowerShell Core editions
Find-Module -Tag PSEdition_Core
Birden fazla sürümü hedefleme
Modül yazarları, PowerShell sürümlerinden birini veya her ikisini de (Masaüstü ve Çekirdek) hedefleyen tek bir modül yayımlayabilir.
Tek bir modül hem Masaüstü hem de Core sürümlerinde çalışabilir, bu modülde yazarın RootModule'e veya değişken kullanarak $PSEdition modül bildirimine gerekli mantığı eklemesi gerekir. Modüller hem CoreCLR hem de FullCLR'yi hedefleyen iki derlenmiş DLL kümesine sahip olabilir. Uygun DLL'leri yükleme mantığına sahip paketleme seçenekleri aşağıdadır.
1. Seçenek: PowerShell'in birden çok sürümünü ve birden çok sürümünü hedeflemek için modül paketleme
Modül klasörü içeriği
- Microsoft.Windows.PowerShell.ScriptAnalyzer.BuiltinRules.dll
- Microsoft.Windows.PowerShell.ScriptAnalyzer.dll
- PSScriptAnalyzer.psd1
- PSScriptAnalyzer.psm1
- ScriptAnalyzer.format.ps1xml
- ScriptAnalyzer.types.ps1xml
- Coreclr\Microsoft.Windows.PowerShell.ScriptAnalyzer.BuiltinRules.dll
- Coreclr\Microsoft.Windows.PowerShell.ScriptAnalyzer.dll
- en-US\about_PSScriptAnalyzer.help.txt
- en-US\Microsoft.Windows.PowerShell.ScriptAnalyzer.dll-Help.xml
- PSv3\Microsoft.Windows.PowerShell.ScriptAnalyzer.BuiltinRules.dll
- PSv3\Microsoft.Windows.PowerShell.ScriptAnalyzer.dll
- Ayarlar\CmdletDesign.psd1
- Ayarlar\DSC.psd1
- Ayarlar\ScriptFunctions.psd1
- Ayarlar\ScriptingStyle.psd1
- Ayarlar\ScriptSecurity.psd1
Dosyanın PSScriptAnalyzer.psd1 içeriği
@{
# Author of this module
Author = 'Microsoft Corporation'
# Script module or binary module file associated with this manifest.
RootModule = 'PSScriptAnalyzer.psm1'
# Version number of this module.
ModuleVersion = '1.6.1'
# ---
}
Aşağıdaki mantık, geçerli sürüme veya sürüme bağlı olarak gerekli derlemeleri yükler.
Dosyanın içeriği PSScriptAnalyzer.psm1 :
#
# Script module for module 'PSScriptAnalyzer'
#
Set-StrictMode -Version Latest
# Set up some helper variables to make it easier to work with the module
$PSModule = $ExecutionContext.SessionState.Module
$PSModuleRoot = $PSModule.ModuleBase
# Import the appropriate nested binary module based on the current PowerShell version
$binaryModuleRoot = $PSModuleRoot
if (($PSVersionTable.Keys -contains "PSEdition") -and ($PSVersionTable.PSEdition -ne 'Desktop')) {
$binaryModuleRoot = Join-Path -Path $PSModuleRoot -ChildPath 'coreclr'
}
else
{
if ($PSVersionTable.PSVersion -lt [Version]'5.0')
{
$binaryModuleRoot = Join-Path -Path $PSModuleRoot -ChildPath 'PSv3'
}
}
$binaryModulePath = Join-Path -Path $binaryModuleRoot -ChildPath 'Microsoft.Windows.PowerShell.ScriptAnalyzer.dll'
$binaryModule = Import-Module -Name $binaryModulePath -PassThru
# When the module is unloaded, remove the nested binary module that was loaded with it
$PSModule.OnRemove = {
Remove-Module -ModuleInfo $binaryModule
}
2. Seçenek: Uygun DLL'leri yüklemek için PSD1 dosyasında $PSEdition değişken kullanın
PS 5.1 veya daha yeni sürümlerde, $PSEdition modül bildirim dosyasında global değişkene izin verilir. Modül yazarı, bu değişkeni kullanarak modül bildirim dosyasındaki koşullu değerleri belirtebilir.
$PSEdition değişkenine kısıtlı dil modunda veya Veri bölümünde başvurulabilir.
Anahtarlı CompatiblePSEditions örnek modül bildirim dosyası.
@{
# Script module or binary module file associated with this manifest.
RootModule = if($PSEdition -eq 'Core')
{
'coreclr\MyCoreClrRM.dll'
}
else # Desktop
{
'clr\MyFullClrRM.dll'
}
# Supported PSEditions
CompatiblePSEditions = 'Desktop', 'Core'
# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
NestedModules = if($PSEdition -eq 'Core')
{
'coreclr\MyCoreClrNM1.dll',
'coreclr\MyCoreClrNM2.dll'
}
else # Desktop
{
'clr\MyFullClrNM1.dll',
'clr\MyFullClrNM2.dll'
}
}
Modül içeriği
- ModuleWithEditions\ModuleWithEditions.psd1
- ModuleWithEditions\clr\MyFullClrNM1.dll
- ModuleWithEditions\clr\MyFullClrNM2.dll
- ModuleWithEditions\clr\MyFullClrRM.dll
- ModuleWithEditions\coreclr\MyCoreClrNM1.dll
- ModuleWithEditions\coreclr\MyCoreClrNM2.dll
- ModuleWithEditions\coreclr\MyCoreClrRM.dll
Diğer ayrıntılar
PSEditions içeren komut dosyaları
PowerShellGallery'de PSEditions desteği
PowerShell Gallery