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.
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, %windir%\system32\WindowsPowerShell\v1.0\Modules klasöründeki modüller Windows PowerShell Uyumluluk ö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 arka plan Windows PowerShell 5.1 işleminde çalışan WinPSCompatSession adlı bir uzak oturum oluşturur. Uyumluluk özelliği ilk modülü içeri aktardığında PowerShell bu işlemi oluşturur. Son modül kaldırıldığında (Remove-Modulekullanılarak) veya PowerShell işlemi çıktığında işlem kapatılır.
WinPSCompatSession oturumuna yüklenen modüller örtük uzaktan iletişim yoluyla 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 WinPSCompatSession oturumuna 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. Proxy modülü, 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. Mesela:
$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 -UseWindowsPowerShellWindows 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 -LocalHenüz yüklenmemişse,
Get-AppLockerPolicyç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ü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 DisableImplicitWinCompat ayarını kullanın. Bu ayar powershell.config.json dosyasına 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 PowerShell 7 modül uyumluluğu listesine bakın.
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, aşağıdaki çekirdek PowerShell modüllerinin tıkanmaması için davranış 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 moduna göre daha fazla modülü kopyalamanın dışında tutma özelliğ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şlevselliği:
- Yalnızca Windows bilgisayarlarda yerel olarak çalışır
- Windows PowerShell 5.1 gerektirir
- Canlı nesneler üzerinde değil, serileştirilmiş cmdlet parametrelerinde ve dönüş değerlerinde çalışır
- Windows PowerShell uzaktan iletişim oturumuna aktarılan tüm modüller için tek bir çalışma alanını paylaşır
Geçici dosyalar
Windows PowerShell Uyumluluğu özelliği, Windows PowerShell 5.1 modüllerini PowerShell 7'de kullanılabilir hale getirmek için örtük uzaktan iletişim kullanır. Örtük uzaktan iletişim, $Env:TEMP dizininde geçici dosyalar oluşturur. Her prxied modülü, aşağıdaki adlandırma kuralına sahip ayrı bir klasörde depolanır:
-
remoteIpMoProxy_<ModuleName>_<ModuleVersion>_localhost_<SessionGuid>.
Son prxied modülünü oturumdan kaldırdığınızda veya oturumu kapattığınızda PowerShell geçici dosyaları kaldırır.
Ayrıca bakınız
PowerShell