Yang baru di PowerShell 7.0

PowerShell 7.0 adalah PowerShell edisi sumber terbuka, lintas platform (Windows, macOS, dan Linux), yang dibangun untuk mengelola lingkungan heterogen dan cloud hibrid.

Dalam rilis ini, kami memperkenalkan sejumlah fitur baru, termasuk:

  • Paralelisasi alur dengan ForEach-Object -Parallel
  • Operator baru:
    • Operator ternary: a ? b : c
    • Operator rantai alur: || dan &&
    • Operator kondisi null: ?? dan ??=
  • Tampilan kesalahan dan cmdlet yang disederhanakan dan Get-Error dinamis untuk penyelidikan kesalahan yang lebih mudah
  • Lapisan kompatibilitas yang memungkinkan pengguna mengimpor modul dalam sesi Windows PowerShell implisit
  • Pemberitahuan versi baru otomatis
  • Kemampuan untuk memanggil sumber daya DSC langsung dari PowerShell 7 (eksperimental)

Untuk melihat daftar lengkap fitur dan perbaikan, lihat changelog.

Di mana saya bisa menginstal PowerShell?

PowerShell 7 saat ini mendukung sistem operasi berikut pada x64, termasuk:

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

Selain itu, PowerShell 7.0 mendukung rasa ARM32 dan ARM64 dari Debian, Ubuntu, dan ARM64 Alpine Linux.

Periksa instruksi penginstalan untuk sistem operasi pilihan Anda Windows, macOS, atau Linux.

Meskipun tidak didukung secara resmi, komunitas juga telah menyediakan paket untuk Arch dan Kali Linux.

Catatan

Debian 10 dan CentOS 8 saat ini tidak mendukung WinRM remoting. Untuk detail tentang menyiapkan akses jauh berbasis SSH, lihat PowerShell Remoting melalui SSH.

Untuk informasi selengkapnya tentang sistem operasi yang didukung dan siklus hidup dukungan, lihat Siklus Hidup Dukungan PowerShell.

Menjalankan PowerShell 7

PowerShell 7 diinstal ke direktori secara terpisah dari Windows PowerShell. Ini memungkinkan Anda menjalankan PowerShell 7 berdampingan dengan Windows PowerShell 5.1. Untuk PowerShell 6.x, PowerShell 7 adalah peningkatan di tempat yang menghapus PowerShell 6.x.

  • PowerShell 7 diinstal ke %programfiles%\PowerShell\7
  • Folder %programfiles%\PowerShell\7 ditambahkan ke $env:PATH

Paket alat penginstal PowerShell 7 meningkatkan versi PowerShell 6.x sebelumnya:

  • PowerShell 6.x pada Windows: %programfiles%\PowerShell\6 digantikan oleh %programfiles%\PowerShell\7
  • Linux: /opt/microsoft/powershell/6 digantikan oleh /opt/microsoft/powershell/7
  • macOS: /usr/local/microsoft/powershell/6 digantikan oleh /usr/local/microsoft/powershell/7

Catatan

Dalam Windows PowerShell, executable untuk meluncurkan PowerShell diberi nama powershell.exe. Pada versi 6 ke atas, nama yang dapat dieksekusi diubah untuk mendukung eksekusi berdampingan. Nama baru yang dapat dieksekusi untuk meluncurkan PowerShell 7 adalah pwsh.exe. Build pratinjau tetap di tempat sebagai pwsh-preview alih-alih pwsh di bawah direktori 7-pratinjau.

Kompatibilitas mundur yang ditingkatkan dengan Windows PowerShell

PowerShell 7.0 menandai pemindahan ke .NET Core 3.1, memungkinkan kompatibilitas mundur yang jauh lebih lama dengan modul Windows PowerShell yang ada. Ini termasuk banyak modul di Windows yang memerlukan fungsi gui seperti Out-GridView dan Show-Command, serta banyak modul manajemen peran yang dikirim sebagai bagian dari Windows.

Untuk Windows, parameter sakelar baru UseWindowsPowerShell ditambahkan ke Import-Module. Sakelar ini membuat modul proksi di PowerShell 7 yang menggunakan proses Windows PowerShell lokal untuk secara implisit menjalankan cmdlet apa pun yang terkandung dalam modul tersebut. Untuk informasi selengkapnya tentang Import-Module.

Untuk informasi selengkapnya tentang modul Microsoft mana yang bekerja dengan PowerShell 7.0, lihat Tabel Kompatibilitas Modul.

Eksekusi paralel ditambahkan ke ForEach-Object

Cmdlet ForEach-Object , yang melakukan iterasi item dalam koleksi, sekarang memiliki paralelisme bawaan dengan parameter Paralel baru.

Secara default, blok skrip paralel menggunakan direktori kerja pemanggil saat ini yang memulai tugas paralel.

Contoh ini mengambil 50.000 entri log dari 5 log sistem pada komputer Windows lokal:

$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

Parameter Paralel menentukan blok skrip yang dijalankan secara paralel untuk setiap nama log input.

Parameter ThrottleLimit baru membatasi jumlah blok skrip yang berjalan secara paralel pada waktu tertentu. Bawaan adalah 5.

$_ Gunakan variabel untuk mewakili objek input saat ini di blok skrip. $using: Gunakan cakupan untuk meneruskan referensi variabel ke blok skrip yang sedang berjalan.

Untuk informasi selengkapnya tentang ForEach-Object.

Operator ternary

PowerShell 7.0 memperkenalkan operator ternary yang bereaksi seperti pernyataan yang disederhanakan if-else . Operator ternary PowerShell dimodelkan dengan cermat dari sintaks operator ternary C#:

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

Ekspresi kondisi selalu dievaluasi dan hasilnya dikonversi ke Boolean untuk menentukan cabang mana yang dievaluasi berikutnya:

  • Ekspresi <if-true> dijalankan jika <condition> ekspresinya benar
  • Ekspresi <if-false> dijalankan jika <condition> ekspresi salah

Contohnya:

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

Dalam contoh ini, jika jalur ada, maka Jalur ada ditampilkan. Jika jalur tidak ada, maka Jalur tidak ditemukan ditampilkan.

Untuk informasi selengkapnya tentang If.

Operator rantai alur

PowerShell 7 mengimplementasikan && operator dan || untuk menautkan alur secara kondisional. Operator ini dikenal di PowerShell sebagai "operator rantai alur", dan mirip dengan daftar AND dan OR dalam shell seperti bash dan zsh, serta simbol pemrosesan bersyarat di Windows Command Shell (cmd.exe).

Operator && menjalankan alur sebelah kanan, jika alur sebelah kiri berhasil. Sebaliknya, || operator menjalankan alur sebelah kanan jika alur sebelah kiri gagal.

Catatan

Operator ini menggunakan $? variabel dan $LASTEXITCODE untuk menentukan apakah alur gagal. Ini memungkinkan Anda untuk menggunakannya dengan perintah asli dan tidak hanya dengan cmdlet atau fungsi.

Di sini, perintah pertama berhasil dan perintah kedua dijalankan:

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

Di sini, perintah pertama gagal, yang kedua tidak dijalankan:

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

Di sini, perintah pertama berhasil, perintah kedua tidak dijalankan:

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

Di sini, perintah pertama gagal, sehingga perintah kedua dijalankan:

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

Untuk informasi selengkapnya tentang Operator Rantai Alur.

Operator null-coalescing, assignment, dan conditional

PowerShell 7 mencakup operator ??coalescing Null, penugasan ??=bersyariah Null, dan operator akses anggota bersyariah ?. Null dan ?[].

Operator coalescing null ??

Operator null-coalescing ?? mengembalikan nilai operand sebelah kirinya jika tidak null. Jika tidak, itu mengevaluasi operand tangan kanan dan mengembalikan hasilnya. Operator ?? tidak mengevaluasi operand kanannya apabila operand sebelah kiri mengevaluasi ke non-null.

$x = $null
$x ?? 100
100

Dalam contoh berikut, operand sebelah kanan tidak akan dievaluasi:

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

Operator penugasan bersyar null ?? =

Operator penetapan ??= kondisional null menetapkan nilai operand kanannya ke operand sebelah kiri hanya jika operand sebelah kiri mengevaluasi ke null. Operator ??= tidak mengevaluasi operand kanannya apabila operand sebelah kiri mengevaluasi ke non-null.

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

Dalam contoh berikut, operand sebelah kanan tidak dievaluasi:

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

Operator akses anggota bersilangan null?. Dan? [] (Eksperimental)

Catatan

Ini adalah fitur eksperimental bernama PSNullConditionalOperators. Untuk informasi selengkapnya, lihat Menggunakan Fitur Eksperimental.

Operator kondisional null mengizinkan akses anggota, ?., atau akses elemen, ?[], ke operand-nya hanya jika operand tersebut mengevaluasi ke non-null; jika tidak, itu mengembalikan null.

Catatan

Karena PowerShell memungkinkan ? untuk menjadi bagian dari nama variabel, spesifikasi formal dari nama variabel diperlukan untuk menggunakan operator ini. Jadi diperlukan untuk menggunakan {} di sekitar nama variabel seperti ${a} atau ketika ? merupakan bagian dari nama ${a?}variabel .

Dalam contoh berikut, nilai Status properti anggota dikembalikan:

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

Contoh berikut mengembalikan null, tanpa mencoba mengakses status nama anggota:

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

Demikian pula, menggunakan ?[], nilai elemen dikembalikan:

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

Dan ketika operand null, elemen tidak diakses dan null dikembalikan:

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

Untuk informasi selengkapnya About_Operators.

Tampilan baru conciseView dan cmdlet Get-Error

PowerShell 7.0 meningkatkan tampilan pesan kesalahan untuk meningkatkan keterbacaan kesalahan interaktif dan skrip dengan tampilan default baru ConciseView. Tampilan dapat dipilih pengguna melalui variabel $ErrorViewpreferensi .

Dengan ConciseView, jika kesalahan bukan dari kesalahan skrip atau pengurai, maka itu adalah pesan kesalahan baris tunggal:

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

Jika kesalahan terjadi selama eksekusi skrip atau merupakan kesalahan penguraian, PowerShell mengembalikan pesan kesalahan multibaris yang berisi kesalahan, penunjuk, dan pesan kesalahan yang menunjukkan di mana kesalahan berada di baris tersebut. Jika terminal tidak mendukung urutan escape warna ANSI (VT100), maka warna tidak ditampilkan.

Tampilan kesalahan dari skrip

Tampilan default di PowerShell 7 adalah ConciseView. Tampilan default sebelumnya adalah NormalView dan Anda dapat memilih ini dengan mengatur variabel $ErrorViewpreferensi .

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

Catatan

Properti baru ErrorAccentColor ditambahkan ke $Host.PrivateData untuk mendukung perubahan warna aksen pesan kesalahan.

Cmdlet Get-Error baru memberikan tampilan terperinci lengkap tentang kesalahan yang sepenuhnya memenuhi syarat jika diinginkan. Secara default cmdlet menampilkan detail lengkap, termasuk pengecualian dalam, dari kesalahan terakhir yang terjadi.

Tampilkan dari Get-Error

Get-Error Cmdlet mendukung input dari alur menggunakan variabel $Errorbawaan . Get-Error menampilkan semua kesalahan yang disalurkan.

$Error | Get-Error

Get-Error Cmdlet mendukung parameter Terbaru, memungkinkan Anda menentukan berapa banyak kesalahan dari sesi saat ini yang ingin Anda tampilkan.

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

Untuk informasi selengkapnya tentang Get-Error.

Pemberitahuan versi baru

PowerShell 7 menggunakan pemberitahuan pembaruan untuk memperingatkan pengguna tentang adanya pembaruan untuk PowerShell. Sekali per hari, PowerShell meminta layanan online untuk menentukan apakah versi yang lebih baru tersedia.

Catatan

Pemeriksaan pembaruan terjadi selama sesi pertama dalam periode 24 jam tertentu. Untuk alasan performa, pemeriksaan pembaruan dimulai 3 detik setelah sesi dimulai. Pemberitahuan hanya ditampilkan pada awal sesi berikutnya.

Secara default, PowerShell berlangganan salah satu dari dua saluran pemberitahuan yang berbeda tergantung pada versi/cabangnya. Didukung, Versi PowerShell yang Tersedia Secara Umum (GA) hanya menampilkan pemberitahuan untuk rilis GA yang diperbarui. Rilis Pratinjau dan Release Candidate (RC) memberi tahu tentang pembaruan untuk rilis pratinjau, RC, dan GA.

Perilaku pemberitahuan pembaruan dapat diubah menggunakan $Env:POWERSHELL_UPDATECHECK variabel lingkungan. Nilai berikut ini didukung:

  • Defaultnya sama dengan tidak menentukan $Env:POWERSHELL_UPDATECHECK
    • Rilis GA memberi tahu pembaruan untuk rilis GA
    • Rilis Pratinjau/RC memberi tahu pembaruan untuk rilis GA dan pratinjau
  • Menonaktifkan fitur pemberitahuan pembaruan
  • LTS hanya memberi tahu pembaruan untuk rilis GA layanan jangka panjang (LTS)

Catatan

Variabel $Env:POWERSHELL_UPDATECHECK lingkungan tidak ada sampai ditetapkan untuk pertama kalinya.

Untuk mengatur pemberitahuan versi untuk LTS rilis saja:

$Env:POWERSHELL_UPDATECHECK = 'LTS'

Untuk mengatur pemberitahuan versi ke Default perilaku:

$Env:POWERSHELL_UPDATECHECK = 'Default'

Untuk informasi selengkapnya tentang Pemberitahuan Pembaruan.

Dukungan Sumber Daya DSC baru dengan Invoke-DSCResource (Eksperimental)

Catatan

Ini adalah fitur eksperimental bernama PSDesiredStateConfiguration.InvokeDscResource. Untuk informasi selengkapnya, lihat Menggunakan Fitur Eksperimental.

Invoke-DscResource Cmdlet menjalankan metode sumber daya PowerShell Desired State Configuration (DSC) tertentu.

Cmdlet ini memanggil sumber daya DSC secara langsung, tanpa membuat dokumen konfigurasi. Dengan menggunakan cmdlet ini, produk manajemen konfigurasi dapat mengelola Windows atau Linux dengan menggunakan sumber daya DSC. Cmdlet ini juga memungkinkan penelusuran kesalahan sumber daya saat mesin DSC berjalan dengan debugging diaktifkan.

Perintah ini memanggil metode Set sumber daya bernama WindowsProcess dan menyediakan properti Jalur dan Argumen wajib untuk memulai proses Windows yang ditentukan.

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

Untuk informasi selengkapnya tentang Invoke-DSCResource.

Melanggar Perubahan dan Penyempurnaan

Memecahkan Perubahan

  • Membuat dukungan pemberitahuan pembaruan LTS dan saluran default (#11132)
  • Perbarui Test-Connection untuk bekerja lebih seperti yang ada di Windows PowerShell (#10697) (Terima kasih@vexx32!)
  • Pertahankan $? untuk ParenExpression, SubExpression dan ArrayExpression (#11040)
  • Atur direktori kerja ke direktori saat ini di Start-Job (#10920) (Terima kasih @iSazonov!)
  • Jadikan $PSCulture secara konsisten mencerminkan perubahan budaya dalam sesi (#10138) (Terima kasih @iSazonov!)

Updates dan Perbaikan Mesin

  • Penyempurnaan dalam API titik henti untuk skenario jarak jauh (#11312)
  • Memperbaiki definisi kelas PowerShell yang bocor ke Runspace lain (#11273)
  • Memperbaiki regresi dalam pemformatan yang disebabkan oleh primitif FirstOrDefault yang ditambahkan dalam 7.0.0-Preview1 (#11258)
  • Modul Microsoft tambahan untuk dilacak dalam Telemetri PS7 (#10751)
  • Membuat fitur yang disetujui non-eksperimental (#11303)
  • Perbarui ConciseView untuk menggunakan TargetObject jika berlaku (#11075)
  • Memperbaiki NullReferenceException dalam metode publik CompletionCompleters (#11274)
  • Memperbaiki pemeriksaan status utas apartemen pada platform non-Windows (#11301)
  • Memperbarui pengaturan PSModulePath untuk menggabungkan variabel lingkungan proses dan mesin (#11276)
  • Bump .NET Core ke 3.1.0 (#11260)
  • Memperbaiki deteksi $PSHOME di depan $env:PATH (#11141)
  • Izinkan pwsh untuk mewarisi $env:PSModulePath dan mengaktifkan powershell.exe untuk memulai dengan benar (#11057)
  • Pindah ke pratinjau .NET Core 3.1 1 (#10798)
  • Pemfaktoran ulang pemeriksaan tag di penyedia sistem file (#10431) (Terima kasih @iSazonov!)
  • Ganti CR dan baris baru dengan karakter 0x23CE dalam pengelogan skrip (#10616)
  • Memperbaiki kebocoran sumber daya dengan membatalkan pendaftaran penanganan aktivitas dari AppDomain.CurrentDomain.ProcessExit (#10626)
  • Tambahkan dukungan ke ActionPreference.Break untuk masuk ke debugger saat pesan Debug, Kesalahan, Informasi, Kemajuan, Verbose, atau Peringatan dihasilkan (#8205) (Terima kasih @KirkMunro!)
  • Aktifkan add-in panel kontrol awal dalam PowerShell tanpa menentukan ekstensi .CPL. (#9828)
  • Mendukung angka negatif di operator -split (#8960) (Terima kasih @ece-jacob-scott!)

Updates dan Perbaikan Cmdlet Umum

  • Perbaikan untuk masalah pada Raspbian untuk mengatur tanggal perubahan file di Fitur Eksperimental UnixStat (#11313)
  • Tambahkan -AsPlainText ke ConvertFrom-SecureString (#11142)
  • Menambahkan pemeriksaan versi WindowsPS untuk WinCompat (#11148)
  • Memperbaiki pelaporan kesalahan dalam beberapa skenario WinCompat (#11259)
  • Menambahkan resolver biner asli (#11032) (Terima kasih @iSazonov!)
  • Perbarui perhitungan lebar karakter untuk menghormati karakter CJK dengan benar (#11262)
  • Menambahkan Unblock-File untuk macOS (#11137)
  • Memperbaiki regresi di Get-PSCallStack (#11210) (Terima kasih @iSazonov!)
  • Menghapus beban otomatis modul ScheduledJob saat menggunakan cmdlet Pekerjaan (#11194)
  • Tambahkan OutputType ke cmdlet Get-Error dan pertahankan nama jenis asli (#10856)
  • Memperbaiki referensi null di properti SupportsVirtualTerminal (#11105)
  • Tambahkan check-in batas Get-WinEvent (#10648) (Terima kasih @iSazonov!)
  • Perbaiki runtime perintah sehingga StopUpstreamCommandsException tidak diisi di -ErrorVariable (#10840)
  • Atur pengodean output ke [Console]::OutputEncoding untuk perintah asli (#10824)
  • Mendukung blok kode multibaris dalam contoh (#10776) (Terima kasih @Greg-Smulko!)
  • Tambahkan parameter Kultur ke cmdlet Select-String (#10943) (Terima kasih @iSazonov!)
  • Memperbaiki jalur direktori kerja Start-Job dengan garis miring terbalik berikutnya (#11041)
  • ConvertFrom-Json: Buka bungkus koleksi secara default (#10861) (Terima kasih @danstur!)
  • Gunakan Hashtable peka huruf besar/kecil untuk cmdlet Group-Object dengan sakelar -CaseSensitive dan -AsHashtable (#11030) (Terima kasih @vexx32!)
  • Menangani pengecualian jika menghitung file gagal saat membangun kembali jalur untuk memiliki casing yang benar (#11014)
  • Perbaiki ConciseView untuk menampilkan Aktivitas alih-alih myCommand (#11007)
  • Izinkan cmdlet web untuk mengabaikan status kesalahan HTTP (#10466) (Terima kasih @vdamewood!)
  • Perbaiki pipa lebih dari satu CommandInfo ke Get-Command (#10929)
  • Menambahkan cmdlet Get-Counter kembali untuk Windows (#10933)
  • Buat ConvertTo-Json memperlakukan [AutomationNull]::Value dan [NullString]::Value as $null (#10957)
  • Hapus tanda kurung dari alamat ipv6 untuk akses jauh SSH (#10968)
  • Memperbaiki crash jika perintah yang dikirim ke pwsh hanyalah spasi kosong (#10977)
  • Menambahkan Get-Clipboard lintas platform dan Set-Clipboard (#10340)
  • Memperbaiki pengaturan jalur asli objek sistem file agar tidak memiliki garis miring tambahan (#10959)
  • $null Dukungan untuk ConvertTo-Json (#10947)
  • Menambahkan kembali perintah Out-Printer pada Windows (#10906)
  • Perbaiki Start-Job -WorkingDirectory dengan spasi kosong (#10951)
  • Mengembalikan nilai default saat mendapatkan null untuk pengaturan di PSConfiguration.cs (#10963) (Terima kasih @iSazonov!)
  • Menangani pengecualian IO sebagai tidak mengakhiri (#10950)
  • Tambahkan rakitan GraphicalHost untuk mengaktifkan Out-GridView, Show-Command, dan Get-Help -ShowWindow (#10899)
  • Ambil ComputerName melalui alur di Get-HotFix (#10852) (Terima kasih @kvprasoon!)
  • Perbaiki penyelesaian tab untuk parameter sehingga menampilkan parameter umum sebagai tersedia (#10850)
  • Perbaiki GetCorrectCasedPath() untuk terlebih dahulu memeriksa apakah ada entri file sistem yang dikembalikan sebelum memanggil First() (#10930)
  • Atur direktori kerja ke direktori saat ini di Start-Job (#10920) (Terima kasih @iSazonov!)
  • Ubah TabExpansion2 menjadi tidak memerlukan -CursorColumn dan perlakukan sebagai $InputScript.Length (#10849)
  • Menangani kasus di mana Host mungkin tidak mengembalikan Baris atau Kolom layar (#10938)
  • Memperbaiki penggunaan warna aksen untuk host yang tidak mendukungnya (#10937)
  • Tambahkan kembali perintah Update-List (#10922)
  • Memperbarui Id FWLink untuk Clear-RecycleBin (#10925)
  • Selama penyelesaian tab, lewati file jika tidak dapat membaca atribut file (#10910)
  • Menambahkan kembali Clear-RecycleBin untuk Windows (#10909)
  • Tambahkan $env:__SuppressAnsiEscapeSequences untuk mengontrol apakah akan memiliki urutan escape VT dalam output (#10814)
  • Tambahkan parameter -NoEmphasize untuk mewarnai output Select-String (#8963) (Terima kasih @derek-xia!)
  • Menambahkan cmdlet Get-HotFix belakang (#10740)
  • Membuat Add-Type dapat digunakan dalam aplikasi yang menghosting PowerShell (#10587)
  • Gunakan urutan evaluasi yang lebih efektif dalam LanguagePrimitives.IsNullLike() (#10781) (Terima kasih @vexx32!)
  • Meningkatkan penanganan input pipa koleksi campuran dan aliran input yang disalurkan di Format-Hex (#8674) (Terima kasih @vexx32!)
  • Gunakan konversi jenis dalam hashtable SSHConnection saat nilai tidak cocok dengan jenis yang diharapkan (#10720) (Terima kasih @SeeminglyScience!)
  • Perbaiki perilaku Get-Content -ReadCount 0 ketika -TotalCount diatur (#10749) (Terima kasih @eugenesmlv!)
  • Pesan kesalahan akses kata sandi ditolak di Get-WinEvent (#10639) (Terima kasih @iSazonov!)
  • Aktifkan penyelesaian tab untuk penetapan variabel yang enum atau jenis dibatasi (#10646)
  • Hapus properti jarak jauh SourceLength yang tidak digunakan yang menyebabkan masalah pemformatan (#10765)
  • Tambahkan parameter -Delimiter ke ConvertFrom-StringData (#10665) (Terima kasih @steviecoaster!)
  • Tambahkan parameter posisi untuk ScriptBlock saat menggunakan Invoke-Command dengan SSH (#10721) (Terima kasih @machgo!)
  • Tampilkan informasi konteks baris jika beberapa baris tetapi tidak ada nama skrip untuk ConciseView (#10746)
  • Tambahkan dukungan untuk jalur \wsl$\ ke penyedia sistem file (#10674)
  • Tambahkan teks token yang hilang untuk TokenKind.QuestionMark di parser (#10706)
  • Atur direktori kerja saat ini dari setiap ForEach-Object -Paralel menjalankan skrip ke lokasi yang sama dengan skrip panggilan. (#10672)
  • Ganti api-ms-win-core-file-l1-2-2.dll dengan Kernell32.dll untuk FindFirstStreamW dan FindNextStreamW API (#10680) (Terima kasih @iSazonov!)
  • Tweak membantu memformat skrip agar lebih toleran terhadap StrictMode (#10563)
  • Tambahkan parameter -SecurityDescriptorSDDL ke New-Service (#10483) (Terima kasih @kvprasoon!)
  • Hapus output informasi, konsolidasikan penggunaan ping di Test-Connection (#10478) (Terima kasih @vexx32!)
  • Membaca titik reparse khusus tanpa mengaksesnya (#10662) (Terima kasih @iSazonov!)
  • Output Clear-Host langsung ke terminal (#10681) (Terima kasih @iSazonov!)
  • Tambahkan kembali baris baru untuk pengelompokan dengan Format-Table dan -Properti (#10653)
  • Hapus [ValidateNotNullOrEmpty] dari -InputObject pada Get-Random untuk mengizinkan string kosong (#10644)
  • Buat saran algoritma jarak string sistem tidak peka huruf besar/kecil (#10549) (Terima kasih @iSazonov!)
  • Memperbaiki pengecualian referensi null di ForEach-Object -Pemrosesan input paralel (#10577)
  • Menambahkan definisi kebijakan grup PowerShell (#10468)
  • Perbarui host konsol untuk mendukung urutan kontrol XTPUSHSGR/XTPOPSGR VT yang digunakan dalam skenario komposabilitas. (#10208)
  • Tambahkan parameter WorkingDirectory ke Start-Job (#10324) (Terima kasih @davinci26!)
  • Hapus penanganan aktivitas yang menyebabkan perubahan titik henti direplikasi secara keliru ke debugger runspace host (#10503) (Terima kasih @KirkMunro!)
  • Ganti api-ms-win-core-job-12-1-0.dll dengan Kernell32.dll di Microsoft.PowerShell.Commands.NativeMethods P/Invoke API(#10417) (Terima kasih @iSazonov!)
  • Memperbaiki output yang salah untuk New-Service dalam penetapan variabel dan -OutVariable (#10444) (Terima kasih @kvprasoon!)
  • Memperbaiki masalah alat global sekeliling kode keluar, parameter baris perintah, dan jalur dengan spasi (#10461)
  • Perbaiki rekursi menjadi OneDrive - ubah FindFirstFileEx() untuk menggunakan tipe SafeFindHandle (#10405)
  • Lewati pemuatan otomatis PSReadLine di Windows jika pembaca layar NVDA aktif (#10385)
  • Tingkatkan versi modul bawaan dengan PowerShell menjadi 7.0.0.0 (#10356)
  • Menambahkan kesalahan dalam Add-Type jika jenis dengan nama yang sama sudah ada (#9609) (Terima kasih @iSazonov!)

Performa

  • Hindari menggunakan penutupan di Parser.SaveError (#11006)
  • Meningkatkan penembolokan saat membuat instans Regex baru (#10657) (Terima kasih @iSazonov!)
  • Meningkatkan pemrosesan data jenis bawaan PowerShell dari type.ps1xml, typeV3.ps1xml dan GetEvent.type.ps1xml (#10898)
  • Perbarui PSConfiguration.ReadValueFromFile untuk membuatnya lebih cepat dan lebih efisien memori (#10839)
  • Tambahkan peningkatan performa kecil untuk inisialisasi runspace (#10569) (Terima kasih @iSazonov!)
  • Buat ForEach-Object lebih cepat untuk skenario yang umum digunakan (#10454) dan perbaiki masalah performa ForEach-Object -Paralel dengan banyak runspace (#10455)

Pembersihan Kode

  • Mengubah teks komentar dan elemen untuk memenuhi standar Microsoft (#11304)
  • Masalah gaya pembersihan di Compiler.cs (#10368) (Terima kasih @iSazonov!)
  • Hapus pengonversi tipe yang tidak digunakan untuk CommaDelimitedStringCollection (#11000) (Terima kasih @iSazonov!)
  • Gaya pembersihan di InitialSessionState.cs (#10865) (Terima kasih @iSazonov!)
  • Pembersihan kode untuk kelas PSSession (#11001)
  • Hapus fitur 'jalankan Update-Help yang tidak berfungsi dari Get-Help saat Get-Help berjalan untuk pertama kalinya' (#10974)
  • Memperbaiki masalah gaya (#10998) (Terima kasih @iSazonov!)
  • Pembersihan: gunakan alias jenis bawaan (#10882) (Terima kasih @iSazonov!)
  • Hapus kunci pengaturan yang tidak digunakan ConsolePrompting dan hindari pembuatan string yang tidak perlu saat mengkueri pengaturan ExecutionPolicy (#10985)
  • Nonaktifkan pemeriksaan pemberitahuan pembaruan untuk build harian (#10903) (Terima kasih @bergmeister!)
  • Memulihkan API debugging yang hilang di #10338 (#10808)
  • Hapus referensi WorkflowJobSourceAdapter yang tidak lagi digunakan (#10326) (Terima kasih @KirkMunro!)
  • Bersihkan antarmuka COM dalam kode jump list dengan memperbaiki atribut PreserveSig (#9899) (Terima kasih @weltkante!)
  • Tambahkan komentar yang menjelaskan mengapa -ia bukan alias untuk parameter umum -InformationAction (#10703) (Terima kasih @KirkMunro!)
  • Ganti nama InvokeCommandCmdlet.cs menjadi InvokeExpressionCommand.cs (#10659) (Terima kasih @kilasuit!)
  • Menambahkan pembersihan kode kecil yang terkait dengan pemberitahuan pembaruan (#10698)
  • Menghapus logika alur kerja yang tidak digunakan lagi dari skrip penyetelan jarak jauh (#10320) (Terima kasih @KirkMunro!)
  • Perbarui format bantuan untuk menggunakan huruf yang tepat (#10678) (Terima kasih @tnieto88!)
  • Bersihkan masalah gaya CodeFactor yang masuk dalam penerapan selama sebulan terakhir (#10591) (Terima kasih @iSazonov!)
  • Memperbaiki kesalahan ketik dalam deskripsi fitur eksperimental PSTernaryOperator (#10586) (Terima kasih @bergmeister!)
  • Mengonversi nilai enumerasi ActionPreference.Suspend menjadi status yang tidak didukung, dicadangkan, dan hapus pembatasan pada penggunaan ActionPreference.Ignore dalam variabel preferensi (#10317) (Terima kasih @KirkMunro!)
  • Ganti ArrayList dengan Daftar<T> untuk mendapatkan kode yang lebih mudah dibaca dan dapat diandalkan tanpa mengubah fungsionalitas (#10333) (Terima kasih @iSazonov!)
  • Buat perbaikan gaya kode untuk TestConnectionCommand (#10439) (Terima kasih @vexx32!)
  • Bersihkan AutomationEngine dan hapus panggilan metode SetSessionStateDrive tambahan (#10416) (Terima kasih @iSazonov!)
  • Ganti nama ParameterSetName default kembali ke Pemisah untuk ConvertTo-Csv dan ConvertFrom-Csv (#10425)

Alat

  • Tambahkan pengaturan default untuk properti SDKToUse sehingga dibangun di VS (#11085)
  • Install-Powershell.ps1: Tambahkan parameter untuk menggunakan penginstalan MSI (#10921) (Terima kasih @MJECloud!)
  • Tambahkan contoh dasar untuk install-powershell.ps1 (#10914) (Terima kasih @kilasuit!)
  • Buat Install-PowerShellRemoting.ps1 menangani string kosong di parameter PowerShellHome (#10526) (Terima kasih @Orca88!)
  • Beralih dari /etc/lsb-release ke /etc/os-release di install-powershell.sh (#10773) (Terima kasih @Himura2la!)
  • Periksa pwsh.exe dan pwsh dalam versi harian di Windows (#10738) (Terima kasih @centreboard!)
  • Hapus ketukan yang tidak diperlukan di installpsh-osx.sh (#10752)
  • Perbarui install-powershell.ps1 untuk memeriksa build harian yang sudah diinstal (#10489)

Pengujian

  • Membuat pengujian DSC yang tidak dapat diandalkan tertunda (#11131)
  • Memperbaiki uji stringdata untuk memvalidasi kunci hashtable dengan benar (#10810)
  • Bongkar modul pengujian (#11061) (Terima kasih @iSazonov!)
  • Meningkatkan waktu antara percobaan ulang URL pengujian (#11015)
  • Perbarui pengujian untuk menjelaskan tindakan pengujian secara akurat. (#10928) (Terima kasih @romero126!)
  • Sementara lewati pengujian berlemak TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
  • Membuat pengujian kebocoran penanganan aktivitas stabil (#10790)
  • Kapitalisasi sinkronisasi di CI YAML (#10767) (Terima kasih @RDIL!)
  • Tambahkan pengujian untuk perbaikan kebocoran penanganan aktivitas (#10768)
  • Tambahkan tes Get-ChildItem (#10507) (Terima kasih @iSazonov!)
  • Ganti bahasa ambigu untuk pengujian dari beralih ke parameter untuk akurasi (#10666) (Terima kasih @romero126!)
  • Tambahkan pemeriksaan eksperimental ke ForEach-Object -Tes paralel (#10354) (Terima kasih @KirkMunro!)
  • Uji pembaruan untuk validasi Alpine (#10428)

Peningkatan Build dan Paket

  • Memperbaiki penandatanganan paket Nuget untuk build Paket Terkoordinasi (#11316)
  • Memperbarui dependensi dari Galeri PowerShell dan NuGet (#11323)
  • Bump Microsoft.ApplicationInsights dari 2.11.0 ke 2.12.0 (#11305)
  • Bump Microsoft.CodeAnalysis.CSharp dari 3.3.1 ke 3.4.0 (#11265)
  • paket Updates untuk Debian 10 dan 11 (#11236)
  • Hanya aktifkan fitur eksperimental sebelum RC (#11162)
  • Memperbarui versi minimum macOS (#11163)
  • Bump NJsonSchema dari 10.0.27 ke 10.0.28 (#11170)
  • Memperbarui tautan di README.md dan metadata.json untuk Pratinjau.5 (#10854)
  • Pilih file untuk pengujian kepatuhan yang dimiliki oleh PowerShell (#10837)
  • Izinkan paket win7x86 msix untuk membangun. (Internal 10515)
  • Izinkan versi semantik diteruskan ke fungsi NormalizeVersion (#11087)
  • Bump .NET core framework ke 3.1-preview.3 (#11079)
  • Bump PSReadLine dari 2.0.0-beta5 ke 2.0.0-beta6 di /src/Modules (#11078)
  • Bump Newtonsoft.Json dari 12.0.2 ke 12.0.3 (#11037) (#11038)
  • Menambahkan paket Debian 10, 11, dan CentOS 8 (#11028)
  • Unggah Build-Info file Json dengan bidang ReleaseDate (#10986)
  • Bump .NET core framework ke 3.1-preview.2 (#10993)
  • Aktifkan build paket X86 MSIX (#10934)
  • Memperbarui URL skrip penginstalan dotnet SDK di build.psm1 (#10927)
  • Bump Markdig.Signed dari 0.17.1 ke 0.18.0 (#10887)
  • Bump ThreadJob dari 2.0.1 ke 2.0.2 (#10886)
  • Perbarui modul Manifes dan Pengemasan AppX agar sesuai dengan persyaratan MS Store (#10878)
  • Memperbarui referensi paket untuk PowerShell SDK ke pratinjau.5 (Internal 10295)
  • Memperbarui ThirdPartyNotices.txt (#10834)
  • Bump Microsoft.PowerShell.Native ke 7.0.0-preview.3 (#10826)
  • Bump Microsoft.ApplicationInsights dari 2.10.0 ke 2.11.0 (#10608)
  • Bump NJsonSchema dari 10.0.24 ke 10.0.27 (#10756)
  • Menambahkan dukungan MacPorts ke sistem build (#10736) (Terima kasih @Lucius-Q-User!)
  • Bump PackageManagement dari 1.4.4 ke 1.4.5 (#10728)
  • Bump NJsonSchema dari 10.0.23 ke 10.0.24 (#10635)
  • Menambahkan variabel lingkungan untuk membedakan telemetri klien/server di MSI (#10612)
  • Bump PSDesiredStateConfiguration dari 2.0.3 ke 2.0.4 (#10603)
  • Bump Microsoft.CodeAnalysis.CSharp dari 3.2.1 ke 3.3.1 (#10607)
  • Pembaruan ke .Net Core 3.0 RTM (#10604) (Terima kasih @bergmeister!)
  • Perbarui kemasan MSIX sehingga versi ke persyaratan Windows Store (#10588)
  • Versi Bump PowerShellGet dari 2.2 hingga 2.2.1 (#10382)
  • Versi Bump PackageManagement dari 1.4.3 hingga 1.4.4 (#10383)
  • Memperbarui README.md dan metadata.json untuk 7.0.0-preview.4 (Internal 10011)
  • Tingkatkan versi .Net Core 3.0 dari Pratinjau 9 ke RC1 (#10552) (Terima kasih @bergmeister!)
  • Memperbaiki pembuatan daftar ExperimentalFeature (Internal 9996)
  • Versi Bump PSReadLine dari 2.0.0-beta4 ke 2.0.0-beta5 (#10536)
  • Memperbaiki skrip build rilis untuk mengatur tag rilis
  • Memperbarui versi Microsoft.PowerShell.Native ke 7.0.0-preview.2 (#10519)
  • Tingkatkan ke Netcoreapp3.0 preview9 (#10484) (Terima kasih @bergmeister!)
  • Pastikan build terkoordinasi harian, tahu bahwa build tersebut adalah build harian (#10464)
  • Perbarui build paket gabungan untuk merilis build harian (#10449)
  • Hapus referensi appveyor (#10445) (Terima kasih @RDIL!)
  • Versi Bump NJsonSchema dari 10.0.22 hingga 10.0.23 (#10421)
  • Hapus penghapusan folder build linux-x64 karena beberapa dependensi untuk Alpine membutuhkannya (#10407)

Dokumentasi dan Konten Bantuan

  • Refaktor mengubah log menjadi satu log per rilis (#11165)
  • Memperbaiki FWLinks untuk dokumen bantuan online PowerShell 7 (#11071)
  • Update CONTRIBUTING.md (#11096) (Terima kasih @mklement0!)
  • Memperbaiki tautan dokumen penginstalan di README.md (#11083)
  • Menambahkan contoh ke skrip install-powershell.ps1 (#11024) (Terima kasih @kilasuit!)
  • Perbaikan untuk penekanan dan Import-DscResource Select-String di CHANGELOG.md (#10890)
  • Hapus tautan kedaluarsa dari powershell-beginners-guide.md (#10926)
  • Menggabungkan log perubahan yang stabil dan melayani (#10527)
  • Memperbarui versi .NET yang digunakan dalam dokumen build (#10775) (Terima kasih @Greg-Smulko!)
  • Ganti tautan dari MSDN ke Microsoft Learn di powershell-beginners-guide.md (#10778) (Terima kasih @iSazonov!)
  • Memperbaiki tautan gambaran umum DSC yang rusak (#10702)
  • Perbarui Support_Question.md untuk menautkan ke Stack Overflow sebagai sumber daya komunitas lain (#10638) (Terima kasih @mklement0!)
  • Menambahkan arsitektur prosesor ke templat permintaan distribusi (#10661)
  • Menambahkan buku PowerShell MoL baru untuk mempelajari dokumen PowerShell (#10602)
  • Memperbarui README.md dan metadata untuk rilis v6.1.6 dan v6.2.3 (#10523)
  • Memperbaiki kesalahan ketik di README.md (#10465) (Terima kasih @vedhasp!)
  • Tambahkan referensi ke modul PSKoans ke dokumentasi Sumber Daya Pembelajaran (#10369) (Terima kasih @vexx32!)
  • Memperbarui README.md dan metadata.json untuk 7.0.0-preview.3 (#10393)