Windows PowerShell Uyumluluğu hakkında


Kısa açıklama

PowerShell 7 için Windows PowerShell Uyumluluk işlevini açıklar.

Uzun açıklama

Modül bildirimi, modülün PowerShell Core ile uyumlu olduğunu belirtmediği sürece, %windir%\system32\WindowsPowerShell\v1.0\Modules klasöründeki modüller, Windows PowerShell Uyumluluğu tarafından arka planda Windows PowerShell 5.1 işlemine yüklenir. özellik.

Uyumluluk özelliğini kullanma

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

WinPSCompatSession oturumuna yüklenen modüller, örtülü uzaktan iletişim yoluyla kullanılır ve mevcut PowerShell oturumuna yansıtılır. Bu, PowerShell işleri için kullanılan aktarım yönteminin aynısıdır.

Bir modül WinPSCompatSession oturumuna aktarıldığında, örtülü 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şlevi kullanılarak yüklendiğini algılamasına olanak tanır.

Oturum oluşturulduktan sonra seri durumdan çıkarılan nesnelerde 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 nihai 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 bir modülü açıkça içe aktararak

    Import-Module -Name ScheduledTasks -UseWindowsPowerShell
    
  • Örtülü olarak bir Windows PowerShell modülünü modül adına, yola göre içe aktararak veya komut keşfi yoluyla otomatik yükleme yaparak.

    Import-Module -Name ServerManager
    Get-AppLockerPolicy -Local
    

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

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

Bu ayarın varsayılan değeri:

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

Örtülü modül yüklemeyi yönetme

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

Bu örnek, Windows PowerShell Uyumluluğunun örtülü modül yükleme özelliğini devre dışı bırakan bir yapılandırma dosyasının nasıl oluşturulacağını gösterir.

$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 en son bilgi için PowerShell 7 modül uyumluluk listesine bakın.

Cmdlet gizlemeyi yönetme

Windows PowerShell Uyumluluğu özelliği, modülleri uyumluluk modunda yüklemek için örtülü uzaktan iletişim kullanır. Sonuç olarak, modül tarafından dışarı aktarılan komutlar, geçerli PowerShell 7 oturumunda aynı addaki komutlara göre öncelikli olur. PowerShell 7.0.0 sürümünde buna PowerShell ile birlikte gelen çekirdek modüller de dahildi.

PowerShell 7.1'de davranış, aşağıdaki temel PowerShell modüllerinin gizlenmemesi 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 ayrıca uyumluluk modu tarafından engellenmemesi gereken ek modülleri listeleme yeteneğini de ekledi.

WindowsPowerShellCompatibilityNoClobberModuleList ayarını PowerShell yapılandırma dosyasına ekleyebilirsiniz. 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şlevi:

  1. Yalnızca Windows bilgisayarlarda yerel olarak çalışır
  2. Windows PowerShell 5.1 gerektirir
  3. Canlı nesnelerde 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ını paylaşır.

Anahtar Kelimeler

about_Windows_PowerShell_Compatibility

Ayrıca bakınız

  • about_Modules
  • Import-Module

İlgili makaleler