Bagikan melalui


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 CHANGELOG di repositori GitHub.

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 fungsi Test-Json untuk file JSON dan JSONC yang berisi komentar.
    • ConvertFrom-Json fitur masih menggunakan Newtonsoft.Json.Schema sehingga dapat mengonversi file JSON dengan komentar.
  • 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 menggunakan sudo 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 menggunakan sudo 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 cmdlet Select-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 cmdlet Select-Object dan Get-Unique (#19683) (Terima kasih @ArmaanMcleod!)
  • Restart-Computer dan Stop-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.
  • 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:

PowerShell 7.4 mengubah fitur eksperimental berikut:

Untuk informasi selengkapnya tentang Fitur Eksperimental, lihat Menggunakan Fitur Eksperimental.