about_Windows_PowerShell_Compatibility

Kısa açıklama

PowerShell 7 için Windows PowerShell Uyumluluğu işlevselliğini açıklar.

Uzun açıklama

Modül bildirimi modülün PowerShell Core ile uyumlu olduğunu belirtmedikçe, klasördeki %windir%\system32\WindowsPowerShell\v1.0\Modules modüller uyumluluk özelliği Windows PowerShell tarafından arka planda Windows PowerShell 5.1 işlemine yüklenir.

Uyumluluk özelliğini kullanma

İlk modül Windows PowerShell Uyumluluk özelliği kullanılarak içeri aktarıldığında PowerShell, 5.1 işlemi Windows PowerShell arka planda çalışan adlı WinPSCompatSession bir uzak oturum oluşturur. Bu işlem, Uyumluluk özelliği ilk modülü içeri aktardığında oluşturulur. Bu tür son modül kaldırıldığında (kullanılarak Remove-Module) veya PowerShell işleminden çıkıldığında işlem kapatılır.

Oturumda WinPSCompatSession yüklenen modüller örtük uzaktan iletişim aracılığıyla kullanılır ve geçerli PowerShell oturumuna yansıtılır. Bu, PowerShell işleri için kullanılan taşıma yöntemiyle aynıdır.

Bir modül oturuma WinPSCompatSession aktarıldığında, örtük uzaktan iletişim kullanıcının $env:Temp dizininde bir ara sunucu modülü oluşturur ve bu proxy modülünü geçerli PowerShell oturumuna aktarır. Bu, PowerShell'in modülün Windows PowerShell Uyumluluk işlevselliği kullanılarak yüklendiğini algılamasını sağlar.

Oturum oluşturulduktan sonra seri durumdan çıkarılmış nesneler üzerinde düzgün çalışmayan işlemler için kullanılabilir. İşlem hattının tamamı Windows PowerShell yürütülür ve yalnızca nihai sonuç döndürülür. Örnek:

$s = Get-PSSession -Name WinPSCompatSession
Invoke-Command -Session $s -ScriptBlock {
  "Running in Windows PowerShell version $($PSVersionTable.PSVersion)"
}

Uyumluluk özelliği iki şekilde çağrılabilir:

  • UseWindowsPowerShell parametresini kullanarak bir modülü içeri aktararak açıkça

    Import-Module -Name ScheduledTasks -UseWindowsPowerShell
    
  • Bir Windows PowerShell modülünü modül adına, yola göre içeri aktararak veya komut bulma yoluyla otomatik yükleyerek örtük olarak.

    Import-Module -Name ServerManager
    Get-AppLockerPolicy -Local
    

    Henüz yüklenmemişse, komutunu çalıştırdığınızda Get-AppLockerPolicyAppLocker modülü otomatik olarak yüklenir.

Windows PowerShell Uyumluluğu, PowerShell yapılandırma dosyasındaki ayarda listelenen modüllerin yüklenmesini WindowsPowerShellCompatibilityModuleDenyList engeller.

Bu ayarın varsayılan değeri:

"WindowsPowerShellCompatibilityModuleDenyList":  [
   "PSScheduledJob","BestPractices","UpdateServices"
]

Örtük modül yüklemesini yönetme

Windows PowerShell Uyumluluğu özelliğinin örtük içeri aktarma davranışını devre dışı bırakmak için PowerShell yapılandırma dosyasındaki ayarını kullanınDisableImplicitWinCompat. Bu ayar dosyaya powershell.config.json eklenebilir. Daha fazla bilgi için bkz. about_powershell_config.

Bu örnekte, Windows PowerShell Uyumluluğu'nun örtük modül yükleme özelliğini devre dışı bırakmaya yönelik bir yapılandırma dosyasının nasıl oluşturulacağı gösterilmektedir.

$ConfigPath = "$PSHOME\DisableWinCompat.powershell.config.json"
$ConfigJSON = ConvertTo-Json -InputObject @{
  "DisableImplicitWinCompat" = $true
  "Microsoft.PowerShell:ExecutionPolicy" = "RemoteSigned"
}
$ConfigJSON | Out-File -Force $ConfigPath
pwsh -settingsFile $ConfigPath

Modül uyumluluğu hakkında daha fazla bilgi için Bkz. PowerShell 7 modülü uyumluluk listesi.

Cmdlet kopyalamayı yönetme

Windows PowerShell Uyumluluğu özelliği, modülleri uyumluluk modunda yüklemek için örtük uzaktan iletişim kullanır. Sonuç, modül tarafından dışarı aktarılan komutların geçerli PowerShell 7 oturumunda aynı ada sahip komutlardan öncelikli olmasıdır. PowerShell 7.0.0 sürümünde bu, PowerShell ile birlikte gelen temel modülleri içerir.

PowerShell 7.1'de davranış, aşağıdaki temel PowerShell modüllerinin tıkanmaması için değiştirildi:

  • Microsoft.PowerShell.ConsoleHost
  • Microsoft.PowerShell.Diagnostics
  • Microsoft.PowerShell.Host
  • Microsoft.PowerShell.Management
  • Microsoft.PowerShell.Security
  • Microsoft.PowerShell.Utility
  • Microsoft.WSMan.Management

PowerShell 7.1, uyumluluk modu tarafından tıkanmaması gereken ek modülleri listeleme özelliği de ekledi.

Ayarı PowerShell yapılandırma dosyasına ekleyebilirsiniz WindowsPowerShellCompatibilityNoClobberModuleList . Bu ayarın değeri, modül adlarının virgülle ayrılmış bir listesidir. Bu ayarın varsayılan değeri:

"WindowsPowerShellCompatibilityNoClobberModuleList": [ ]

Sınırlamalar

Windows PowerShell Uyumluluğu işlevselliği:

  1. Yalnızca Windows bilgisayarlarda yerel olarak çalışır
  2. 5.1 Windows PowerShell gerektirir
  3. Canlı nesneler üzerinde değil, serileştirilmiş cmdlet parametreleri ve dönüş değerleri üzerinde çalışır
  4. Windows PowerShell uzaktan iletişim oturumuna aktarılan tüm modüller aynı çalışma alanına sahiptir.

Anahtar sözcükler

about_Windows_PowerShell_Compatibility

Ayrıca bkz.