Aracılığıyla paylaş


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:

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 wingetaracı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:PSModulePathbelirtilen 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-PSSessionve Invoke-Command cmdlet'leri New-PSSessionSSH 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 $PSHOMEGrup İ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!