Apa yang Baru di PowerShell 7.3

PowerShell 7.3 adalah rilis stabil berikutnya, dibangun di .NET 7.0.

PowerShell 7.3 menyertakan fitur, pembaruan, dan perubahan yang melanggar berikut.

Perubahan dan Penyempurnaan Yang Melanggar

  • Dalam rilis ini, API Windows diperbarui atau dihapus untuk kepatuhan, yang berarti bahwa PowerShell 7.3 tidak berjalan pada Windows 7. Meskipun Windows 7 tidak lagi didukung, build sebelumnya dapat berjalan pada Windows 7.
  • PowerShell Direct untuk Hyper-V hanya didukung pada Windows 10, versi 1809 dan yang lebih tinggi.
  • Test-Connectionrusak karena perubahan yang melanggar disengaja di .NET 7. Ini dilacak oleh #17018
  • Tambahkan clean blok ke blok skrip sebagai peer ke begin, process, dan end untuk memungkinkan pembersihan sumber daya yang mudah (#15177)
  • Ubah default untuk $PSStyle.OutputRendering menjadi Host
  • Membuat Out-String dan Out-File menjaga input string tidak berubah (#17455)
  • Pindahkan definisi data jenis System.Security.AccessControl.ObjectSecurity ke modul Microsoft.PowerShell.Security (#16355) (Terima kasih @iSazonov!)
    • Sebelum perubahan ini, pengguna tidak perlu mengimpor modul Microsoft.PowerShell.Security secara eksplisit untuk menggunakan properti kode yang ditentukan untuk instans System.Security.AccessControl.ObjectSecurity.
    • Setelah perubahan ini, pengguna perlu mengimpor modul Microsoft.PowerShell.Security secara eksplisit untuk menggunakan properti kode dan metode kode tersebut.

Peningkatan penyelesaian tab

  • PowerShell 7.3 menyertakan PSReadline 2.2.6, yang memungkinkan IntelliSense Prediktif secara default. Untuk informasi selengkapnya, lihat about_PSReadLine.
  • Perbaiki penyelesaian tab dalam blok skrip yang ditentukan untuk ValidateScriptAttribute. (#14550) (Terima kasih @MartinGC94!)
  • Menambahkan penyelesaian tab untuk label perulangan setelah break/continue (#16438) (Terima kasih @MartinGC94!)
  • Meningkatkan penyelesaian Hashtable dalam beberapa skenario (#16498) (Terima kasih @MartinGC94!)
    • Percikan parameter
    • Parameter argumen untuk Invoke-CimMethod
    • Parameter FilterHashtable untuk Get-WinEvent
    • Parameter properti untuk cmdlet CIM
    • Menghapus duplikat dari skenario penyelesaian anggota
  • Mendukung penerusan garis miring dalam penyelesaian berbagi jaringan (jalur UNC) (#17111) (Terima kasih @sba923!)
  • Meningkatkan pelengkapan otomatis anggota (#16504) (Terima kasih @MartinGC94!)
  • Memprioritaskan penyelesaian ValidateSet melalui Enum untuk parameter (#15257) (Terima kasih @MartinGC94!)
  • Menambahkan dukungan inferensi jenis untuk metode generik dengan parameter jenis (#16951) (Terima kasih @MartinGC94!)
  • Meningkatkan inferensi dan penyelesaian jenis (#16963) (Terima kasih @MartinGC94!)
    • Memungkinkan metode ditampilkan dalam hasil penyelesaian untuk ForEach-Object -MemberName
    • Mencegah penyelesaian pada ekspresi yang mengembalikan kekosongan seperti ([void](""))
    • Memungkinkan konstruktor Kelas non-default muncul ketika penyelesaian kelas didasarkan pada AST
  • Meningkatkan inferensi jenis untuk $_ (#17716) (Terima kasih @MartinGC94!)
  • Memperbaiki inferensi jenis untuk ICollection (#17752) (Terima kasih @MartinGC94!)
  • Mencegah kurung kurawal dihapus saat menyelesaikan variabel (#17751) (Terima kasih @MartinGC94!)
  • Menambahkan penyelesaian untuk ekspresi indeks untuk kamus (#17619) (Terima kasih @MartinGC94!)
  • Memperbaiki penyelesaian jenis untuk token atribut (#17484) (Terima kasih @MartinGC94!)
  • Meningkatkan penyelesaian tab parameter dinamis (#17661) (Terima kasih @MartinGC94!)
  • Hindari mengikat parameter posisi saat menyelesaikan parameter di depan nilai (#17693) (Terima kasih @MartinGC94!)

Meningkatkan penanganan kesalahan

  • Atur $? dengan benar untuk ekspresi perintah dengan pengalihan (#16046)
  • Memperbaiki kesalahan transmisi saat menggunakan $PSNativeCommandUseErrorActionPreference (#15993)
  • Buat penanganan kesalahan perintah asli secara opsional menghormati ErrorActionPreference (#15897)
  • Tentukan jalur yang dapat dieksekusi sebagai TargetObject untuk kode keluar non-nol ErrorRecord (#16108) (Terima kasih @rkeithhill!)

Peningkatan sesi dan jarak jauh

  • Tambahkan -Options ke PSRP melalui perintah SSH untuk memungkinkan meneruskan opsi OpenSSH secara langsung (#12802) (Terima kasih @BrannenGH!)
  • Tambahkan -ConfigurationFile parameter untuk pwsh memungkinkan memulai proses baru dengan konfigurasi sesi yang .pssc ditentukan dalam file (#17447)
  • Menambahkan dukungan untuk menggunakan New-PSSessionConfigurationFile pada platform non-Windows (#17447)

Cmdlet yang diperbarui

  • Tambahkan -HttpVersion parameter ke cmdlet web (#15853) (Terima kasih @hayhay27!)
  • Tambahkan dukungan ke cmdlet web untuk tag input terbuka (#16193) (Terima kasih @farmerau!)
  • Perbaikan ConvertTo-Json -Depth untuk memungkinkan 100 maksimum (#16197) (Terima kasih @KevRitchie!)@rkeithhill!)
  • Meningkatkan penanganan variabel saat memanggil Invoke-Command dengan ekspresi (#16113$using:) (Terima kasih@dwtaber!)
  • Tambahkan -StrictMode ke Invoke-Command untuk memungkinkan menentukan mode ketat saat memanggil perintah secara lokal (#16545) (Terima kasih @Thomas-Yu!)
  • Tambahkan clean blok ke blok skrip sebagai peer ke begin, process, dan end untuk memungkinkan pembersihan sumber daya yang mudah (#15177)
  • Tambahkan -Amended switch ke Get-CimClass cmdlet (#17477) (Terima kasih @iSazonov)
  • Diubah ConvertFrom-Json -AsHashtable untuk menggunakan hashtable yang diurutkan (#17405)
  • Menghapus urutan escape ANSI dalam string sebelum mengirim ke Out-GridView (#17664)
  • Menambahkan parameter Milidetik ke New-TimeSpan (#17621) (Terima kasih@NoMoreFood!)
  • Tampilkan parameter opsional saat menampilkan definisi metode dan kelebihan beban (#13799) (Terima kasih @eugenesmlv!)
  • Izinkan perintah masih dijalankan meskipun direktori kerja saat ini tidak ada lagi (#17579)
  • Tambahkan dukungan untuk HTTPS dengan Set-AuthenticodeSignature -TimeStampServer (#16134) (Terima kasih @Ryan-Hutchison-USAF!)
  • Merender angka desimal dalam tabel menggunakan budaya saat ini (#17650)
  • Tambahkan jenis akselerator yang dipesan untuk OrderedDictionary (#17804) (Terima kasih @fflaten!)
  • Tambahkan find.exe ke perilaku pengikatan argumen warisan untuk Windows (#17715)
  • Tambahkan -noprofileloadtime switch ke pwsh (#17535) (Terima kasih @rkeithhill!)

Untuk daftar lengkap perubahan, lihat Log Perubahan di repositori GitHub.

Fitur Eksperimental

Di PowerShell 7.3, fitur eksperimental berikut menjadi mainstream:

  • PSAnsiRenderingFileInfo - Fitur ini menambahkan $PSStyle.FileInfo anggota dan memungkinkan pewarnaan jenis file tertentu.

  • PSCleanBlock - Menambahkan clean blok ke blok skrip sebagai peer ke begin, process, dan end untuk memungkinkan pembersihan sumber daya yang mudah.

  • PSAMSIMethodInvocationLogging - Memperluas data yang dikirim ke AMSI untuk diperiksa untuk menyertakan semua pemanggilan anggota metode .NET.

  • PSNativeCommandArgumentPassing - PowerShell sekarang menggunakan properti ArgumentList dari objek StartProcessInfo daripada mekanisme lama untuk menyusun ulang string saat memanggil executable asli.

    PowerShell 7.3.1 menambahkan sqlcmd.exe ke daftar perintah asli di Windows yang menggunakan Legacy gaya melewati argumen.

  • PSExec - Menambahkan cmdlet baru Switch-Process (alias exec) untuk memberikan exec kompatibilitas untuk sistem non-Windows.

    PowerShell 7.3.1 mengubah exec alias menjadi fungsi yang membungkus Switch-Process. Fungsi ini memungkinkan Anda meneruskan parameter ke perintah asli yang mungkin secara keliru terikat ke parameter WithCommand .

PowerShell 7.3 memperkenalkan fitur eksperimental berikut:

  • PSNativeCommandErrorActionPreference - Menambahkan $PSNativeCommandUseErrorActionPreference variabel untuk mengaktifkan kesalahan yang dihasilkan oleh perintah asli menjadi kesalahan PowerShell.

PowerShell 7.3 menghapus fitur eksperimental berikut:

  • PSNativePSPathResolution fitur eksperimental tidak lagi didukung.
  • PSStrictModeAssignment fitur eksperimental tidak lagi didukung.

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