Apa yang Baru di PowerShell 7.4
PowerShell 7.4 menyertakan fitur, pembaruan, dan perubahan yang melanggar berikut ini. PowerShell 7.4 dibangun di .NET 8.0.0.
Untuk daftar lengkap perubahan, lihat CHANGELOG di repositori GitHub.
Perubahan mencolok
- Gambar docker server nano tidak tersedia untuk rilis ini
- Menambahkan parameter ProgressAction ke Parameter Umum
- Perbarui beberapa API PowerShell untuk melempar ArgumentException alih-alih ArgumentNullException ketika argumen adalah string kosong (#19215) (Terima kasih @xtqqczze!)
- Menghapus kode yang terkait dengan
#requires -pssnapin
(#19320) Test-Json
sekarang menggunakan JsonSchema.NET alih-alih Newtonsoft.Json.Schema.- Dengan perubahan ini,
Test-Json
tidak lagi mendukung skema Draf 4 yang lebih lama. (#18141) (Terima kasih @gregsdennis!). Untuk informasi selengkapnya tentang skema JSON, lihat dokumentasi Skema JSON. Ini juga istirahatTest-Json
untuk file JSON dan JSONC dengan komentar. ConvertFrom-Json
dukungan masih menggunakan Newtonsoft.Json.Schema sehingga dapat mengonversi file JSON dengan komentar.
- Dengan perubahan ini,
- Output dari
Test-Connection
sekarang mencakup informasi yang lebih rinci tentang pengujian koneksi TCP - .NET memperkenalkan perubahan yang memengaruhi
Test-Connection
. Cmdlet sekarang mengembalikan kesalahan tentang kebutuhan untuk digunakansudo
pada platform Linux saat menggunakan ukuran buffer kustom (#20369) - Fitur eksperimental PSNativeCommandPreserveBytePipe sekarang menjadi mainstream. PowerShell sekarang mempertahankan data byte-stream saat mengalihkan aliran stdout perintah asli ke file atau saat mempipa data byte-stream ke aliran stdin dari perintah asli.
- Ubah bagaimana jalur relatif ditangani
Resolve-Path
saat menggunakan parameter RelativeBasePath (#19755) (Terima kasih @MartinGC94!) - Menghapus kode PSv2 yang tidak digunakan - menghapus fungsi TabExpansion (#18337)
Pembaruan penginstal
Paket Windows MSI sekarang menyediakan opsi untuk menonaktifkan telemetri PowerShell selama penginstalan. Untuk informasi selengkapnya, lihat Menginstal paket msi dari baris perintah.
Versi PSResourceGet dan PSReadLine yang diperbarui
PowerShell 7.4 menyertakan Microsoft.PowerShell.PSResourceGet v1.0.1. Modul ini dipasang berdampingan dengan PowerShellGet v2.2.5 dan PackageManagement v1.4.8.1. Untuk informasi selengkapnya, lihat dokumentasi untuk Microsoft.PowerShell.PSResourceGet.
PowerShell 7.4 sekarang menyertakan PSReadLine v2.3.4. Untuk informasi selengkapnya, lihat dokumentasi untuk PSReadLine.
Peningkatan penyelesaian tab
Banyak terima kasih kepada @MartinGC94 dan lainnya untuk semua pekerjaan mereka untuk meningkatkan penyelesaian tab.
- Memperbaiki masalah saat menyelesaikan perintah pertama dalam skrip dengan ekspresi array kosong (#18355)
- Memperbaiki penyelesaian argumen posisi (#17796)
- Prioritaskan set parameter default saat menyelesaikan argumen posisi (#18755)
- Meningkatkan pengikatan pseudo untuk parameter dinamis (#18030)
- Meningkatkan inferensi jenis kunci hashtable (#17907)
- Memperbaiki kesalahan inferensi jenis untuk pernyataan pengembalian kosong (#18351)
- Meningkatkan inferensi jenis untuk Get-Random (#18972)
- Memperbaiki inferensi jenis untuk semua variabel cakupan (#18758)
- Meningkatkan enumerasi jenis yang disimpulkan dalam alur (#17799)
- Menambahkan penyelesaian untuk nilai dalam perbandingan saat membandingkan Enums (#17654)
- Menambahkan penyelesaian penetapan properti untuk enum (#19178)
- Memperbaiki penyelesaian untuk properti variabel PSCustomObject (#18682)
- Memperbaiki penyelesaian anggota dalam argumen atribut (#17902)
- Mengecualikan alias parameter redundan dari hasil penyelesaian (#19382)
- Memperbaiki penyelesaian anggota kelas untuk kelas dengan jenis dasar (#19179)
- Menambahkan penyelesaian untuk Menggunakan kata kunci (#16514)
- Memperbaiki kebocoran variabel TabExpansion2 saat menyelesaikan variabel (#18763)
- Aktifkan penyelesaian variabel di seluruh cakupan ScriptBlock (#19819)
- Memperbaiki penyelesaian variabel pernyataan foreach (#19814)
- Memperbaiki prioritas inferensi jenis variabel (#18691)
- Memperbaiki penyelesaian anggota untuk kelas PowerShell Enum (#19740)
- Memperbaiki penguraian untuk literal array dalam ekspresi indeks dalam panggilan metode (#19224)
- Meningkatkan penyelesaian jalur (#19489)
- Memperbaiki kesalahan pengindeksan di luar batas di CompleteInput untuk input skrip kosong (#19501)
- Meningkatkan performa penyelesaian variabel (#19595)
- Meningkatkan penyelesaian kunci Hashtable untuk jenis penetapan variabel yang dibatasi, Hashtable berlapis, dan lainnya (#17660)
- Menyimpulkan output aplikasi eksternal sebagai string (#19193)
- Perbarui penyelesaian parameter untuk enum untuk mengecualikan nilai yang tidak diizinkan oleh
ValidateRange
atribut (#17750) (Terima kasih @fflaten!). - Memperbaiki penyelesaian parameter dinamis (#19510)
- Menambahkan penyelesaian untuk variabel yang ditetapkan oleh pernyataan Data (#19831)
- Perbaiki perluasan tilde (
~
) pada sistem Windows untuk$home
mencegah kasus penggunaan yang melanggar dengan perintah asli (#21529)
Peningkatan cmdlet web
Banyak terima kasih kepada @CarloToso dan lainnya untuk semua pekerjaan dalam meningkatkan cmdlet web.
- Perbaiki dekompresi dalam cmdlet web untuk menyertakan Brotli (#17955) (Terima kasih @iSazonov!)
- Webcmdlet menambahkan 308 untuk mengalihkan kode dan pembersihan kecil (#18536)
- Selesaikan penyajian bilah kemajuan di Invoke-WebRequest saat pengunduhan selesai atau dibatalkan (#18130)
- Cmdlet web mendapatkan interval Coba Lagi-Setelah dari header respons jika kode status adalah 429 (#18717)
- Cmdlet web mengatur pengodean charset default ke UTF8 (#18219)
- Mempertahankan WebSession.MaximumRedirection dari perubahan (#19190)
- Deklarasi XML penguraian WebCmdlets untuk mendapatkan nilai pengodean, jika ada. (#18748)
- Perbaiki menggunakan xml -Body di webcmdlets tanpa pengodean (#19281)
- Sesuaikan perilaku metode PUT ke POST one untuk jenis konten default di WebCmdlets (#19152)
- Mempertimbangkan ContentType dari Header di WebCmdlets (#19227)
- Izinkan untuk mempertahankan metode HTTP asli dengan menambahkan -PreserveHttpMethodOnRedirect ke cmdlet Web (#18894)
- Webcmdlets menampilkan kesalahan pada https ke pengalihan http (#18595)
- Menambahkan sakelar AllowInsecureRedirect ke cmdlet Web (#18546)
- Meningkatkan pesan verbose dalam cmdlet web ketika panjang konten tidak diketahui (#19252)
- Bangun URI relatif untuk tautan dari respons di
Invoke-WebRequest
(#19092) - Memperbaiki pengalihan untuk
-CustomMethod POST
di WebCmdlets (#19111) - Buang respons sebelumnya di Webcmdlets (#19117)
- Meningkatkan
Invoke-WebRequest
format kesalahan xml dan json (#18837) - Tambahkan parameter ValidateNotNullOrEmpty ke Parameter OutFile dan InFile webCmdlets (#19044)
- Daftar header pembaruan HttpKnownHeaderNames (#18947)
Invoke-RestMethod -FollowRelLink
memperbaiki tautan yang berisi koma (#18829)- Memperbaiki bug dengan mengelola pengalihan dan KeepAuthorization di cmdlet Web (#18902)
- Menambahkan StatusCode ke HttpResponseException (#18842)
- Mendukung koneksi persisten HTTP di Web Cmdlets (#19249) (Terima kasih @stevenebutler!)
- Pembersihan
Invoke-RestMethod
kecil (#19490) - Tingkatkan pesan verbose WebCmdlets untuk menampilkan versi HTTP yang benar (#19616)
- Menambahkan FileNameStar ke MultipartFileContent di WebCmdlets (#19467)
- Perbaiki status HTTP dari 409 hingga 429 untuk WebCmdlets untuk mendapatkan interval coba lagi dari header Retry-After. (#19622) (Terima kasih @mkht!)
- Ubah
-TimeoutSec
ke-ConnectionTimeoutSeconds
dan tambahkan-OperationTimeoutSeconds
ke cmdlet web (#19558) (Terima kasih @stevenebutler!) cmdlet Lainnya - Mendukung Ctrl+c saat koneksi macet saat membaca data di WebCmdlets (#19330) (Terima kasih @stevenebutler!)
- Mendukung soket domain Unix di WebCmdlets (#19343)
Peningkatan cmdlet lainnya
Test-Connection
sekarang mengembalikan kesalahan tentang kebutuhan untuk digunakansudo
pada platform Linux saat menggunakan ukuran buffer kustom (#20369)- Menambahkan jenis output ke perintah Format (#18746) (Terima kasih @MartinGC94!)
- Tambahkan atribut jenis output untuk
Get-WinEvent
(#17948) (Terima kasih @MartinGC94!) - Tambahkan parameter Path dan LiteralPath ke
Test-Json
cmdlet (#19042) (Terima kasih @ArmaanMcleod!) - Tambahkan parameter NoHeader ke
ConvertTo-Csv
cmdlet danExport-Csv
(#19108) (Terima kasih @ArmaanMcleod!) - Tambahkan parameter Konfirmasi dan WhatIf ke
Stop-Transcript
(#18731) (Terima kasih @JohnLBevan!) - Tambahkan parameter FuzzyMinimumDistance ke
Get-Command
(#18261) - Membuat parameter Pengodean dapat mengambil
ANSI
pengodean di PowerShell (#19298) (Terima kasih @CarloToso!) - Tambahkan kemajuan ke
Copy-Item
(#18735) Update-Help
sekarang melaporkan kesalahan saat menggunakan budaya implisit pada sistem non-AS. (#17780) (Terima kasih @dkaszews!)- Tidak memerlukan aktivitas saat membuat rekaman kemajuan yang telah selesai (#18474) (Terima kasih @MartinGC94!)
- Melarang nilai negatif untuk
Get-Content
parameter-Head
cmdlet dan-Tail
(#19715) (Terima kasih @CarloToso!) - Buat
Update-Help
kesalahan yang tepat ketika budaya saat ini tidak terkait dengan bahasa (#19765) (Terima kasih @josea!) - Izinkan penggambungan
-Skip
parameter dan-SkipLast
dalamSelect-Object
cmdlet. (#18849) (Terima kasih @ArmaanMcleod!) - Menambahkan
Get-SecureRandom
cmdlet (#19587) Set-Clipboard -AsOSC52
untuk penggunaan jarak jauh (#18222) (Terima kasih @dkaszews!)- Mempercepat
Resolve-Path
resolusi jalur relatif (#19171) (Terima kasih @MartinGC94!) - Menambahkan parameter
-CaseInsensitive
switch keSelect-Object
cmdlet danGet-Unique
(#19683) (Terima kasih @ArmaanMcleod!) Restart-Computer
danStop-Computer
harus gagal dengan kesalahan ketika tidak berjalan melalui sudo di Unix (#19824)
Peningkatan mesin
Pembaruan untuk $PSStyle
- Menambahkan properti Dim dan DimOff (#18653)
- Menambahkan metode statis ke kelas PSStyle yang memetakan nilai ConsoleColor latar depan dan latar belakang ke urutan escape ANSI (#17938)
- Header tabel untuk bidang terhitung diformat dalam miring secara default
- Menambahkan dukungan penghormatan
$PSStyle.OutputRendering
pada host jarak jauh (#19601) - Data telemetri yang diperbarui untuk menyertakan penggunaan
CrescendoBuilt
modul (#20371)
Pembaruan Mesin Lainnya
- Membuat kelas PowerShell tidak berafiliasi dengan Runspace saat mendeklarasikan
NoRunspaceAffinity
atribut (#18138) ValidateNotNullOrWhiteSpace
Tambahkan atribut (#17191) (Terima kasih@wmentha!)- Tambahkan
sqlcmd
ke daftar untuk passing argumen warisan (#18559) - Tambahkan fungsi
cd~
(#18308) (Terima kasih @GigaScratch!) - Memperbaiki penguraian jenis array dalam jenis generik (#19205) (Terima kasih @MartinGC94!)
- Memperbaiki wildcard globbing di akar jalur perangkat (#19442) (Terima kasih @MartinGC94!)
- Menambahkan API publik untuk mendapatkan lokasi elemen PSModulePath (#19422)
- Memperbaiki string yang salah untuk mengetik konversi (#19560) (Terima kasih @MartinGC94!)
- Perbaiki eksekusi lambat ketika banyak titik henti yang digunakan (#14953) (Terima kasih @nohwnd!)
- Menghapus kode yang terkait dengan
#requires -pssnapin
(#19320)
Fitur Eksperimental
PowerShell 7.4 memperkenalkan fitur eksperimental berikut:
- PSFeedbackProvider - Mengganti kerangka kerja saran yang dikodekan secara permanen dengan penyedia umpan balik yang dapat diperluas.
- Fitur ini juga menambahkan properti FeedbackName, FeedbackText, dan FeedbackAction ke
$PSStyle.Formatting
yang memungkinkan Anda mengubah pemformatan pesan umpan balik.
- Fitur ini juga menambahkan properti FeedbackName, FeedbackText, dan FeedbackAction ke
- PSModuleAutoLoadSkipOfflineFiles - Penemuan modul sekarang melewati file yang ditandai oleh penyedia cloud sebagai tidak sepenuhnya berada di disk.
- PSCommandWithArgs - Menambahkan dukungan untuk meneruskan argumen ke perintah sebagai string tunggal
Fitur eksperimental berikut menjadi mainstream:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4 mengubah fitur eksperimental berikut:
- PSCommandNotFoundSuggestion - Fitur ini sekarang menggunakan penyedia umpan balik yang dapat diperluas daripada saran yang dikodekan secara permanen (#18726)
Untuk informasi selengkapnya tentang Fitur Eksperimental, lihat Menggunakan Fitur Eksperimental.