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 göstermedikçe, klasördeki %windir%\system32\WindowsPowerShell\v1.0\Modules modüller Windows PowerShell Uyumluluğu özelliği tarafından arka planda Windows PowerShell 5.1 işlemine yüklenir.

Uyumluluk özelliğini kullanma

İlk modül Windows PowerShell Uyumluluğu özelliği kullanılarak içeri aktarıldığında PowerShell, windows PowerShell 5.1 işleminde 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 modül kaldırıldığında (kullanarak 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 aktarım 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 proxy 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ına olanak tanır.

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'de yürütülür ve yalnızca son sonuç döndürülür. Örneğin:

$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 açıkça bir modülü içeri aktararak

    Import-Module -Name ScheduledTasks -UseWindowsPowerShell
    
  • 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 bir PowerShell yapılandırma dosyasındaki ayarı kullanın DisableImplicitWinCompat . 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 çekirdek 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. Windows PowerShell 5.1 gerektirir
  3. Canlı nesneler üzerinde değil, serileştirilmiş cmdlet parametrelerinde ve dönüş değerlerinde ç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.