Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
PowerShell 7.5.4 menyertakan fitur-fitur, pembaruan, dan perubahan besar berikut ini. PowerShell 7.5.4 dibangun pada rilis .NET 9.0.306.
Untuk daftar lengkap perubahan, lihat CHANGELOG di repositori GitHub. Untuk informasi selengkapnya tentang .NET 9, lihat Apa yang baru di .NET 9.
Memecahkan Perubahan
- Perbaikan parameter
-OlderThandan-NewerThanuntukTest-Pathsaat menggunakanPathTypedan rentang tanggal (#20942) (Terima kasih @ArmaanMcleod!)- Sebelumnya
-OlderThanakan diabaikan jika ditentukan bersama-sama
- Sebelumnya
- Ubah
New-FileCatalog -CatalogVersiondefault ke 2 (#20428) (Terima kasih @ThomasNieto!) - Mencegah bantuan dari lokasi jaringan dalam sesi jarak jauh terbatas (#20593)
- Alat penginstal Windows sekarang mengingat opsi penginstalan yang digunakan dan menggunakannya untuk menginisialisasi opsi untuk penginstalan berikutnya (#20420) (Terima kasih @reduckted!)
-
ConvertTo-Jsonsekarang diserialisasikanBigIntegersebagai angka (#21000) (Terima kasih @jborean93!)
Modul yang diperbarui
PowerShell 7.5.4 menyertakan modul yang diperbarui berikut:
- Microsoft.PowerShell.PSResourceGet v1.1.1
- PSReadLine v2.3.6
Peningkatan fitur penyelesaian tab
Terima kasih banyak kepada @ArmaanMcleod dan yang lainnya atas semua upaya mereka untuk meningkatkan penyelesaian tab.
- Kembali ke inferensi jenis ketika nilai kunci yang dapat di-hash tidak dapat diambil dari ekspresi aman (#21184) (Terima kasih @MartinGC94!)
- Perbaiki regresi saat melakukan inferensi jenis untuk
$_(#21223) (Terima kasih @MartinGC94!) - Perluas
~ke$HOMEpada Windows dengan penyelesaian tab (#21529) - Jangan selesai saat mendeklarasikan nama parameter dan anggota kelas (#21182) (Terima kasih @MartinGC94!)
- Mencegah fallback ke penyelesaian file saat tab menyelesaikan nama jenis (#20084) (Terima kasih @MartinGC94)
- Tambahkan penyelesaian argumen ke
-VersionuntukSet-StrictMode(#20554) (Terima kasih @ArmaanMcleod!) - Tambahkan
-Verbpelengkap argumen untukGet-Verb/Get-Commanddan perombakanGet-Verb(#20286) (Terima kasih @ArmaanMcleod)) - Tambahkan
-Verbpelengkap argumen untukStart-Process(#20415) (Terima kasih @ArmaanMcleod) - Tambahkan
-Scopepengisi argumen untuk*-Variable,*-Alias&*-PSDriveperintah (#20451) (Terima kasih @ArmaanMcleod) - Tambahkan penyelesaian
-Moduleuntuk perintahSave-Help/Update-Help(#20678) (Terima kasih @ArmaanMcleod))
Cmdlet baru
- Tambahkan
ConvertTo-CliXmldanConvertFrom-CliXmlcmdlet (#21063) (Terima kasih @ArmaanMcleod!)
Peningkatan terhadap cmdlet web
- Perbaikan untuk mengizinkan
-PassThrudan-Outfilebekerja sama (#24086) - Tambahkan
OutFileproperti diWebResponseObject(#24047) - Tampilkan nama file dalam
Invoke-WebRequest -OutFile -Verbose(#24041) - Perbaiki WebCmdlet ketika
-Bodyditentukan tetapiContentTypetidak (#23952) (Terima kasih @CarloToso!) - Memperbaiki
Invoke-WebRequestuntuk melaporkan ukuran yang benar saat-Resumeditentukan (#20207) (Terima kasih @LNKLEO!) - Perbaiki Cmdlet Web untuk memungkinkan
WinFormaplikasi berfungsi dengan benar (#20606)
Peningkatan lainnya pada cmdlet
- Perbaiki
Out-GridViewdengan mengganti penggunaan usangBinaryFormatterdengan implementasi kustom (#25559) - Aktifkan
-NoRestartuntuk bekerja denganRegister-PSSessionConfiguration(#23891) - Tambahkan
IgnoreCommentsdanAllowTrailingCommasopsi keTest-Jsoncmdlet (#23817) (Terima kasih @ArmaanMcleod!) - Get-Help dapat melaporkan parameter dengan
ValueFromRemainingArgumentsatribut sebagai pipeline-able (#23871) - Ubah jenis menjadi
LineNumberulongdiSelect-String(#24075) (Terima kasih @Snowman-25!) -
Get-Process: Hapus persyaratan admin untuk-IncludeUserName(#21302) (Terima kasih @jborean93!) - Perbaiki
Test-Path -IsValiduntuk memeriksa jalur dan karakter nama file yang tidak valid (#21358) - Tambahkan
RecommendedActionkeConciseViewpelaporan kesalahan (#20826) (Terima kasih @JustinGrote!) - Menambahkan bilah kemajuan untuk
Remove-Itemcmdlet (#20778) (Terima kasih @ArmaanMcleod!) - Perbaikan
Test-Connectionkarena perubahan .NET 8 (#20369) - Memperbaiki
Get-Servicepesan kesalahan berkelanjutan untuk menyertakan kategori (#20276) - Tambahkan
-Emptyparameter dan-InputObjectkeNew-Guid(#20014) (Terima kasih @CarloToso!) - Tambahkan alias
rke parameter-RecurseuntukGet-ChildItemperintah (#20100) (Terima kasih @kilasuit!) - Tambahkan
LPkeLiteralPathalias untuk fungsi yang masih kehilangannya (#20820) - Tambahkan fallback pelokalan implisit ke
Import-LocalizedData(#19896) (Terima kasih @chrisdent-de!) - Tambahkan
Aliaseske properti yang muncul saat memformat konten bantuan parameter yang dikembalikan olehGet-Help(#20994) - Tambahkan
HelpUrikeRemove-Service(#20476) - Memperbaiki kerusakan saat proses penyelesaian untuk penyedia SCCM (#20815, #20919, #20915) (Terima kasih @MartinGC94!)
- Memperbaiki regresi saat
Get-Content-Tail 0dan-Waitdigunakan bersama-sama (#20734) (Terima kasih @CarloToso!) - Perbaikan
Start-Process -PassThruuntuk memastikanExitCodeproperti dapat diakses untuk objek yang dikembalikanProcess(#20749) (Terima kasih @CodeCyclone!) - Perbaiki
Group-Objectagar menggunakan budaya saat ini untuk outputnya (#20608) - Memperbaiki
Group-Objectoutput menggunakan string terinterpolasi (#20745) (Terima kasih @mawosoft!) - Memperbaiki penyajian
DisplayRootuntuk jaringanPSDrive(#20793) - Perbaiki status kemajuan
Copy-Itemagar hanya ditampilkan sebagai selesai ketika semua file disalin (#20517) - Memperbaiki regresi penyelesaian jalur UNC (#20419) (Terima kasih @MartinGC94!)
- Melaporkan kesalahan jika
-ExecutionPolicyyang tidak valid diteruskan kepwsh(#20460) - Tambahkan modul WinGetCommandNotFound dan CompletionPredictor untuk melacak penggunaan (#21040)
- Tambahkan parameter DateKind ke
ConvertFrom-Json(#20925) (Terima kasih @jborean93!) - Tambahkan DirectoryInfo ke OutputType for New-Item (#21126) (Terima kasih @MartinGC94!)
- Memperbaiki
Get-Errorserialisasi nilai array (#21085) (Terima kasih @jborean93!) - Perbaikan
Test-ModuleManifestsehingga dapat menggunakan jalur UNC (#24115) - Perbaiki
Get-TypeDatauntuk segera menulis ke alur alih-alih mengumpulkan data terlebih dahulu (#24236) (Terima kasih @MartinGC94) - Tambahkan
-Forceparameter keResolve-PathdanConvert-Pathcmdlet untuk mendukung file tersembunyi wildcard #20981 (Terima kasih @ArmaanMcleod!) - Atur pegangan standar secara eksplisit saat memulai proses dengan
-NoNewWindow(#25324) - Jadikan anggota instans internal terlindungi yang diwarisi dapat diakses dalam lingkup kelas. (#25547) (Terima kasih @mawosoft!)
- Hapus saran fuzzy lama dan perbaiki saran nama file skrip lokal (#25330)
- Memperbaiki
PSMethodInvocationConstraints.GetHashCodemetode (#25306) (Terima kasih @crazyjncsu!)
Peningkatan mesin
- Pindahkan pencatatan pemanggilan metode .NET ke setelah konversi jenis yang diperlukan dilakukan untuk argumen metode (#25357)
- Kembali ke AppLocker setelah
WldpCanExecuteFile(#25305) - Secara eksplisit memulai dan menghentikan Warna Kesalahan ANSI (#24065) (Terima kasih @JustinGrote!)
- Meningkatkan definisi kelebihan beban .NET dari metode generik (#21326) (Terima kasih @jborean93!)
-
+=Optimalkan operasi untuk koleksi saat merupakan array objek (#23901) (Terima kasih@jborean93!) - Menambahkan telemetri untuk memeriksa tag tertentu saat mengimpor modul (#20371)
- Tambahkan
PSAdapterdanConsoleGuiToolske daftar izin telemetri beban modul (#20641) - Menambahkan modul WinGet untuk melacak penggunaan (#21040)
- Pastikan nama file tidak null saat mencatat peristiwa WDAC ETW (#20910) (Terima kasih @jborean93!)
- Memperbaiki empat regresi yang diperkenalkan oleh fitur pengelogan WDAC (#20913)
- Biarkan input, output, dan kesalahan menangani unset saat tidak dialihkan (#20853)
- Perbaiki cmdlet proksi jarak jauh implisit untuk bertindak pada parameter umum (#20367)
- Sertakan versi modul dalam pesan kesalahan saat modul tidak ditemukan (#20144) (Terima kasih @ArmaanMcleod!)
- Memperbaiki
unixmodeuntuk menanganisetuiddanstickyketika file bukan file yang dapat dieksekusi (#20366) - Perbaiki dengan menggunakan Path.Combine saat menyusun jalur rakitan (#21169)
- Validasi nilai untuk menggunakan namespace selama pemeriksaan semantik untuk mencegah mendeklarasikan namespace tidak valid (#21162)
- Tangani alat global secara khusus saat menambahkan
$PSHOMEdi awal PATH (#24228)
Fitur eksperimental
Fitur eksperimental berikut dikonversi ke fitur mainstream di PowerShell 7.5-rc.1:
Fitur eksperimental berikut disertakan dalam PowerShell 7.5-rc.1:
- PSRedirectToVariable - Izinkan pengalihan ke variabel (#20381)
- PSNativeWindowsTildeExpansion - Tambahkan ekspansi tilde untuk executable asli Windows (#20402) (Terima kasih @domsleee!)
-
PSSerializeJSONLongEnumAsNumber -
ConvertTo-Jsonsekarang memperlakukan enum besar sebagai angka (#20999) (Terima kasih @jborean93!)
Peningkatan performa
PowerShell 7.5-rc.1 menyertakan PR#23901 dari @jborean93 yang meningkatkan kinerja operasi += untuk array objek.
Contoh berikut mengukur performa untuk berbagai metode penambahan elemen ke array.
$tests = @{
'Direct Assignment' = {
param($count)
$result = foreach($i in 1..$count) {
$i
}
}
'List<T>.Add(T)' = {
param($count)
$result = [Collections.Generic.List[int]]::new()
foreach($i in 1..$count) {
$result.Add($i)
}
}
'Array+= Operator' = {
param($count)
$result = @()
foreach($i in 1..$count) {
$result += $i
}
}
}
5kb, 10kb | ForEach-Object {
$groupResult = foreach($test in $tests.GetEnumerator()) {
$ms = (Measure-Command { & $test.Value -Count $_ }).TotalMilliseconds
[pscustomobject]@{
CollectionSize = $_
Test = $test.Key
TotalMilliseconds = [Math]::Round($ms, 2)
}
[GC]::Collect()
[GC]::WaitForPendingFinalizers()
}
$groupResult = $groupResult | Sort-Object TotalMilliseconds
$groupResult | Select-Object *, @{
Name = 'RelativeSpeed'
Expression = {
$relativeSpeed = $_.TotalMilliseconds / $groupResult[0].TotalMilliseconds
$speed = [Math]::Round($relativeSpeed, 2).ToString() + 'x'
if ($speed -eq '1x') { $speed } else { $speed + ' slower' }
}
} | Format-Table -AutoSize
}
Saat Anda menjalankan skrip di PowerShell 7.4.6, Anda melihat bahwa menggunakan operator += adalah metode paling lambat.
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
5120 Direct Assignment 4.17 1x
5120 List<T>.Add(T) 90.79 21.77x slower
5120 Array+= Operator 342.58 82.15x slower
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
10240 Direct Assignment 0.64 1x
10240 List<T>.Add(T) 184.10 287.66x slower
10240 Array+= Operator 1668.13 2606.45x slower
Saat Anda menjalankan skrip di PowerShell 7.5-rc.1, Anda melihat bahwa menggunakan operator += jauh lebih cepat daripada PowerShell 7.4.6. Sekarang, ini juga lebih cepat daripada menggunakan metode List<T>.Add(T).
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
5120 Direct Assignment 4.71 1x
5120 Array+= Operator 40.42 8.58x slower
5120 List<T>.Add(T) 92.17 19.57x slower
CollectionSize Test TotalMilliseconds RelativeSpeed
-------------- ---- ----------------- -------------
10240 Direct Assignment 1.76 1x
10240 Array+= Operator 104.73 59.51x slower
10240 List<T>.Add(T) 173.00 98.3x slower