Apa yang Baru di PowerShell 7.4
PowerShell 7.4.7 menyertakan fitur, pembaruan, dan perubahan signifikan berikut ini. PowerShell 7.4.7 dibangun di .NET 8.0.12.
Untuk daftar lengkap perubahan, lihat
Perubahan signifikan
- 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 saat argumen adalah string kosong ( #19215 ) (Terima kasih - 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 JSON Schema. Ini juga mengganggu fungsiTest-Json
untuk file JSON dan JSONC yang berisi komentar. -
ConvertFrom-Json
fitur masih menggunakan Newtonsoft.Json.Schema sehingga dapat mengonversi file JSON dengan komentar.
- Dengan perubahan ini,
- Output dari
Test-Connection
sekarang menyertakan informasi lebih rinci tentang pengujian koneksi TCP - .NET memperkenalkan perubahan yang memengaruhi
Test-Connection
. Cmdlet sekarang mengembalikan kesalahan tentang kebutuhan untuk menggunakansudo
pada platform Linux saat menggunakan ukuran buffer kustom (#20369) - Fitur eksperimental PSNativeCommandPreserveBytePipe sekarang menjadi mainstream. PowerShell sekarang mempertahankan data byte-stream saat mengalihkan stdout aliran perintah asli ke file atau saat memipakan data byte-stream ke aliran stdin dari perintah asli.
- Ubah bagaimana jalur relatif di
ditangani saat menggunakan parameter RelativeBasePath ( #19755 ) (Terima kasih - 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 pelengkapan tab
Terima kasih banyak kepada @MartinGC94 dan lainnya atas semua upaya mereka dalam meningkatkan fitur penyelesaian tab.
- Memperbaiki masalah saat menyelesaikan perintah pertama dalam skrip dengan ekspresi array kosong (#18355)
- Memperbaiki penyelesaian argumen posisi (#17796)
- Prioritaskan kumpulan 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)
- Tambahkan pelengkapan untuk nilai dalam perbandingan saat membandingkan Enum (#17654)
- Menambahkan penyelesaian penetapan properti untuk enum (#19178)
- Memperbaiki penyelesaian untuk properti variabel PSCustomObject (#18682)
- Memperbaiki pelengkapan anggota dalam argumen atribut (#17902)
- Mengecualikan alias parameter redundan dari hasil penyelesaian (#19382)
- Memperbaiki penyelesaian anggota kelas untuk kelas dengan jenis dasar (#19179)
- Tambahkan 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)
- Perbaiki penguraian untuk literal array dalam ekspresi indeks dalam panggilan metode (#19224)
- Meningkatkan penyelesaian jalur (#19489)
- Memperbaiki kesalahan pengindeksan 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 banyak lagi (#17660)
- Menyimpulkan output aplikasi eksternal sebagai string (#19193)
- Perbarui penyelesaian parameter untuk enum untuk mengecualikan nilai yang tidak diizinkan oleh atribut
ValidateRange
(#17750) (Terima kasih @fflaten!). - Memperbaiki penyelesaian parameter dinamis (#19510)
- Tambahkan pelengkapan untuk variabel yang ditetapkan oleh pernyataan Data (#19831)
- Perbaiki perluasan tilde dari
~
ke$home
pada sistem Windows untuk mencegah gangguan pada kasus penggunaan dengan perintah bawaan (#21529)
Peningkatan cmdlet untuk 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)
- Pertahankan WebSession.MaximumRedirection dari perubahan (#19190)
- WebCmdlets menguraikan deklarasi XML untuk mendapatkan nilai encoding, jika ada. (#18748)
- Perbaiki penggunaan XML -Body pada 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 pengalihan https ke http (#18595)
- Tambahkan 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 format kesalahan XML dan JSON (
Invoke-WebRequest
#18837) - Tambahkan ValidateNotNullOrEmpty ke OutFile dan InFile dari parameter WebCmdlets (#19044)
- Daftar header yang diperbarui HttpKnownHeaderNames (#18947)
-
Invoke-RestMethod -FollowRelLink
memperbaiki tautan yang berisi koma (#18829) - Perbaiki bug dengan mengelola pengalihan dan KeepAuthorization di cmdlet Web (#18902)
- Tambahkan StatusCode ke HttpResponseException (#18842)
- Mendukung koneksi persisten HTTP di Web Cmdlets (#19249) (Terima kasih @stevenebutler!)
- Pembersihan kecil
Invoke-RestMethod
(#19490) - Tingkatkan pesan yang lebih rinci dari WebCmdlets agar menampilkan versi HTTP yang benar (#19616)
- Tambahkan 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!)
- Dukungan untuk soket domain Unix di WebCmdlets (#19343)
Peningkatan lainnya pada cmdlet
-
Test-Connection
sekarang mengembalikan kesalahan tentang kebutuhan untuk menggunakansudo
pada platform Linux saat menggunakan ukuran buffer kustom (#20369) - Tambahkan jenis output ke perintah Format (#18746) (Terima kasih @MartinGC94!)
- Tambahkan atribut jenis output untuk
Get-WinEvent
(#17948) (Terima kasih @MartinGC94!) - Tambahkan Path dan LiteralPath ke parameter cmdlet
Test-Json
(#19042) (Terima kasih @ArmaanMcleod!) - Tambahkan parameter
NoHeader ke cmdlet dan ( #19108 ) (Terima kasih - Tambahkan parameter konfirm dan WhatIf ke
Stop-Transcript
(#18731) (Terima kasih @JohnLBevan!)) - Tambahkan parameter
FuzzyMinimumDistance ke ( #18261 ) - Buat parameter Pengodean
dapat menerima pengodean di PowerShell ( #19298 ) (Terima kasih - Tambahkan progres 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 parameter cmdlet
Get-Content
-Head
dan-Tail
(#19715) (Terima kasih @CarloToso!) - Buat
Update-Help
menghasilkan kesalahan yang tepat ketika budaya saat ini tidak terkait dengan bahasa (#19765) (Terima kasih @josea!) - Izinkan menggabungkan parameter
-Skip
dan-SkipLast
dalam cmdletSelect-Object
. (#18849) (Terima kasih @ArmaanMcleod!) - Tambahkan cmdlet
Get-SecureRandom
(#19587) -
Set-Clipboard -AsOSC52
untuk penggunaan jarak jauh (#18222) (Terima kasih @dkaszews!) - Mempercepat resolusi jalur relatif
Resolve-Path
(#19171) (Terima kasih @MartinGC94!) - Menambahkan parameter sakelar
-CaseInsensitive
ke cmdletSelect-Object
danGet-Unique
(#19683) (Terima kasih @ArmaanMcleod!) -
Restart-Computer
danStop-Computer
harus gagal dengan kesalahan saat 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 ) - Tajuk tabel untuk bidang terhitung diformat dalam huruf miring secara default
- Tambahkan dukungan untuk menghormati
$PSStyle.OutputRendering
pada host jarak jauh (#19601) - Data telemetri yang diperbarui untuk menyertakan penggunaan modul
CrescendoBuilt
(#20371)
Pembaruan Mesin Lainnya
- Buat kelas PowerShell tidak berafiliasi dengan Runspace saat mendeklarasikan atribut
NoRunspaceAffinity
(#18138) - Tambahkan atribut
ValidateNotNullOrWhiteSpace
(#17191) (Terima kasih @wmentha!) - Tambahkan
sqlcmd
ke dalam daftar untuk pewarisan argumen (#18559) - Tambahkan
cd~
fungsi (#18308) (Terima kasih @GigaScratch!) - Memperbaiki pemrosesan jenis array dalam tipe generik (#19205) (Terima kasih @MartinGC94!))
- Perbaiki wildcard globbing di akar jalur perangkat (#19442) (Terima kasih @MartinGC94!)
- Tambahkan 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 kini melewati file yang ditandai oleh penyedia cloud sebagai belum sepenuhnya tersimpan di disk.
- PSCommandWithArgs - Tambahkan 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.