Bagikan melalui


Apa yang baru di PowerShell Core 6.2

Rilis PowerShell Core 6.2 berfokus pada peningkatan performa, perbaikan bug, dan cmdlet yang lebih kecil dan peningkatan bahasa yang meningkatkan kualitas. Untuk melihat daftar lengkap peningkatan, lihat log perubahan terperinci kami di GitHub.

Fitur Eksperimental

Sebelumnya, kami mengaktifkan dukungan untuk Fitur Eksperimental. Dalam rilis 6.2, kami memiliki empat fitur eksperimental untuk dicoba. Harap berikan umpan balik sehingga kami dapat melakukan perbaikan dan untuk memutuskan apakah fitur tersebut layak dipromosikan ke status arus utama.

Gunakan Get-ExperimentalFeature untuk mendapatkan daftar fitur eksperimental yang tersedia. Anda dapat mengaktifkan atau menonaktifkan fitur ini dengan Enable-ExperimentalFeature dan Disable-ExperimentalFeature.

Saran Perintah Tidak Ditemukan

Fitur ini menggunakan pencocokan fuzzy untuk menemukan saran perintah atau cmdlet yang mungkin salah ketik.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Example

Dalam contoh ini, nama cmdlet yang salah eja dicocokkan dengan beberapa saran dari kemungkinan besar hingga paling tidak mungkin.

Get-Commnd
Get-Commnd : The term 'Get-Commnd' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ Get-Commnd
+ ~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException


Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module,
Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.

Batching jarak jauh implisit

Saat menggunakan jarak jauh implisit dalam alur, PowerShell memperlakukan setiap perintah dalam alur secara independen. Objek berulang kali diserialisasikan dan de-serialized antara klien dan sistem jarak jauh selama eksekusi alur.

Dengan fitur ini, PowerShell menganalisis alur untuk menentukan apakah perintah aman untuk dijalankan dan ada di sistem target. Jika benar, PowerShell mengeksekusi seluruh alur dari jarak jauh dan hanya menserialkan dan de-serializes hasilnya kembali ke klien.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Pengujian Get-Process | Sort-Object dunia nyata over localhost menurun dari 10-15 detik menjadi 20-30 milidetik. Fitur ini hanya perlu diaktifkan pada klien. Tidak ada perubahan yang diperlukan di server.

Penggerak Sementara

Enable-ExperimentalFeature -Name PSTempDrive

Jika Anda menggunakan PowerShell Core pada sistem operasi yang berbeda, Anda akan menemukan bahwa variabel lingkungan untuk menemukan direktori sementara berbeda di Windows, macOS, dan Linux! Dengan fitur ini, Anda mendapatkan nama Temp:PSDrive yang secara otomatis dipetakan ke folder sementara untuk sistem operasi yang Anda gunakan.

Example

PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!

Ketahuilah bahwa perintah file asli (seperti ls di Linux) tidak mengetahui PSDrives dan tidak akan melihat drive ini Temp: .

Perluasan Singkatan

Cmdlet PowerShell diharapkan memiliki kata benda deskriptif. Hal ini menghasilkan nama panjang yang lebih sulit untuk diketik. Fitur ini memungkinkan Anda untuk hanya mengetikkan karakter huruf besar dari cmdlet dan menggunakan pemulangan tab untuk menemukan kecocokan.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Example

PS> i-arsavsf

Jika Anda menekan tab, dan menginstal modul Azure PowerShell Az , itu akan dilengkapi secara otomatis untuk:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Nota

Fitur ini dimaksudkan untuk digunakan secara interaktif. Bentuk cmdlet yang disingkat tidak dapat dieksekusi. Fitur ini bukan pengganti alias.

Pemecahan Perubahan

  • Perbaiki -NoEnumerate perilaku agar Write-Output konsisten dengan Windows PowerShell. (#9069)
  • Jadikan Join-String -InputObject 1,2,3 hasil sama dengan 1,2,3 | Join-String hasil (#8611) (Terima kasih @sethvs!)
  • Tambahkan -Stable ke Sort-Object dan tes terkait (#7862) (Terima kasih @KirkMunro!)
  • Tingkatkan Start-Sleep cmdlet untuk menerima pecahan detik (#8537) (Terima kasih @Prototyyppi!)
  • Ubah hashtable untuk menggunakan OrdinalIgnoreCase menjadi di case-insensitive semua Budaya (#8566)
  • Perbaiki LiteralPath untuk Import-Csv mengikat ke Get-ChildItem output (#8277) (Terima kasih @iSazonov!)
  • Tidak lagi melewatkan kolom tanpa nama jika pemisah tanda kutip ganda digunakan di Import-Csv (#7899) (Terima kasih @Topping!)
  • Get-ExperimentalFeature tidak lagi memiliki -ListAvailable sakelar (#8318)
  • Parameter debug sekarang diatur $DebugPreference ke Lanjutkan , bukan Inquire (#8195) (Terima kasih @KirkMunro!)
  • Kehormatan -OutputFormat jika ditentukan dalam perintah non-interaktif, dialihkan, dan dikodekan yang digunakan dengan pwsh (#8115)
  • Muat rakitan dari jalur dasar modul sebelum mencoba memuat dari GAC (#8073)
  • Hapus tilde dari paket pratinjau Linux (#8244)
  • Memindahkan -WorkingDirectory pemrosesan sebelum pemrosesan profil (#8079)
  • Jangan tambahkan PATHEXT variabel lingkungan di Unix (#7697) (Terima kasih @iSazonov!)

Masalah yang Diketahui

  • Jarak jauh pada platform Windows IOT ARM memiliki masalah saat memuat modul. Lihat (#8053)

Pembaruan dan Perbaikan Umum

  • Aktifkan penyelesaian tab tidak peka huruf besar/kecil untuk file dan folder pada sistem file peka huruf besar/kecil (#8128)
  • Jadikan PSVersionInfo.PSVersion dan PSVersionInfo.PSEdition publik (#8054) (Terima kasih @KirkMunro!)
  • Tambahkan Inferensi Tipe untuk $_ / $PSItem blok ( catch{ } #8020) (Terima kasih @vexx32!)
  • Perbaiki inferensi jenis pemanggilan metode statis (#8018) (Terima kasih @SeeminglyScience!)
  • Buat jenis yang disimpulkan untuk Select-Object, Group-Object, PSObject dan Hashtable (#7231) (Terima kasih @powercode!)
  • Mendukung metode pemanggilan dengan ByRef-like parameter jenis (#7721)
  • Tangani kasus di mana jalur modul Windows PowerShell sudah ada di PSModulePath lingkungan (#7727)
  • Aktifkan SecureString cmdlet untuk non-Windows dengan menyimpan teks biasa (#9199)
  • Meningkatkan pesan kesalahan pada non-Windows saat mengimpor clixml dengan securestring (#7997)
  • Menambahkan parameter ReplyTo to Send-MailMessage (#8727) (Terima kasih @replicaJunction!)
  • Tambahkan pesan usang ke Send-MailMessage (#9178)
  • Memperbaiki Restart-Computer untuk dikerjakan localhost saat WinRM tidak ada (#9160)
  • Buat Start-Job kesalahan penghentian lemparan saat PowerShell dihosting (#9128)
  • Tambahkan akselerator dan akhiran tipe gaya C# untuk literal ushort, uint, ulong, dan short (#7813) (Terima kasih @vexx32!)
  • Menambahkan akhiran baru untuk literal numerik - lihat about_Numeric_Literals (#7901) (Terima kasih @vexx32!)
  • Laporkan tingkat dampak dengan benar saat SupportsShouldProcess tidak diatur ke 'true' (#8209) (Terima kasih @vexx32!)
  • Perbaiki Masalah Charset Permintaan di Cmdlet Web (#8742) (Terima kasih @markekraus!)
  • Perbaiki masalah Expect 100-continue dengan Web Cmdlet (#8679) (Terima kasih @markekraus!)
  • Perbaiki masalah pemblokiran file dengan cmdlet web (#7676) (Terima kasih @Claustn!)
  • Perbaiki masalah penguraian halaman kode di Invoke-RestMethod (#8694) (Terima kasih @markekraus!)
  • Faktor ulang ConvertTo-Json untuk mengekspos JsonObject.ConvertToJson sebagai API publik (#8682)
  • Tambahkan kedalaman ConvertFrom-Json maksimum yang dapat dikonfigurasi dengan -Depth (#8199) (Terima kasih @louistio!)
  • Tambahkan parameter EscapeHandling dalam ConvertTo-Json cmdlet (#7775) (Terima kasih @iSazonov!)
  • Tambahkan -CustomPipeName ke pwsh dan Enter-PSHostProcess (#8889)
  • Aktifkan pembuatan tautan simbolis relatif di Windows dengan New-Item (#8783)
  • Izinkan pengguna Windows dalam mode pengembang untuk membuat symlink tanpa elevasi (#8534)
  • Aktifkan Write-Information untuk menerima $null (#8774)
  • Memperbaiki Get-Help fungsi lanjutan dengan konten bantuan MAML (#8353)
  • Perbaiki Get-Help masalah PSTypeName dengan -Parameter ketika hanya satu parameter yang dideklarasikan (#8754) (Terima kasih @pougetat!)
  • Perbaikan perhitungan token untuk Get-Help dijalankan di ScriptBlock untuk bantuan komentar. (#8238) (Terima kasih @hubuk!)
  • Ubah Get-Help parameter -Parameter cmdlet sehingga menerima array string (#8454) (Terima kasih @sethvs!)
  • Selesaikan PAGER jika jalurnya berisi spasi (#8571) (Terima kasih @pougetat!)
  • Tambahkan prompt ke penggunaan fungsi less 'bantuan' untuk menginstruksikan pengguna cara keluar (#7998)
  • Tambahkan jenis enum dan char dukungan di Format-Hex cmdlet (#8191) (Terima kasih @iSazonov!)
  • Hapus ShouldProcess dari Format-Hex (#8178)
  • Tambahkan parameter Offset dan Count baru ke Format-Hex dan memfaktorkan ulang cmdlet (#7877) (Terima kasih @iSazonov!)
  • Izinkan 'name' sebagai kunci alias untuk 'label' di ConvertTo-Html, izinkan entri 'width' menjadi bilangan bulat (#8426) (Terima kasih @mklement0!)
  • Membuat properti terhitung berbasis scriptblock berfungsi lagi di ConvertTo-Html (#8427) (Terima kasih @mklement0!)
  • Tambahkan cmdlet Join-String untuk membuat teks dari input alur (#7660) (Terima kasih @powercode!)
  • Perbaiki Join-String logika parameter cmdlet FormatString (#8449) (Terima kasih @sethvs!)
  • Ubah Clear-Host kembali ke penggunaan $RAWUI dan hapus untuk bekerja melalui jarak jauh (#8609)
  • Ubah Clear-Host menjadi hanya disebut [console]::clear dan hapus alias yang jelas dari Unix (#8603)
  • Perbaiki LiteralPath untuk Import-Csv mengikat ke Get-ChildItem output (#8277) (Terima kasih @iSazonov!)
  • help tidak boleh menggunakan pager untuk AliasHelpInfo (#8552)
  • Tambahkan -UseMinimalHeader ke Start-Transcript untuk meminimalkan header transkrip (#8402) (Terima kasih @lukexjeremy!)
  • Tambahkan Enable-ExperimentalFeature dan Disable-ExperimentalFeature cmdlet (#8318)
  • Mengekspos semua cmdlet dari PSDiagnostics jika logman.exe tersedia (#8366)
  • Hapus parameter Persist dari New-PSDrive platform ( non-Windows #8291) (Terima kasih @lukexjeremy!)
  • Tambahkan dukungan untuk cd + (#7206) (Terima kasih @bergmeister!)
  • Aktifkan Set-Location -LiteralPath untuk bekerja dengan folder bernama - dan + (#8089)
  • Test-Path mengembalikan $false ketika diberi nilai kosong atau $null jalur (#8080) (Terima kasih @vexx32!)
  • Izinkan parameter dinamis dikembalikan meskipun jalur tidak cocok dengan penyedia mana pun (#7957)
  • Dukungan Get-PSHostProcessInfo dan Enter-PSHostProcess di platform Unix (#8232)
  • Mengurangi alokasi dalam Get-Content cmdlet (#8103) (Terima kasih @iSazonov!)
  • Aktifkan Add-Content untuk berbagi akses baca dengan alat lain saat menulis konten (#8091)
  • Get/Add-Content melemparkan kesalahan yang ditingkatkan saat menargetkan kontainer (#7823) (Terima kasih @kvprasoon!)
  • Tambahkan -Name, -NoUserOverrides dan -ListAvailable parameter ke Get-Culture cmdlet (#7702) (Terima kasih @iSazonov!)
  • Tambahkan atribut terpadu untuk penyelesaian parameter Pengkodean . (#7732) (Terima kasih @ThreeFive-O!)
  • Izinkan ID numerik dan nama halaman kode terdaftar di parameter Pengkodean (#7636) (Terima kasih @iSazonov!)
  • Perbaiki Rename-Item -Path dengan karakter pengganti (#7398) (Terima kasih @kwkam!)
  • Saat menggunakan Start-Transcript dan file ada, kosongkan file daripada menghapus (#8131) (Terima kasih @paalbra!)
  • Buat Add-Type file sumber terbuka dengan FileAccess.Read dan FileShare.Read secara eksplisit (#7915) (Terima kasih @IISResetMe!)
  • Perbaiki Enter-PSSession -ContainerId untuk Windows terbaru (#7883)
  • Pastikan properti NestedModules diisi oleh Test-ModuleManifest (#7859)
  • Tambahkan %F kasus ke Get-Date -UFormat (#7630) (Terima kasih @britishben!)
  • Memperbaiki Set-Service -Status Stopped untuk menghentikan layanan dengan dependensi (#5525) (Terima kasih @zhenggu!)