Windows PowerShell 5.1'den PowerShell 7'ye geçiş
Bulut, şirket içi ve hibrit ortamlar için tasarlanan PowerShell 7,iyileştirmeler ve
- Windows PowerShell ile yan yana yükler ve çalıştırır
- Mevcut Windows PowerShell modülleriyle geliştirilmiş uyumluluk
- Üçüncül işleçler ve
ForEach-Object -Parallel
gibi yeni dil özellikleri - Geliştirilmiş performans
- SSH tabanlı uzaktan iletişim
- Platformlar arası birlikte çalışabilirlik
- Docker kapsayıcıları desteği
PowerShell 7, Windows PowerShell ile yan yana çalışarak dağıtımdan önce sürümleri kolayca test edip karşılaştırmanızı sağlar. Geçiş basit, hızlı ve güvenlidir.
PowerShell 7, aşağıdaki Windows işletim sistemlerinde desteklenir:
- Windows 10 ve 11
- Windows Server 2016, 2019 ve 2022
PowerShell 7 ayrıca macOS ve çeşitli Linux dağıtımlarında da çalışır. Desteklenen işletim sistemlerinin listesi ve destek yaşam döngüsü hakkında bilgi için bkz. PowerShell Destek Yaşam Döngüsü.
PowerShell 7'yi yükleme
Esneklik sağlamak ve BT, DevOps mühendisleri ve geliştiricilerin ihtiyaçlarını desteklemek için PowerShell 7'yi yüklemek için çeşitli seçenekler mevcuttur. Çoğu durumda, yükleme seçenekleri aşağıdaki yöntemlere azaltılabilir:
- MSI paketi kullanarak PowerShell'i dağıtma
- ZIP paketi kullanarak PowerShell dağıtma
Not
MSI paketi Microsoft Configuration Managergibi yönetim ürünleriyle dağıtılabilir ve güncelleştirilebilir. GitHub Yayın sayfasındanpaketleri indirin.
MSI paketini dağıtmak için Yönetici izni gerekir. ZIP paketi herhangi bir kullanıcı tarafından dağıtılabilir. ZIP paketi, tam bir yükleme işlemi gerçekleştirmeden önce test için PowerShell 7'yi yüklemenin en kolay yoludur.
PowerShell 7'yi Windows Mağazası veya winget
aracılığıyla da yükleyebilirsiniz. Bu yöntemlerin her ikisi hakkında daha fazla bilgi için Windows'de PowerShell Yükleme makalesindeki ayrıntılı yönergelere bakın.
PowerShell 7'i Windows PowerShell 5.1 ile yan yana kullanma
PowerShell 7, Windows PowerShell 5.1 ile birlikte var olacak şekilde tasarlanmıştır. Aşağıdaki özellikler, PowerShell'e yatırımınızın korunmasını ve PowerShell 7'ye geçişinizin basit olmasını sağlar.
- Ayrı yükleme yolu ve yürütülebilir ad
- Ayrı PSModulePath
- Her sürüm için ayrı profiller
- Geliştirilmiş modül uyumluluğu
- Yeni uzaktan iletişim uç noktaları
- Grup ilkesi desteği
- Olay günlüklerini ayırın
.NET sürümleri arasındaki farklar
PowerShell 7.4, .NET 8.0 üzerine kurulmuştur. Windows PowerShell 5.1, .NET Framework 4.x üzerinde yerleşiktir. .NET sürümleri arasındaki farklar, özellikle .NET yöntemini doğrudan çağırıyorsanız betiklerinizin davranışını etkileyebilir. Daha fazla bilgi için Windows PowerShell 5.1 ile PowerShell 7.xarasındaki farklar.
Ayrı yükleme yolu ve çalıştırılabilir dosya adı
PowerShell 7, Windows PowerShell 5.1 ile yan yana yürütmeyi etkinleştirerek yeni bir dizine yüklenir.
Sürümüne göre kurulum yerleri:
- Windows PowerShell 5.1:
$env:WINDIR\System32\WindowsPowerShell\v1.0
- PowerShell 6.x:
$env:ProgramFiles\PowerShell\6
- PowerShell 7:
$env:ProgramFiles\PowerShell\7
Yeni konum PATH'inize eklenir ve hem Windows PowerShell 5.1 hem de PowerShell 7'yi çalıştırmanıza olanak sağlar. PowerShell 6.x'ten PowerShell 7'ye geçiriyorsanız PowerShell 6 kaldırılır ve PATH değiştirilir.
Windows PowerShell'de, PowerShell yürütülebilir dosyası powershell.exe
olarak adlandırılır. 6. sürüm ve üzeri sürümlerde yürütülebilir dosya pwsh.exe
olarak adlandırılır. Yeni ad, her iki sürümün de yan yana yürütülmesini desteklemeyi kolaylaştırır.
Ayrı PSModulePath
Varsayılan olarak, Windows PowerShell ve PowerShell 7 modülleri farklı konumlarda depolar. PowerShell 7, $Env:PSModulePath
ortam değişkenindeki bu konumları birleştirir. Bir modülü ada göre içeri aktarırken PowerShell, $Env:PSModulePath
tarafından belirtilen konumu denetler. Bu, PowerShell 7'nin hem Çekirdek hem de Masaüstü modüllerini yüklemesine olanak tanır.
Yükleme Kapsamı | Windows PowerShell 5.1 | PowerShell 7.0 |
---|---|---|
PowerShell modülleri | $env:WINDIR\system32\WindowsPowerShell\v1.0\Modules |
$env:ProgramFiles\PowerShell\7\Modules |
Kullanıcı yüklendi AllUsers kapsamı |
$env:ProgramFiles\WindowsPowerShell\Modules |
$env:ProgramFiles\PowerShell\Modules |
Kullanıcı yüklendi CurrentUser kapsamı |
$HOME\Documents\WindowsPowerShell\Modules |
$HOME\Documents\PowerShell\Modules |
Aşağıdaki örneklerde her sürüm için varsayılan $Env:PSModulePath
değerleri gösterilmektedir.
Windows PowerShell 5.1 için:
$Env:PSModulePath -split (';')
C:\Users\<user>\Documents\WindowsPowerShell\Modules C:\Program Files\WindowsPowerShell\Modules C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
PowerShell 7 için:
$Env:PSModulePath -split (';')
C:\Users\<user>\Documents\PowerShell\Modules C:\Program Files\PowerShell\Modules C:\Program Files\PowerShell\7\Modules C:\Program Files\WindowsPowerShell\Modules C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
PowerShell 7'nin modüllerin otomatik olarak yüklenmesini sağlamak için Windows PowerShell yollarını ve PowerShell 7 yollarını içerdiğine dikkat edin.
Not
PSModulePath ortam değişkenini değiştirdiyseniz veya özel modüller veya uygulamalar yüklediyseniz ek yollar bulunabilir.
Daha fazla bilgi için bkz. about_PSModulePath.
Modüller hakkında daha fazla bilgi için bkz. about_Modules.
Ayrı profiller
PowerShell profili, PowerShell başlatıldığında yürütülen bir betiktir. Bu betik, komutlar, diğer adlar, işlevler, değişkenler, modüller ve PowerShell sürücüleri ekleyerek ortamınızı özelleştirir. Profil betiği, bu özelleştirmeleri el ile yeniden oluşturmak zorunda kalmadan her oturumda kullanılabilir hale getirir.
PowerShell 7'de profilin konumunun yolu değişti.
- Windows PowerShell 5.1'de profilin konumu
$HOME\Documents\WindowsPowerShell
. - PowerShell 7'de profilin konumu
$HOME\Documents\PowerShell
.
Profil dosya adları da değişti:
$PROFILE | Select-Object *Host* | Format-List
AllUsersAllHosts : C:\Program Files\PowerShell\7\profile.ps1
AllUsersCurrentHost : C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
CurrentUserAllHosts : C:\Users\<user>\Documents\PowerShell\profile.ps1
CurrentUserCurrentHost : C:\Users\<user>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1
Daha fazla bilgi için about_Profiles.
Windows PowerShell 5.1 modülleriyle PowerShell 7 uyumluluğu
Windows PowerShell 5.1'de kullandığınız modüllerin çoğu, Azure PowerShell ve Active Directory dahil olmak üzere PowerShell 7 ile zaten çalışır. Microsoft Graph, Office 365 ve diğerleri dahil olmak üzere daha fazla modül için yerel PowerShell 7 desteği eklemek için diğer ekiplerle birlikte çalışmaya devam ediyoruz. Desteklenen modüllerin geçerli listesi için bkz. powershell 7 modül uyumluluğu
Not
Windows'da, uyumsuz modüller kullananlar için PowerShell 7'ye geçişi kolaylaştırmak amacıyla UseWindowsPowerShell anahtarını Import-Module
'e ekledik. Bu işlevsellik hakkında daha fazla bilgi için bkz. about_Windows_PowerShell_Compatibility.
PowerShell uzaktan yönetim
PowerShell uzaktan yürütme, bir veya daha fazla uzak bilgisayarda herhangi bir PowerShell komutunu çalıştırmanıza olanak tanır. Kalıcı bağlantılar kurabilir, etkileşimli oturumlar başlatabilir ve uzak bilgisayarlarda betikler çalıştırabilirsiniz.
WS-Management uzaktan
Windows PowerShell 5.1 ve üzeri, bağlantı anlaşması ve veri aktarımı için WS-Management (WSMAN) protokollerini kullanır. Windows Uzaktan Yönetimi (WinRM), WSMAN protokolunu kullanır. WinRM etkinleştirildiyse, PowerShell 7 uzaktan bağlantılar için Microsoft.PowerShell
adlı mevcut Windows PowerShell 5.1 uç noktasını kullanır. PowerShell 7'yi kendi uç noktasını içerecek şekilde güncelleştirmek için Enable-PSRemoting
cmdlet'ini çalıştırın. Belirli uç noktalara bağlanma hakkında bilgi için bkz. WS-Management PowerShell'de uzaktan iletişim
Windows PowerShell uzaktan iletişimini kullanmak için uzak bilgisayarın uzaktan yönetim için yapılandırılması gerekir.
Yönergeler de dahil olmak üzere daha fazla bilgi için bkz. uzaktan gereksinimler hakkında
Uzaktan iletişimle çalışmayla ilgili daha fazla bilgi için, bkz. Uzaktan hakkında
SSH tabanlı uzaktan yönetim
WinRMgibi Windows yerel bileşenlerini kullanemeyen diğer işletim sistemlerini desteklemek için PowerShell 6.x'e SSH tabanlı uzaktan iletişim eklendi. SSH uzaktan iletişim, hedef bilgisayarda SSH alt sistemi olarak bir PowerShell konak işlemi oluşturur. Windows veya Linux'ta SSH tabanlı uzaktan iletişimi ayarlamayla ilgili ayrıntılar ve örnekler için bkz: SSH üzerinden PowerShell uzaktan iletişimi.
Not
PowerShell Galerisi (PSGallery), SSH tabanlı uzaktan iletişimi otomatik olarak yapılandıran bir modül ve cmdlet içerir.
PSGalleryMicrosoft.PowerShell.RemotingTools
modülünü yükleyin ve Enable-SSH
cmdlet'ini çalıştırın.
New-PSSession
, Enter-PSSession
ve Invoke-Command
cmdlet'leri SSH bağlantılarını desteklemek için yeni parametre kümelerine sahiptir.
[-HostName <string>] [-UserName <string>] [-KeyFilePath <string>]
Uzak oturum oluşturmak için hedef bilgisayarı HostName parametresiyle belirtin ve kullanıcı adını UserNameile belirtin. Cmdlet'leri etkileşimli olarak çalıştırırken parola girmeniz istenir.
Enter-PSSession -HostName <Computer> -UserName <Username>
Alternatif olarak, HostName parametresini kullanırken, kullanıcı adı bilgilerini ve ardından at işareti (@
) ve ardından bilgisayar adını girin.
Enter-PSSession -HostName <Username>@<Computer>
KeyFilePath parametresiyle özel bir anahtar dosyası kullanarak SSH anahtarı kimlik doğrulamasını ayarlayabilirsiniz.
Daha fazla bilgi için bkz. OpenSSH Anahtar Yönetimi
Desteklenen Grup İlkesi
PowerShell, kurumsal bir ortamdaki sunucular için tutarlı seçenek değerleri tanımlamanıza yardımcı olacak Grup İlkesi ayarları içerir. Bu ayarlar şunlardır:
- Konsol oturumu yapılandırması: PowerShell'in çalıştırıldığı bir yapılandırma uç noktası ayarlar.
- Modül Günlüğünü Açma: Modüllerin LogPipelineExecutionDetails özelliğini ayarlar.
- PowerShell Betik Bloğu Günlüğünü açma: Tüm PowerShell betiklerinin ayrıntılı günlüğe kaydedilmesini sağlar.
- Betik Yürütmeyi açma: PowerShell yürütme ilkesini ayarlar.
- PowerShell Transkripsiyonu'nu açma: PowerShell komutlarının giriş ve çıkışlarının metin tabanlı transkriptlere yakalanmasını sağlar.
- Update-Help için varsayılan kaynak yolunu ayarlayın: Güncelleştirilebilir Yardım kaynağını İnternet'e değil bir dizine ayarlar.
Daha fazla bilgi için bkz. about_Group_Policy_Settings.
PowerShell 7, $PSHOME
'de Grup İlkesi şablonları ve bir yükleme betiği içerir.
Grup İlkesi araçları, kullanıcı arabirimindeki ilke ayarlarını doldurmak için yönetim şablonu dosyalarını (.admx
, .adml
) kullanır. Bu, yöneticilerin kayıt defteri tabanlı ilke ayarlarını yönetmesine olanak tanır.
InstallPSCorePolicyDefinitions.ps1
betiği yerel makineye PowerShell Yönetim Şablonları yükler.
Get-ChildItem -Path $PSHOME -Filter *Core*Policy*
Directory: C:\Program Files\PowerShell\7
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/27/2020 12:38 AM 15861 InstallPSCorePolicyDefinitions.ps1
-a--- 2/27/2020 12:28 AM 9675 PowerShellCoreExecutionPolicy.adml
-a--- 2/27/2020 12:28 AM 6201 PowerShellCoreExecutionPolicy.admx
Olay Günlüklerini Ayırma
Windows PowerShell ve PowerShell 7 günlük olaylarını ayrı olay günlüklerine kaydeder. PowerShell günlüklerinin listesini almak için aşağıdaki komutu kullanın.
Get-WinEvent -ListLog *PowerShell*
Daha fazla bilgi için bkz. about_Logging_Windows.
Visual Studio Code ile geliştirilmiş düzenleme deneyimi
Güncelleştirilmiş PowerShell uzantısı şunları içerir:
- Yeni ISE uyumluluk modu
- Tümleşik Konsol'da söz dizimi vurgulama, çok satırlı düzenleme ve geri arama dahil olmak üzere PSReadLine
- Kararlılık ve performans geliştirmeleri
- Yeni CodeLens tümleştirmesi
- Geliştirilmiş yol otomatik tamamlama
Visual Studio Code'a geçişi kolaylaştırmak için, ISE Modunu Etkinleştir işlevini Komut Paletiiçinde kullanın. Bu işlev VSCode'u ISE stili bir düzene dönüştürür. ISE stili düzen, size tanıdık bir kullanıcı deneyiminde PowerShell'in tüm yeni özellik ve yeteneklerini sunar.
Yeni ISE düzenine geçmek için, Ctrl+Shift+P tuşlarına basarak Komut Paletiaçın, PowerShell
yazın ve powershell seçin: ISE Modunuetkinleştirin.
Düzeni özgün düzene ayarlamak için Komut Paletiaçın, PowerShell: ISE Modunu Devre Dışı Bırak (varsayılanlara geri yükleme)öğesini seçin.
VSCode düzenini ISE olarak özelleştirme hakkında ayrıntılar için bkz. Visual Studio Code'da ISE Deneyimini Çoğaltma
Not
ISE'yi yeni özelliklerle güncelleştirme planı yoktur. Windows 10 veya Windows Server 2019 ve üzeri sürümlerin en son sürümlerinde ISE artık kullanıcı tarafından kaldırılabilen bir özelliktir. ISE'yi kalıcı olarak kaldırma planı yoktur. PowerShell Ekibi, iş ortaklarıyla birlikte Visual Studio Code için PowerShell uzantısında betik yazma deneyimini geliştirmeye odaklanmıştır.
Sonraki Adımlar
Etkili bir şekilde geçiş yapmak için bilgiyle donanmış PowerShell 7'yi şimdi yükleyin!
PowerShell