Aracılığıyla paylaş


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 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 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:

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 wingetaracı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.exeolarak adlandırılır. 6. sürüm ve üzeri sürümlerde yürütülebilir dosya pwsh.exeolarak 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:PSModulePathtarafı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-PSSessionve 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

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, 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!