Apa yang Baru di PowerShell Core 6.2

Rilis PowerShell Core 6.2 berfokus pada peningkatan performa, perbaikan bug, dan cmdlet dan peningkatan bahasa yang lebih kecil 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 penyempurnaan dan untuk memutuskan apakah fitur tersebut layak dipromisikan ke status mainstream.

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

Saran Perintah Tidak Ditemukan

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

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Contoh

Dalam contoh ini, nama cmdlet yang salah eja cocok dengan beberapa saran dari kemungkinan besar hingga yang 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 pada sistem target. Jika benar, PowerShell menjalankan seluruh alur dari jarak jauh dan hanya menserialisasikan dan de-serializes hasilnya kembali ke klien.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

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

Drive 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 PSDrive yang disebut Temp: yang secara otomatis dipetakan ke folder sementara untuk sistem operasi yang Anda gunakan.

Contoh

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: .

Ekspansi Singkatan

Cmdlet PowerShell diharapkan memiliki kata benda deskriptif. Ini menghasilkan nama panjang yang lebih sulit untuk di ketik. Fitur ini memungkinkan Anda untuk hanya mengetik karakter huruf besar cmdlet dan menggunakan penyelesaian tab untuk menemukan kecocokan.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Contoh

PS> i-arsavsf

Jika Anda menekan tab, dan menginstal modul Az Azure PowerShell, modul tersebut akan lengkapi otomatis untuk:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Catatan

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

Memecahkan Perubahan

  • Perbaiki -NoEnumerate perilaku Write-Output agar konsisten dengan Windows PowerShell. (#9069)
  • Hasilkan Join-String -InputObject 1,2,3 hasil yang 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 detik pecahan (#8537) (Terima kasih @Prototyyppi!)
  • Ubah hashtable untuk menggunakan OrdinalIgnoreCase untuk berada case-insensitive di semua Budaya (#8566)
  • Perbaiki LiteralPath in Import-Csv untuk mengikat output Get-ChildItem (#8277) (Terima kasih @iSazonov!)
  • Tidak lagi melompati kolom tanpa nama jika pembatas kuotasi ganda digunakan di Import-Csv (#7899) (Terima kasih @Topping!)
  • Get-ExperimentalFeature tidak lagi memiliki -ListAvailable switch (#8318)
  • Parameter debug sekarang diatur $DebugPreference ke Lanjutkan alih-alih Inquire (#8195) (Terima kasih @KirkMunro!)
  • Hormati -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)
  • Menghapus tilde dari paket pratinjau Linux (#8244)
  • Memindahkan pemrosesan -WorkingDirectory sebelum memproses profil (#8079)
  • Jangan tambahkan PATHEXT variabel lingkungan pada Unix (#7697) (Terima kasih @iSazonov!)

Masalah Umum

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

Updates dan Perbaikan Umum

  • Aktifkan penyelesaian tab peka huruf besar/kecil untuk file dan folder pada sistem file peka huruf besar/kecil (#8128)
  • Buat PSVersionInfo.PSVersion dan PSVersionInfo.PSEdition publik (#8054) (Terima kasih @KirkMunro!)
  • Tambahkan Type Inference untuk $_ / $PSItem dalam catch{ } blok (#8020) (Terima kasih @vexx32!)
  • Memperbaiki 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 panggilan 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 di non-Windows saat mengimpor clixml dengan securestring (#7997)
  • Menambahkan parameter ReplyTo ke Send-MailMessage (#8727) (Terima kasih @replicaJunction!)
  • Menambahkan pesan Usang ke Send-MailMessage (#9178)
  • Perbaiki Restart-Computer untuk bekerja ketika localhost WinRM tidak ada (#9160)
  • Buat Start-Job kesalahan penghentian lemparan saat PowerShell dihosting (#9128)
  • Tambahkan akselerator jenis gaya C# dan akhiran untuk harfiah ushort, uint, ulong, dan pendek (#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!)
  • Memperbaiki Masalah Request Charset di Web Cmdlets (#8742) (Terima kasih @markekraus!)
  • Memperbaiki masalah Expect 100-continue dengan Web Cmdlets (#8679) (Terima kasih @markekraus!)
  • Memperbaiki masalah pemblokiran file dengan cmdlet web (#7676) (Terima kasih @Claustn!)
  • Memperbaiki masalah penguraian halaman kode di Invoke-RestMethod (#8694) (Terima kasih @markekraus!)
  • Refaktor ConvertTo-Json untuk mengekspos JsonObject.ConvertToJson sebagai API publik (#8682)
  • Tambahkan kedalaman maksimum yang dapat dikonfigurasi ConvertFrom-Json dengan -Depth (#8199) (Terima kasih @louistio!)
  • Tambahkan parameter EscapeHandling di 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)
  • Perbolehkan pengguna Windows dalam mode pengembang untuk membuat symlink tanpa elevasi (#8534)
  • Aktifkan Write-Information untuk menerima $null (#8774)
  • Perbaikan Get-Help untuk fungsi tingkat lanjut dengan konten bantuan MAML (#8353)
  • Perbaiki Get-Help masalah PSTypeName dengan -Parameter ketika hanya satu parameter yang dinyatakan (#8754) (Terima kasih @pougetat!)
  • Perbaikan perhitungan token untuk Get-Help dijalankan di ScriptBlock untuk bantuan komentar. (#8238) (Terima kasih @hubuk!)
  • Ubah Get-Help cmdlet -Parameter parameter sehingga menerima array string (#8454) (Terima kasih @sethvs!)
  • Atasi PAGER jika jalurnya berisi spasi (#8571) (Terima kasih @pougetat!)
  • Tambahkan perintah ke penggunaan less dalam fungsi 'bantuan' untuk menginstruksikan pengguna cara keluar (#7998)
  • Tambahkan jenis enum dan karakter dukungan dalam Format-Hex cmdlet (#8191) (Terima kasih @iSazonov!)
  • Hapus ShouldProcess dari Format-Hex (#8178)
  • Tambahkan parameter Offset dan Count baru ke Format-Hex dan refaktor cmdlet (#7877) (Terima kasih @iSazonov!)
  • Izinkan 'name' sebagai kunci alias untuk 'label' di ConvertTo-Html, izinkan entri 'lebar' menjadi bilangan bulat (#8426) (Terima kasih @mklement0!)
  • Membuat properti terhitung berbasis skrip berfungsi lagi di ConvertTo-Html (#8427) (Terima kasih @mklement0!)
  • Tambahkan cmdlet Join-String untuk membuat teks dari input alur (#7660) (Terima kasih @powercode!)
  • Memperbaiki Join-String logika parameter FormatString cmdlet (#8449) (Terima kasih @sethvs!)
  • Ubah Clear-Host kembali ke penggunaan $RAWUI dan hapus untuk bekerja melalui jarak jauh (#8609)
  • Ubah Clear-Host menjadi hanya dipanggil [console]::clear dan hapus alias yang jelas dari Unix (#8603)
  • Perbaiki LiteralPath in Import-Csv untuk mengikat output Get-ChildItem (#8277) (Terima kasih @iSazonov!)
  • fungsi bantuan 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 pada non-Windows platform (#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$false mengembalikan ketika diberikan nilai kosong atau $null jalur (#8080) (Terima kasih@vexx32!)
  • Izinkan parameter dinamis dikembalikan meskipun jalur tidak cocok dengan penyedia apa pun (#7957)
  • Dukungan Get-PSHostProcessInfo dan Enter-PSHostProcess pada platform Unix (#8232)
  • Kurangi 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 melempar kesalahan yang ditingkatkan saat menargetkan kontainer (#7823) (Terima kasih @kvprasoon!)
  • Tambahkan -Nameparameter , -NoUserOverrides dan -ListAvailable ke Get-Culture cmdlet (#7702) (Terima kasih @iSazonov!)
  • Tambahkan atribut terpadu untuk penyelesaian parameter Pengodean . (#7732) (Terima kasih @ThreeFive-O!)
  • Izinkan Id numerik dan nama halaman kode terdaftar dalam parameter Pengodean (#7636) (Terima kasih @iSazonov!)
  • Perbaiki Rename-Item -Path dengan karakter kartubebas (#7398) (Terima kasih @kwkam!)
  • Saat menggunakan Start-Transcript dan file ada, file kosong daripada menghapus (#8131) (Terima kasih @paalbra!)
  • Membuat Add-Type file sumber terbuka dengan FileAccess.Read dan FileShare.Read secara eksplisit (#7915) (Terima kasih@IISResetMe!)
  • Perbaikan Enter-PSSession -ContainerId untuk Windows terbaru (#7883)
  • Pastikan properti NestedModules diisi oleh Test-ModuleManifest (#7859)
  • Tambahkan %F case ke Get-Date -UFormat (#7630) (Terima kasih @britishben!)
  • Perbaikan Set-Service -Status Stopped untuk menghentikan layanan dengan dependensi (#5525) (Terima kasih @zhenggu!)