Windows PowerShell 5.1’den 7’ye geçme
Bulut, şirket içi ve hibrit ortamlar için tasarlanan PowerShell 7, iyileştirmeler ve yeni özelliklerle doludur.
- 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
- Artan 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 paketini kullanarak PowerShell dağıtma
- ZIP paketini kullanarak PowerShell dağıtma
Not
MSI paketi, Microsoft Configuration Manager gibi yönetim ürünleriyle dağıtılabilir ve güncelleştirilebilir. GitHub Yayın sayfasından paketleri indirin.
MSI paketini dağıtmak için Yönetici istrator 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 PowerShell'i Windows'a yükleme konusundaki 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ırma
.NET sürümleri arasındaki farklar
PowerShell 7.2, .NET 6.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.x arasındaki farklar.
Ayrı yükleme yolu ve yürütülebilir ad
PowerShell 7, Windows PowerShell 5.1 ile yan yana yürütmeyi etkinleştirerek yeni bir dizine yüklenir.
Sürüme göre konumları yükleme:
- 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ı olarak adlandırılır powershell.exe
. Sürüm 6 ve üzerinde yürütülebilir dosya olarak adlandırılır pwsh.exe
. 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, ortam değişkenindeki $Env:PSModulePath
bu konumları birleştirir. Modülü ada göre içeri aktarırken PowerShell tarafından $Env:PSModulePath
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 değerleri $Env:PSModulePath
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 şeklindedir
$HOME\Documents\WindowsPowerShell
. - PowerShell 7'de profilin konumu şeklindedir
$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 Import-Module
geçişi kolaylaştırmak için bir UseWindowsPowerShell anahtarı da ekledik. Bu işlevsellik hakkında daha fazla bilgi için bkz . about_Windows_PowerShell_Compatibility.
Powershell Uzaktan İletişim
PowerShell uzaktan iletişim, 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 Yönetimi uzaktan iletişim
Windows PowerShell 5.1 ve altındaki sürümler, 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, bağlantıları uzaktan yönlendirmek için adlı Microsoft.PowerShell
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 cmdlet'ini Enable-PSRemoting
çalıştırın. Belirli uç noktalara bağlanma hakkında bilgi için bkz . PowerShell'de WS-Management Uzaktan İletişimi
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 . Uzak Gereksinimler Hakkında.
Uzaktan iletişimle çalışma hakkında daha fazla bilgi için bkz . Uzak Hakkında
SSH tabanlı uzaktan iletişim
WinRM gibi 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 ana bilgisayar işlemi oluşturur. Windows veya Linux'ta SSH tabanlı uzaktan iletişim kurma hakkında ayrıntılı bilgi ve örnekler için bkz. SSH üzerinden PowerShell uzaktan iletişim.
Not
PowerShell Galerisi (PSGallery), SSH tabanlı uzaktan iletişimi otomatik olarak yapılandıran bir modül ve cmdlet içerir. Microsoft.PowerShell.RemotingTools
PSGallery'den modülü yükleyin ve cmdlet'ini Enable-SSH
çalıştırın.
, Enter-PSSession
ve Invoke-Command
cmdlet'leri New-PSSession
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ı UserName ile 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şaretini ()@
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'de $PSHOME
Grup İlkesi şablonları ve bir yükleme betiği bulunur.
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. Betik, InstallPSCorePolicyDefinitions.ps1
yerel makineye PowerShell Yönetici istrative Templates 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
PowerShell Uzantısı ile Visual Studio Code (VSCode), PowerShell 7 için desteklenen betik ortamıdır. Windows PowerShell Tümleşik Betik Ortamı (ISE) yalnızca Windows PowerShell'i destekler.
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 Komut Paleti'nde bulunan ISE Modunu Etkinleştir işlevini kullanın. Bu işlev VSCode'u ISE stili bir düzene dönüştürür. ISE stili düzen, tanıdık bir kullanıcı deneyiminde PowerShell'in tüm yeni özelliklerini ve özelliklerini sunar.
Yeni ISE düzenine geçmek için Ctrl+Shift+P tuşlarına basarak Komut Paleti'ni açın, yazın PowerShell
ve PowerShell: ISE Modunu Etkinleştir'i seçin.
Düzeni özgün düzene ayarlamak için Komut Paleti'ni açın, PowerShell: ISE Modunu Devre Dışı Bırak (varsayılanlara geri yükleme) seçeneğini belirleyin.
VSCode düzenini ISE olarak özelleştirme hakkında ayrıntılı bilgi 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 ve iş ortakları, Visual Studio Code için PowerShell uzantısında betik oluşturma deneyimini geliştirmeye odaklanmıştır.
Sonraki Adımlar
Etkili bir şekilde geçiş yapmak için gereken bilgiye sahip olan PowerShell 7'yi hemen yükleyin!
PowerShell