PowerShell 7.0’daki yenilikler

PowerShell 7.0, heterojen ortamları ve karma bulutu yönetmek için oluşturulmuş açık kaynaklı, platformlar arası (Windows, macOS ve Linux) bir PowerShell sürümüdür.

Bu sürümde, aşağıdakiler dahil olmak üzere bir dizi yeni özellik sunuyoruz:

  • ile işlem hattı paralelleştirme ForEach-Object -Parallel
  • Yeni işleçler:
    • Üçüncül işleç: a ? b : c
    • İşlem hattı zinciri işleçleri: || ve &&
    • Null koşullu işleçler: ?? ve ??=
  • Hataları daha kolay araştırmak için basitleştirilmiş ve dinamik hata görünümü ve Get-Error cmdlet'i
  • Kullanıcıların örtük bir Windows PowerShell oturumundaki modülleri içeri aktarmasını sağlayan bir uyumluluk katmanı
  • Otomatik yeni sürüm bildirimleri
  • DSC kaynaklarını doğrudan PowerShell 7'den çağırma özelliği (deneysel)

Özelliklerin ve düzeltmelerin tam listesini görmek için bkz. değişiklik günlükleri.

PowerShell'i nereden yükleyebilirim?

PowerShell 7 şu anda x64'te aşağıdaki işletim sistemlerini destekler:

  • Windows 8.1 ve 10
  • Windows Server 2012, 2012 R2, 2016 ve 2019
  • macOS 10.13+
  • Red Hat Enterprise Linux (RHEL) / CentOS 7
  • Fedora 30+
  • Debian 9
  • Ubuntu LTS 16.04+
  • Alpine Linux 3.8+

Ayrıca, PowerShell 7.0 Arm32 ve ARM64 debian, Ubuntu ve ARM64 Alpine Linux çeşitlerini destekler.

Tercih ettiğiniz işletim sistemi Windows, macOS veya Linux için yükleme yönergelerini denetleyin.

Resmi olarak desteklenmese de topluluk Arch ve Kali Linux için paketler de sağlamıştır.

Not

Debian 10 ve CentOS 8 şu anda WinRM uzaktan iletişimini desteklemiyor. SSH tabanlı uzaktan iletişim kurma hakkında ayrıntılı bilgi için bkz. SSH üzerinden PowerShell Uzaktan İletişimi.

Desteklenen işletim sistemleri ve destek yaşam döngüsü hakkında daha güncel bilgiler için bkz. PowerShell Destek Yaşam Döngüsü.

PowerShell 7'i çalıştırma

PowerShell 7, Windows PowerShell ayrı olarak bir dizine yüklenir. Bu, PowerShell 7'yi Windows PowerShell 5.1 ile yan yana çalıştırmanızı sağlar. PowerShell 6.x için PowerShell 7, PowerShell 6.x'i kaldıran yerinde bir yükseltmedir.

  • PowerShell 7'nin yüklü olduğu %programfiles%\PowerShell\7
  • klasör %programfiles%\PowerShell\7 öğesine eklenir $env:PATH

PowerShell 7 yükleyici paketi, PowerShell 6.x'in önceki sürümlerini yükseltmektedir:

  • Windows üzerinde PowerShell 6.x: %programfiles%\PowerShell\6 yerine %programfiles%\PowerShell\7
  • Linux: şununla değiştirilir: /opt/microsoft/powershell/6/opt/microsoft/powershell/7
  • macOS: şununla değiştirilir: /usr/local/microsoft/powershell/6/usr/local/microsoft/powershell/7

Not

Windows PowerShell'da, PowerShell'i başlatacak yürütülebilir dosya olarak adlandırılırpowershell.exe. Sürüm 6 ve üzerinde, yürütülebilir dosya adı yan yana yürütmeyi destekleyecek şekilde değiştirilir. PowerShell 7'yi başlatmaya yönelik yeni yürütülebilir dosya adı şeklindedir pwsh.exe. Önizleme derlemeleri, 7 önizleme dizininin altında olduğu pwsh gibi pwsh-preview yerinde kalır.

Windows PowerShell ile geriye dönük uyumluluk iyileştirildi

PowerShell 7.0, bir öğesini .NET Core 3.1'e taşıyarak mevcut Windows PowerShell modülleriyle çok daha geriye dönük uyumluluk sağlar. Bu, Ve gibi Out-GridViewShow-CommandGUI işlevselliği gerektiren Windows'ta birçok modülün yanı sıra Windows'un bir parçası olarak gelen birçok rol yönetimi modülünü içerir.

Windows için useWindowsPowerShell yeni bir anahtar parametresi öğesine Import-Moduleeklenir. Bu anahtar, PowerShell 7'de yerel bir Windows PowerShell işlemi kullanarak bu modülde yer alan cmdlet'leri örtük olarak çalıştıran bir proxy modülü oluşturur. Import-Module hakkında daha fazla bilgi için.

PowerShell 7.0 ile hangi Microsoft modüllerinin çalıştığı hakkında daha fazla bilgi için bkz. Modül Uyumluluğu Tablosu.

ForEach-Object'a paralel yürütme eklendi

Bir ForEach-Object koleksiyondaki öğeleri yineleyen cmdlet artık yeni Parallel parametresiyle yerleşik paralelliğe sahiptir.

Varsayılan olarak, paralel betik blokları paralel görevleri başlatan çağıranın geçerli çalışma dizinini kullanır.

Bu örnek, yerel bir Windows makinesindeki 5 sistem günlüğünden 50.000 günlük girdisi alır:

$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'

$logEntries = $logNames | ForEach-Object -Parallel {
    Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5

$logEntries.Count

50000

Parallel parametresi, her giriş günlüğü adı için paralel olarak çalıştırılacak betik bloğunu belirtir.

Yeni ThrottleLimit parametresi, belirli bir zamanda paralel olarak çalışan betik bloklarının sayısını sınırlar. Varsayılan değer 5’tir.

Betik bloğundaki $_ geçerli giriş nesnesini temsil etmek için değişkenini kullanın. $using: Çalışan betik bloğuna değişken başvuruları geçirmek için kapsamı kullanın.

ForEach-Object hakkında daha fazla bilgi için.

Üçüncül işleç

PowerShell 7.0, basitleştirilmiş if-else bir deyim gibi davranan bir üçüncül işleç sunar. PowerShell'in üçüncül işleci C# üçüncül işleç söz diziminden yakından modellenmiştir:

<condition> ? <if-true> : <if-false>

Koşul-ifadesi her zaman değerlendirilir ve sonucu, hangi dalın daha sonra değerlendirileceğini belirlemek için Boole değerine dönüştürülür:

  • İfade <if-true> doğruysa <condition> , ifade yürütülür
  • İfade <if-false> false ise <condition> , ifade yürütülür

Örnek:

$message = (Test-Path $path) ? "Path exists" : "Path not found"

Bu örnekte, yol varsa Yol var görüntülenir. Yol yoksa Yol bulunamadı görüntülenir.

If hakkında daha fazla bilgi için.

İşlem hattı zinciri işleçleri

PowerShell 7, ve || işleçlerini && koşullu zincir işlem hatlarına uygular. Bu işleçler PowerShell'de "işlem hattı zinciri işleçleri" olarak bilinir ve ve zshgibi bash kabuklardaki AND ve OR listelerinin yanı sıra Windows Komut Kabuğu'ndaki (cmd.exe ) koşullu işleme simgelerine benzer.

İşleç && , sol taraftaki işlem hattı başarılı olursa sağ taraftaki işlem hattını yürütür. Buna karşılık, || sol taraftaki işlem hattı başarısız olursa işleç sağ işlem hattını yürütür.

Not

Bu işleçler, işlem hattının $? başarısız olup olmadığını belirlemek için ve $LASTEXITCODE değişkenlerini kullanır. Bu, bunları yalnızca cmdlet'ler veya işlevlerle değil yerel komutlarla kullanmanıza olanak tanır.

Burada, ilk komut başarılı olur ve ikinci komut yürütülür:

Write-Output 'First' && Write-Output 'Second'
First
Second

Burada ilk komut başarısız olur, ikincisi yürütülemez:

Write-Error 'Bad' && Write-Output 'Second'
Write-Error: Bad

Burada, ilk komut başarılı olur, ikinci komut yürütülemez:

Write-Output 'First' || Write-Output 'Second'
First

Burada ilk komut başarısız olduğundan ikinci komut yürütülür:

Write-Error 'Bad' || Write-Output 'Second'
Write-Error 'Bad'
Second

İşlem Hattı Zinciri İşleçleri hakkında daha fazla bilgi için.

Null birleşim, atama ve koşullu işleçler

PowerShell 7 Null birleşim işleci ??, Null koşullu atama ??=ve Null koşullu üye erişim işleçleri ?. ve ?[]içerir.

Null birleşim İşleci ??

Null birleşim işleci ?? , null değilse sol işleneninin değerini döndürür. Aksi takdirde, sağ işleneni değerlendirir ve sonucunu döndürür. ?? Sol işlenen null olmayan olarak değerlendirilirse işleç sağ işlenenini değerlendirmez.

$x = $null
$x ?? 100
100

Aşağıdaki örnekte sağ işlenen değerlendirilmez:

[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020

Null koşullu atama işleci ?? =

Null koşullu atama işleci ??= , sağ işleneninin değerini yalnızca sol işlenen null olarak değerlendirilirse sol işlenenine atar. ??= Sol işlenen null olmayan olarak değerlendirilirse işleç sağ işlenenini değerlendirmez.

$x = $null
$x ??= 100
$x
100

Aşağıdaki örnekte sağ işlenen değerlendirilmez:

[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020

Null koşullu üye erişim işleçleri?. Ve? [] (Deneysel)

Not

Bu, PSNullConditionalOperators adlı deneysel bir özelliktir. Daha fazla bilgi için bkz . Deneysel Özellikleri Kullanma.

Null koşullu işleç, üye erişimine, ?.veya öğe erişimine izin ?[]verir, ancak işlenen null olmayan olarak değerlendirilirse, aksi takdirde null döndürür.

Not

PowerShell değişken adının bir parçası olmaya izin verdiğinden ? , bu işleçleri kullanmak için değişken adının resmi belirtimi gereklidir. Bu nedenle veya değişken adının ${a?}bir parçası olduğunda ? gibi ${a} değişken adlarının çevresinde kullanılması {} gerekir.

Aşağıdaki örnekte, Status üye özelliğinin değeri döndürülür:

$Service = Get-Service -Name 'bits'
${Service}?.status
Stopped

Aşağıdaki örnek, üye adına erişmeye çalışmadan null döndürür Durumu:

$service = $Null
${Service}?.status

Benzer şekilde, kullanılarak ?[]öğesinin değeri döndürülür:

$a = 1..10
${a}?[0]
1

İşlenen null olduğunda öğeye erişilir ve null döndürülür:

$a = $null
${a}?[0]

Daha fazla bilgi için About_Operators.

Yeni görünüm ConciseView ve cmdlet Get-Error

PowerShell 7.0, yeni bir varsayılan görünüm olan ConciseView ile etkileşimli ve betik hatalarının okunabilirliğini geliştirmek için hata iletilerinin görüntülenmesini geliştirir. Görünümler, tercih değişkeni $ErrorViewaracılığıyla kullanıcı tarafından seçilebilir.

ConciseView ile bir hata bir betikten veya ayrıştırıcı hatasından değilse, bu tek satırlık bir hata iletisidir:

Get-Childitem -Path c:\NotReal
Get-ChildItem: can't find path 'C:\NotReal' because it doesn't exist

Hata betik yürütme sırasında oluşuyorsa veya ayrıştırma hatasıysa, PowerShell hatayı içeren çok satırlı bir hata iletisi, hatanın bu satırda nerede olduğunu gösteren bir işaretçi ve hata iletisi döndürür. Terminal ANSI renk kaçış dizilerini (VT100) desteklemiyorsa renkler görüntülenmez.

Betikten hata görüntüleme

PowerShell 7'deki varsayılan görünüm ConciseView'dır. Önceki varsayılan görünüm NormalView'dı ve tercih değişkenini $ErrorViewayarlayarak bunu seçebilirsiniz.

$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView

Not

Hata iletisinin vurgu rengini değiştirmeyi desteklemek için yeni $Host.PrivateDataerrorAccentColor özelliği eklendi.

Yeni bir cmdlet Get-Error , istendiğinde hatanın tam olarak ayrıntılı bir görünümünü sağlar. Varsayılan olarak cmdlet, oluşan son hatanın iç özel durumları da dahil olmak üzere tüm ayrıntılarını görüntüler.

Get-Error'dan görüntüle

cmdlet'i Get-Error yerleşik değişkenini $Errorkullanarak işlem hattından girişi destekler. Get-Error tüm kanallı hataları görüntüler.

$Error | Get-Error

Cmdlet, Get-Error geçerli oturumda görüntülenmesini istediğiniz hata sayısını belirtmenize olanak sağlayan En Yeni parametresini destekler.

Get-Error -Newest 3 # Displays the lst three errors that occurred in the session

Get-Error hakkında daha fazla bilgi için.

Yeni sürüm bildirimi

PowerShell 7, kullanıcıları PowerShell güncelleştirmelerinin varlığı konusunda uyarmak için güncelleştirme bildirimlerini kullanır. PowerShell, daha yeni bir sürümün kullanılabilir olup olmadığını belirlemek için günde bir kez çevrimiçi bir hizmeti sorgular.

Not

Güncelleştirme denetimi, belirli bir 24 saatlik sürenin ilk oturumunda gerçekleşir. Performans nedenleriyle, güncelleştirme denetimi oturum başladıktan 3 saniye sonra başlar. Bildirim yalnızca sonraki oturumların başlangıcında gösterilir.

Varsayılan olarak, PowerShell sürümüne/daline bağlı olarak iki farklı bildirim kanalından birine abone olur. Desteklenen, Genel Kullanıma Açık (GA) PowerShell sürümleri yalnızca güncelleştirilmiş GA sürümleri için bildirim döndürür. Önizleme ve Sürüm Adayı (RC) sürümleri önizleme, RC ve GA sürümlerine yönelik güncelleştirmeleri bildirir.

Güncelleştirme bildirimi davranışı ortam değişkeni kullanılarak $Env:POWERSHELL_UPDATECHECK değiştirilebilir. Aşağıdaki değerler desteklenir:

  • Varsayılan , tanımlanmamasıyla aynıdır $Env:POWERSHELL_UPDATECHECK
    • GA sürümleri, GA sürümlerine yönelik güncelleştirmeleri bildirir
    • Önizleme/RC sürümleri, GA güncelleştirmelerini ve önizleme sürümlerini bildirir
  • Kapat özelliği güncelleştirme bildirimi özelliğini kapatır
  • LTS yalnızca uzun süreli hizmet (LTS) GA sürümlerine yönelik güncelleştirmeleri bildirir

Not

Ortam değişkeni $Env:POWERSHELL_UPDATECHECK ilk kez ayarlanana kadar mevcut değildir.

Yalnızca yayınlar için sürüm bildirimini ayarlamak için LTS :

$Env:POWERSHELL_UPDATECHECK = 'LTS'

Sürüm bildirimini davranışa Default ayarlamak için:

$Env:POWERSHELL_UPDATECHECK = 'Default'

Güncelleştirme Bildirimleri hakkında daha fazla bilgi için.

Invoke-DSCResource ile yeni DSC Kaynağı desteği (Deneysel)

Not

Bu, PSDesiredStateConfiguration.InvokeDscResource adlı deneysel bir özelliktir. Daha fazla bilgi için bkz . Deneysel Özellikleri Kullanma.

Cmdlet, Invoke-DscResource belirtilen bir PowerShell Desired State Configuration (DSC) kaynağının yöntemini çalıştırır.

Bu cmdlet, yapılandırma belgesi oluşturmadan doğrudan bir DSC kaynağını çağırır. Yapılandırma yönetimi ürünleri bu cmdlet'i kullanarak DSC kaynaklarını kullanarak Windows veya Linux'ı yönetebilir. Bu cmdlet, DSC altyapısı hata ayıklama etkinken kaynakların hata ayıklamasını da etkinleştirir.

Bu komut, WindowsProcess adlı kaynağın Set yöntemini çağırır ve belirtilen Windows işlemini başlatmak için zorunlu Path ve Arguments özelliklerini sağlar.

Invoke-DscResource -Name WindowsProcess -Method Set -ModuleName PSDesiredStateConfiguration -Property @{
  Path = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
  Arguments = ''
}

Invoke-DSCResource hakkında daha fazla bilgi için.

Hataya Neden Olan Değişiklikler ve Geliştirmeler

Hataya Neden Olan Değişiklikler

  • Güncelleştirme bildiriminin LTS ve varsayılan kanalları desteklemesini sağlama (#11132)
  • Test-Connection'ı Windows PowerShell'daki gibi çalışacak şekilde güncelleştirin (#10697) (Teşekkürler@vexx32!)
  • $? korunsun mu? ParenExpression, SubExpression ve ArrayExpression için (#11040)
  • çalışma dizinini Start-Job'de geçerli dizin olarak ayarlama (#10920) (Teşekkürler @iSazonov!)
  • Oturum içi kültür değişikliklerini tutarlı bir şekilde yansıtmak $PSCulture yapma (#10138) (Teşekkürler @iSazonov!)

Altyapı Güncelleştirmeler ve Düzeltmeleri

  • Uzak senaryolar için kesme noktası API'lerinde geliştirmeler (#11312)
  • Başka bir Runspace'e sızan PowerShell sınıf tanımını düzeltme (#11273)
  • 7.0.0-Preview1'de eklenen FirstOrDefault temel öğesinin neden olduğu biçimlendirmedeki gerileme düzeltildi (#11258)
  • PS7 Telemetrisinde izlenen ek Microsoft Modülleri (#10751)
  • Onaylı özellikleri deneysel olmayan hale getirme (#11303)
  • Varsa TargetObject kullanmak için ConciseView'ı güncelleştirin (#11075)
  • CompletionCompleters ortak yöntemlerinde NullReferenceException düzeltilir (#11274)
  • Windows dışı platformlarda apartman iş parçacığı durumu denetimini düzeltme (#11301)
  • İşlem ve makine ortamı değişkenlerini birleştirmek için PSModulePath ayarını güncelleştirin (#11276)
  • .NET Core'un 3.1.0'a çarpması (#11260)
  • $env:PATH'in önündeki $PSHOME algılanması düzeltildi (#11141)
  • pwsh'in $env:PSModulePath öğesini devralmasına izin ver ve powershell.exe doğru şekilde başlatılmasını etkinleştir (#11057)
  • .NET Core 3.1 önizleme 1'e geçme (#10798)
  • Dosya sistemi sağlayıcısında yeniden ayrıştırma etiketi denetimlerini yeniden düzenleme (#10431) (Teşekkürler @iSazonov!)
  • Komut dosyası günlüğünde CR ve yeni satırı 0x23CE karakteriyle değiştirme (#10616)
  • AppDomain.CurrentDomain.ProcessExit'ten olay işleyicisinin kaydını kaldırarak kaynak sızıntısını düzeltme (#10626)
  • Hata Ayıklama, Hata, Bilgi, İlerleme, Ayrıntılı veya Uyarı iletileri oluşturulduğunda hata ayıklayıcıya girmek için ActionPreference.Break'e destek eklendi (#8205) (Teşekkürler @KirkMunro!)
  • .CPL uzantısını belirtmeden PowerShell'de denetim masası eklentilerini başlatmayı etkinleştirin. (#9828)
  • -split işlecinde negatif sayıları destekleme (#8960) (Teşekkürler @ece-jacob-scott!)

Genel Cmdlet Güncelleştirmeler ve Düzeltmeler

  • UnixStat Deneysel Özelliğinde dosya değişikliklerinin tarihini ayarlamaya yönelik Raspbian sorunu düzeltildi (#11313)
  • ConvertFrom-SecureString'a -AsPlainText ekleme (#11142)
  • WinCompat için WindowsPS sürüm denetimi eklendi (#11148)
  • Bazı WinCompat senaryolarında hata raporlamayı düzeltme (#11259)
  • Yerel ikili çözümleyici ekleme (#11032) (Teşekkürler @iSazonov!)
  • CJK karakterlerini doğru şekilde dikkate almak için karakter genişliği hesaplamasını güncelleştirin (#11262)
  • macOS için Unblock-File ekleme (#11137)
  • Get-PSCallStack'de regresyonu düzeltme (#11210) (Teşekkürler @iSazonov!)
  • İş cmdlet'lerini kullanırken ScheduledJob modülünün otomatik yüklemesini kaldırma (#11194)
  • Get-Error cmdlet'ine OutputType ekleme ve özgün tür adlarını koruma (#10856)
  • SupportsVirtualTerminal özelliğindeki null başvuru düzeltilir (#11105)
  • Get-WinEvent sınır denetimi ekleme (#10648) (Teşekkürler @iSazonov!)
  • StopUpstreamCommandsException komutunun -ErrorVariable içinde doldurulmaması için komut çalışma zamanını düzeltin (#10840)
  • Yerel komutlar için çıkış kodlamasını [Console]::OutputEncoding olarak ayarlayın (#10824)
  • Örneklerde çok satırlı kod bloklarını destekleme (#10776) (Teşekkürler @Greg-Smulko!)
  • Select-String cmdlet'ine Culture parametresi ekleme (#10943) (Teşekkürler @iSazonov!)
  • Sonunda ters eğik çizgi bulunan Start-Job çalışma dizini yolu düzeltilir (#11041)
  • ConvertFrom-Json: Koleksiyonları varsayılan olarak açma (#10861) (Teşekkürler @danstur!)
  • -CaseSensitive ve -AsHashtable anahtarlarıyla Group-Object cmdlet'i için büyük/küçük harfe duyarlı Hashtable kullanma (#11030) (Teşekkürler @vexx32!)
  • Yolu doğru büyük/küçük harfe sahip olacak şekilde yeniden oluştururken dosyaları numaralandırma işlemi başarısız olursa özel durumu işleme (#11014)
  • ConciseView'un MyCommand yerine Etkinliği göstermesini düzeltme (#11007)
  • Web cmdlet'lerinin HTTP hata durumlarını yoksaymasına izin ver (#10466) (Teşekkürler @vdamewood!)
  • Birden fazla CommandInfo'nun Get-Command 'a bağlanmasını düzeltme (#10929)
  • Windows için Get-Counter cmdlet'ini geri ekleme (#10933)
  • [AutomationNull]::Value ve [NullString]::Value değerlerini $null olarak ConvertTo-Json yapın (#10957)
  • SSH uzaktan iletişim için ipv6 adresinden köşeli ayraçları kaldırma (#10968)
  • pwsh'ye gönderilen komut yalnızca boşluksa kilitlenmeyi düzeltin (#10977)
  • Platformlar arası Get-Clipboard ve Set-Clipboard eklendi (#10340)
  • Dosya sistemi nesnesinin özgün yolunu ek sondaki eğik çizgiye sahip olmayacak şekilde ayarlama düzeltilir (#10959)
  • ConvertTo-Json için destek $null (#10947)
  • Windows'da Out-Printer komutu geri ekle (#10906)
  • Start-Job -WorkingDirectory'de boşluk düzeltmesi (#10951)
  • PSConfiguration.cs'deki bir ayar için null değerini alırken varsayılan değeri döndür (#10963) (Teşekkürler @iSazonov!)
  • Sonlandırıcı olmayan GÇ özel durumunu işleme (#10950)
  • Out-GridView, Show-Command ve Get-Help -ShowWindow'ı etkinleştirmek için GraphicalHost derlemesi ekleme (#10899)
  • Get-HotFix işlem hattı aracılığıyla ComputerName alma (#10852) (Teşekkürler @kvprasoon!)
  • Ortak parametreleri kullanılabilir olarak göstermesi için parametreler için sekme tamamlamayı düzeltme (#10850)
  • First() çağrılmadan önce herhangi bir sistem dosyası girdisinin döndürülip döndürülmediğini denetlemek için GetCorrectCasedPath() düzeltildi (#10930)
  • çalışma dizinini Start-Job'de geçerli dizin olarak ayarlama (#10920) (Teşekkürler @iSazonov!)
  • TabExpansion2'yi -CursorColumn gerektirmeyen ve $InputScript.Length olarak davranacak şekilde değiştirin (#10849)
  • Konağın Ekran Satırlarını veya Sütunlarını döndürmeyebileceği durumu işleme (#10938)
  • Desteklemeyen konaklar için tema renklerinin kullanımını düzeltme (#10937)
  • Update-List geri ekle komutu (#10922)
  • Clear-RecycleBin için FWLink Kimliğini Güncelleştirme (#10925)
  • Sekme tamamlama sırasında, dosya özniteliklerini okuyamıyorsanız dosyayı atlayın (#10910)
  • Windows için Clear-RecycleBin geri ekleme (#10909)
  • Çıkışta VT kaçış dizisi olup olmadığını denetlemek için ekleyin $env:__SuppressAnsiEscapeSequences (#10814)
  • Select-String çıkışı renklendirmek için -NoEmphasize parametresi ekleme (#8963) (Teşekkürler @derek-xia!)
  • Get-HotFix cmdlet'ini geri ekleme (#10740)
  • PowerShell barındıran uygulamalarda Add-Type kullanılabilir hale getirme (#10587)
  • LanguagePrimitives.IsNullLike() içinde daha etkili değerlendirme sırası kullanın (#10781) (Teşekkürler @vexx32!)
  • Format-Hex'da karma koleksiyon kanallı giriş ve kanallı giriş akışlarının işlenmesini geliştirme (#8674) (Teşekkürler @vexx32!)
  • Değer beklenen türle eşleşmediğinde SSHConnection karma tablolarında tür dönüştürmeyi kullanın (#10720) (Teşekkürler @SeeminglyScience!)
  • -TotalCount ayarlandığında Get-Content -ReadCount 0 davranışını düzeltme (#10749) (Teşekkürler @eugenesmlv!)
  • Get-WinEvent'de yeniden ifade erişimi reddedildi hata iletisi (#10639) (Teşekkürler @iSazonov!)
  • Sabit listesi veya türü kısıtlanmış değişken ataması için sekme tamamlamayı etkinleştirme (#10646)
  • Kullanılmayan SourceLength uzaktan iletişim özelliğini kaldırma ve biçimlendirme sorunlarına neden olma (#10765)
  • ConvertFrom-StringData 'a -Sınırlayıcı parametresi ekleme (#10665) (Teşekkürler @steviecoaster!)
  • SSH ile Invoke-Command kullanırken ScriptBlock için konum parametresi ekleme (#10721) (Teşekkürler @machgo!)
  • ConciseView için birden çok satır varsa ancak betik adı yoksa satır bağlamı bilgilerini göster (#10746)
  • Dosya sistemi sağlayıcısına \wsl$\ yolları için destek ekleme (#10674)
  • Ayrıştırıcıda TokenKind.QuestionMark için eksik belirteç metnini ekleme (#10706)
  • Her ForEach-Object -Paralel çalışan betiğin geçerli çalışma dizinini çağıran betikle aynı konuma ayarlayın. (#10672)
  • api-ms-win-core-file-l1-2-2.dll FindFirstStreamW ve FindNextStreamW API'leri için Kernell32.dll ile değiştirin (#10680) (Teşekkürler @iSazonov!)
  • Betiği daha StrictMode toleranslı olacak şekilde biçimlendirmeye yardımcı olacak ince ayar yapın (#10563)
  • New-Service 'a -SecurityDescriptorSDDL parametresi ekleme (#10483) (Teşekkürler @kvprasoon!)
  • Bilgi çıkışını kaldırma, ping kullanımını Test-Connection birleştirme (#10478) (Teşekkürler @vexx32!)
  • Özel ayrıştırma noktalarını bunlara erişmeden okuyun (#10662) (Teşekkürler @iSazonov!)
  • Terminale doğrudan Clear-Host çıkışı (#10681) (Teşekkürler @iSazonov!)
  • Format-Table ve -Property ile gruplandırma için yeni satır ekleme (#10653)
  • Boş dizeye izin vermek için Get-Random üzerindeki -InputObject öğesinden [ValidateNotNullOrEmpty] öğesini kaldırın (#10644)
  • Öneri sistem dizesi uzaklık algoritması büyük/küçük harfe duyarlı olun (#10549) (Teşekkürler @iSazonov!)
  • ForEach-Object -Paralel giriş işlemede null başvuru özel durumu düzeltildi (#10577)
  • PowerShell grup ilkesi tanımları ekleme (#10468)
  • Konsol ana bilgisayarını, birleştirme senaryolarında kullanılan XTPUSHSGR/XTPOPSGR VT denetim dizilerini destekleyecek şekilde güncelleştirin. (#10208)
  • Start-Job WorkingDirectory parametresi ekleme (#10324) (Teşekkürler @davinci26!)
  • Kesme noktası değişikliklerinin yanlışlıkla konak runspace hata ayıklayıcısına çoğaltılmasına neden olan olay işleyicisini kaldırın (#10503) (Teşekkürler @KirkMunro!)
  • api-ms-win-core-job-12-1-0.dll Microsoft.PowerShell.Commands.NativeMethods P/Invoke API'sindeki Kernell32.dll(#10417) ile değiştirin (Teşekkürler @iSazonov!)
  • Değişken ataması ve -OutVariable (#10444) içindeki New-Service için yanlış çıktı düzeltin (Teşekkürler @kvprasoon!)
  • Çıkış kodu, komut satırı parametreleri ve boşluk içeren yol ile ilgili genel araç sorunlarını düzeltme (#10461)
  • OneDrive'da özyineleme düzeltildi - FindFirstFileEx() öğesini SafeFindHandle türünü kullanacak şekilde değiştirin (#10405)
  • NVDA ekran okuyucusu etkinse Windows'da PSReadLine'ı otomatik yüklemeyi atlayın (#10385)
  • PowerShell ile yerleşik modül sürümlerini 7.0.0.0'a yükseltme (#10356)
  • Add-Type içinde aynı ada sahip bir tür zaten varsa hata oluşturma ekleme (#9609) (Teşekkürler @iSazonov!)

Performans

  • Parser.SaveError'da kapatmayı kullanmaktan kaçının (#11006)
  • Yeni Regex örnekleri oluştururken önbelleğe almayı geliştirme (#10657) (Teşekkürler @iSazonov!)
  • types.ps1xml, typesV3.ps1xml ve GetEvent.types.ps1xml'den PowerShell yerleşik tür verilerinin işlenmesini geliştirme (#10898)
  • PSConfiguration.ReadValueFromFile'ı daha hızlı ve daha verimli bellek sağlamak için güncelleştirin (#10839)
  • Runspace başlatma için küçük performans geliştirmeleri ekleme (#10569) (Teşekkürler @iSazonov!)
  • Yaygın olarak kullanılan senaryoları (#10454) için ForEach-Object hızlandırın ve birçok çalışma alanıyla ForEach-Object Paralel performans sorununu düzeltin (#10455)

Kod Temizleme

  • Açıklama ve öğe metnini Microsoft standartlarına uyacak şekilde değiştirme (#11304)
  • Compiler.cs'de temizleme stili sorunları (#10368) (Teşekkürler @iSazonov!)
  • CommaDelimitedStringCollection için kullanılmayan tür dönüştürücüsüsünü kaldırın (#11000) (Teşekkürler @iSazonov!)
  • InitialSessionState.cs'de temizleme stili (#10865) (Teşekkürler @iSazonov!)
  • PSSession sınıfı için kod temizleme (#11001)
  • Get-Help ilk kez çalıştığında çalışmayan 'Update-Help çalıştırma' özelliğini Get-Help kaldırın (#10974)
  • Stil sorunlarını düzeltme (#10998) (Teşekkürler @iSazonov!)
  • Temizleme: Yerleşik tür diğer adını kullanın (#10882) (Teşekkürler @iSazonov!)
  • ConsolePrompting kullanılmayan ayar anahtarını kaldırın ve ExecutionPolicy ayarını sorgularken gereksiz dize oluşturmayı önleyebilirsiniz (#10985)
  • Günlük derlemeler için güncelleştirme bildirimi denetimini devre dışı bırakma (#10903) (Teşekkürler @bergmeister!)
  • #10338'de kaybolan hata ayıklama API'sini yeniden devreye alma (#10808)
  • Artık kullanılmayan WorkflowJobSourceAdapter başvurularını kaldırma (#10326) (Teşekkürler @KirkMunro!)
  • PreserveSig özniteliklerini düzelterek atlama listesi kodunda COM arabirimlerini temizleme (#9899) (Teşekkürler @weltkante!)
  • -ia'nın -InformationAction ortak parametresinin neden diğer adı olmadığını açıklayan bir açıklama ekleyin (#10703) (Teşekkürler @KirkMunro!)
  • InvokeCommandCmdlet.cs dosyasını InvokeExpressionCommand.cs olarak yeniden adlandırın (#10659) (Teşekkürler @kilasuit!)
  • Güncelleştirme bildirimleriyle ilgili küçük kod temizlemeleri ekleme (#10698)
  • Uzaktan iletişim kurulum betiklerinden kullanım dışı iş akışı mantığını kaldırma (#10320) (Teşekkürler @KirkMunro!)
  • Uygun durumu kullanmak için yardım biçimini güncelleştirme (#10678) (Teşekkürler @tnieto88!)
  • Geçen ay için işlemelerde gelen CodeFactor stili sorunlarını temizleme (#10591) (Teşekkürler @iSazonov!)
  • PSTernaryOperator deneysel özelliğinin açıklamasındaki yazım hatası düzeltilir (#10586) (Teşekkürler @bergmeister!)
  • ActionPreference.Suspend numaralandırma değerini desteklenmeyen, ayrılmış bir duruma dönüştürün ve ActionPreference kullanma kısıtlamasını kaldırın.Tercih değişkenlerinde yoksay (#10317) (Teşekkürler) @KirkMunro!)
  • İşlevselliği değiştirmeden daha okunabilir ve güvenilir kod elde etmek için ArrayList değerini List<T> ile değiştirin (#10333) (Teşekkürler @iSazonov!)
  • TestConnectionCommand için kod stili düzeltmeleri yapma (#10439) (Teşekkürler @vexx32!)
  • AutomationEngine'i temizleyin ve ek SetSessionStateDrive yöntem çağrısını kaldırın (#10416) (Teşekkürler @iSazonov!)
  • ConvertTo-Csv ve ConvertFrom-Csv için varsayılan ParameterSetName değerini Sınırlayıcı olarak yeniden adlandırın (#10425)

Araçlar

  • SDKToUse özelliğinin VS'de derleneceği varsayılan ayarı ekleyin (#11085)
  • Install-Powershell.ps1: MSI yüklemesini kullanmak için parametre ekleme (#10921) (Teşekkürler @MJECloud!)
  • install-powershell.ps1 için temel örnekler ekleme (#10914) (Teşekkürler @kilasuit!)
  • PowerShellHome parametresinde boş dizeyi Install-PowerShellRemoting.ps1 işleyin (#10526) (Teşekkürler) @Orca88!)
  • install-powershell.sh'de /etc/lsb-release sürümünden /etc/os-release sürümüne geçin (#10773) (Teşekkürler @Himura2la!)
  • Windows'da günlük sürümde pwsh.exe ve pwsh'yi denetleyin (#10738) (Teşekkürler @centreboard!)
  • installpsh-osx.sh'de gereksiz dokunmayı kaldırma (#10752)
  • Önceden yüklenmiş günlük derlemeyi denetlemek için install-powershell.ps1 güncelleştirme (#10489)

Testler

  • Güvenilir olmayan DSC testlerini beklemede yapma (#11131)
  • Karma tablo anahtarlarını doğru doğrulamak için stringdata testini düzeltme (#10810)
  • Test modüllerini kaldırma (#11061) (Teşekkürler @iSazonov!)
  • Test URL'sinin yeniden denemeleri arasındaki süreyi artırma (#11015)
  • Test eylemlerini doğru şekilde açıklamak için testleri güncelleştirin. (#10928) (Teşekkürler @romero126!)
  • Geçici olarak TestAppDomainProcessExitEvenHandlerNotLeaking testini atlayın (#10827)
  • Sızıntı testinin olay işleyicisini kararlı hale getirme (#10790)
  • CI YAML'de büyük/küçük harf eşitleme (#10767) (Teşekkürler @RDIL!)
  • Olay işleyicisi sızıntı düzeltmesi için test ekleme (#10768)
  • Get-ChildItem testi ekleme (#10507) (Teşekkürler @iSazonov!)
  • Doğruluk için anahtardan parametreye testlerin belirsiz dilini değiştirme (#10666) (Teşekkürler @romero126!)
  • ForEach-Object -Parallel testlerine deneysel denetim ekleme (#10354) (Teşekkürler @KirkMunro!)
  • Alpine doğrulaması için testleri güncelleştirme (#10428)

Derleme ve Paket geliştirmeleri

  • Eşgüdümlü Paket derlemesi için Nuget paket imzalamayı düzeltme (#11316)
  • PowerShell Galerisi ve NuGet'ten bağımlılıkları güncelleştirme (#11323)
  • Microsoft.ApplicationInsights'ı 2.11.0'dan 2.12.0'a (#11305) çarpma
  • Microsoft.CodeAnalysis.CSharp'ı 3.3.1'den 3.4.0'a çıkarma (#11265)
  • Debian 10 ve 11 için Güncelleştirmeler paketleri (#11236)
  • Yalnızca RC öncesi deneysel özellikleri etkinleştirme (#11162)
  • macOS en düşük sürümünü güncelleştirme (#11163)
  • NJsonSchema'nın 10.0.27'den 10.0.28'e çarpması (#11170)
  • Preview.5 için README.md ve metadata.json içindeki bağlantılar güncelleştiriliyor (#10854)
  • PowerShell'e ait uyumluluk testleri için dosyaları seçin (#10837)
  • win7x86 msix paketinin oluşturulmasına izin verin. (dahili 10515)
  • Anlamsal sürümlerin NormalizeVersion işlevine geçirilmesine izin ver (#11087)
  • .NET Core framework'lerini 3.1-preview.3'e (#11079) ekleme
  • /src/Modules'de PSReadLine'ı 2.0.0-beta5'ten 2.0.0-beta6'ya çarpma (#11078)
  • Newtonsoft.Json'ı 12.0.2'den 12.0.3'e (#11037) çarpma (#11038)
  • Debian 10, 11 ve CentOS 8 paketlerini ekleme (#11028)
  • ReleaseDate alanıyla Build-Info Json dosyasını karşıya yükleme (#10986)
  • .NET core framework'lerini 3.1-preview.2'ye (#10993) ekleme
  • x86 MSIX paketinin derlemesini etkinleştirme (#10934)
  • build.psm1'de dotnet SDK yükleme betiği URL'sini güncelleştirme (#10927)
  • Bump Markdig.Signed from 0.17.1 to 0.18.0 (#10887)
  • 2.0.1 ile 2.0.2 arasındaki Bump ThreadJob (#10886)
  • AppX Bildirim ve Paketleme modülünü MS Store gereksinimlerine uyacak şekilde güncelleştirme (#10878)
  • PowerShell SDK'sı için paket başvurularını önizlemeye güncelleştirin.5 (dahili 10295)
  • Güncelleştirme ThirdPartyNotices.txt (#10834)
  • Microsoft.PowerShell.Native'i 7.0.0-preview.3'e (#10826) çarpma
  • Microsoft.ApplicationInsights'ı 2.10.0'dan 2.11.0'a (#10608) Çarpma
  • NJsonSchema'nın 10.0.24'ten 10.0.27'ye çarpması (#10756)
  • Derleme sistemine MacPorts desteği ekleme (#10736) (Teşekkürler @Lucius-Q-User!)
  • Bump PackageManagement from 1.4.4 to 1.4.5 (#10728)
  • NJsonSchema'nın 10.0.23'ten 10.0.24'e (#10635) çarpması
  • MSI'de istemci/sunucu telemetrisini ayırt etmek için ortam değişkeni ekleme (#10612)
  • 2.0.3'ten 2.0.4'e PSDesiredStateConfiguration'ı Çarpma (#10603)
  • Microsoft.CodeAnalysis.CSharp'ı 3.2.1'den 3.3.1'e çıkarma (#10607)
  • .Net Core 3.0 RTM Güncelleştirmesi (#10604) (Teşekkürler@bergmeister!)
  • MSIX paketlemesini, sürümü Windows Mağazası gereksinimlerine göre güncelleştirin (#10588)
  • PowerShellGet sürümünü 2.2'den 2.2.1'e (#10382) kaldırma
  • Bump PackageManagement sürümü 1.4.3 ile 1.4.4 (#10383)
  • 7.0.0-preview.4 için README.md ve metadata.json güncelleştirme (dahili 10011)
  • .Net Core 3.0 sürümünü Önizleme 9'dan RC1'e yükseltin (#10552) (Teşekkürler@bergmeister!)
  • ExperimentalFeature listesi oluşturmayı düzeltme (dahili 9996)
  • PSReadLine sürümünü 2.0.0-beta4 sürümünden 2.0.0-beta5 sürümüne (#10536) çarpın
  • Yayın etiketini ayarlamak için yayın derleme betiğini düzeltme
  • Microsoft.PowerShell.Native sürümünü 7.0.0-preview.2 sürümüne güncelleştirme (#10519)
  • Netcoreapp3.0 preview9'a yükseltin (#10484) (Teşekkürler @bergmeister!)
  • Günlük eşgüdümlü derlemenin günlük derleme olduğunu bildiğinden emin olun (#10464)
  • Birleştirilmiş paket derlemesini günlük derlemeleri yayınacak şekilde güncelleştirme (#10449)
  • Appveyor başvuruyu kaldırma (#10445) (Teşekkürler @RDIL!)
  • NJsonSchema sürümünü 10.0.22'den 10.0.23'e (#10421) dönüştürme
  • Alpine için bazı bağımlılıklar gerekli olduğundan linux-x64 derleme klasörünü silme işlemini kaldırın (#10407)

Belgeler ve Yardım İçeriği

  • Değişiklik günlüklerini sürüm başına bir günlükte yeniden düzenleme (#11165)
  • PowerShell 7 çevrimiçi yardım belgeleri için FWLink'leri düzeltme (#11071)
  • Güncelleştirme CONTRIBUTING.md (#11096) (Teşekkürler @mklement0!)
  • README.md yükleme belgesi bağlantılarını düzeltme (#11083)
  • install-powershell.ps1 betiğine örnekler ekler (#11024) (Teşekkürler @kilasuit!)
  • CHANGELOG.md Select-String vurgu ve Import-DscResource düzeltmesi (#10890)
  • eski bağlantıyı powershell-beginners-guide.md kaldırma (#10926)
  • Kararlı ve bakım değişiklik günlüklerini birleştirme (#10527)
  • Derleme belgelerinde kullanılan .NET sürümünü güncelleştirme (#10775) (Teşekkürler @Greg-Smulko!)
  • MSDN'den powershell-beginners-guide.md'de Microsoft Learn bağlantılarını değiştirme (#10778) (Teşekkürler @iSazonov!)
  • Bozuk DSC genel bakış bağlantısı düzeltildi (#10702)
  • Stack Overflow'a başka bir topluluk kaynağı olarak bağlanmak için Support_Question.md dosyasını güncelleştirin (#10638) (Teşekkürler @mklement0!)
  • Dağıtım isteği şablonuna işlemci mimarisi ekleme (#10661)
  • PowerShell belgelerini öğrenmeye yeni PowerShell MoL kitabı ekleme (#10602)
  • v6.1.6 ve v6.2.3 sürümleri için README.md ve meta verileri güncelleştirme (#10523)
  • README.md'de yazım hatası düzeltme (#10465) (Teşekkürler @vedhasp!)
  • Öğrenme Kaynakları belgelerine PSKoans modülüne başvuru ekleme (#10369) (Teşekkürler @vexx32!)
  • 7.0.0-preview.3 için README.md ve metadata.json güncelleştirme (#10393)