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.
Windows PowerShell 5.1 dibangun di atas .NET Framework v4.5. Dengan dirilisnya PowerShell 6.0, PowerShell menjadi proyek sumber terbuka yang dibangun di .NET Core 2.0. Berpindah dari .NET Framework ke .NET Core memungkinkan PowerShell untuk menjadi solusi lintas platform. PowerShell berjalan di Windows, macOS, dan Linux.
Ada beberapa perbedaan dalam bahasa PowerShell antara Windows PowerShell dan PowerShell. Perbedaan yang paling menonjol adalah dalam ketersediaan dan perilaku cmdlet PowerShell antara platform Windows dan non-Windows dan perubahan yang berasal dari perbedaan antara .NET Framework dan .NET Core.
Artikel ini merangkum perbedaan signifikan dan perubahan mendasar antara Windows PowerShell dan versi PowerShell saat ini. Ringkasan ini tidak menyertakan fitur atau cmdlet baru yang telah ditambahkan. Artikel ini juga tidak membahas apa yang berubah antar versi. Tujuan artikel ini adalah untuk menyajikan status PowerShell saat ini dan perbedaannya dengan Windows PowerShell. Untuk diskusi terperinci tentang perubahan antara versi dan penambahan fitur baru, lihat artikel Apa yang Baru untuk setiap versi.
- Apa yang baru dalam PowerShell 7.5
- Apa yang baru di PowerShell 7.4
- Apa yang baru di PowerShell 7.3
- Apa yang baru dalam PowerShell 7.2
- Apa yang baru dalam PowerShell 7.1
- Apa yang baru di PowerShell 7.0
- Apa yang baru di PowerShell 6.x
.NET Framework vs .NET Core
PowerShell di Linux dan macOS menggunakan .NET core, yang merupakan subset dari .NET Framework lengkap di Microsoft Windows. Ini signifikan karena PowerShell menyediakan akses langsung ke jenis dan metode kerangka kerja yang mendasar. Akibatnya, skrip yang berjalan pada Windows mungkin tidak berjalan pada platform non-Windows karena perbedaan dalam kerangka kerja. Untuk informasi selengkapnya tentang perubahan di .NET Core, lihat Perubahan signifikan untuk migrasi dari .NET Framework ke .NET Core.
Setiap rilis baru PowerShell dibangun pada versi .NET yang lebih baru. Mungkin ada perubahan mencolok di .NET yang memengaruhi PowerShell.
- PowerShell 7.5 - Dibangun di .NET 9.0
- PowerShell 7.4 - Dibangun di .NET 8.0
- PowerShell 7.3 - Dibangun di .NET 7.0
- PowerShell 7.2 (LTS-current) - Dibangun di .NET 6.0 (LTS-current)
- PowerShell 7.1 - Dibangun di .NET 5.0
- PowerShell 7.0 (LTS) - Dibangun di .NET Core 3.1 (LTS)
- PowerShell 6.2 - Dibangun di .NET Core 2.1
- PowerShell 6.1 - Dibangun di .NET Core 2.1
- PowerShell 6.0 - Dibangun di .NET Core 2.0
Dengan munculnya .NET Standard 2.0, PowerShell dapat memuat banyak modul Windows PowerShell tradisional tanpa modifikasi. Selain itu, PowerShell 7 menyertakan fitur Kompatibilitas Windows PowerShell yang memungkinkan Anda menggunakan modul Windows PowerShell yang masih memerlukan kerangka kerja lengkap.
Untuk informasi selengkapnya, lihat:
- tentang_Kompatibilitas_Windows_PowerShell
- kompatibilitas modul PowerShell 7
Waspadai perubahan metode .NET
Meskipun perubahan metode .NET tidak spesifik untuk PowerShell, perubahan tersebut dapat memengaruhi skrip Anda, terutama jika Anda memanggil metode .NET secara langsung. Selain itu, mungkin ada kelebihan beban baru untuk konstruktor. Ini dapat berdampak pada cara Anda membuat objek menggunakan New-Object atau metode [type]::new().
Misalnya, .NET menambahkan kelebihan beban ke metode [System.String]::Split() yang tidak tersedia di .NET Framework 4.5. Daftar berikut ini memperlihatkan kelebihan beban untuk metode Split() yang tersedia di Windows PowerShell 5.1:
PS> "".Split
OverloadDefinitions
-------------------
string[] Split(Params char[] separator)
string[] Split(char[] separator, int count)
string[] Split(char[] separator, System.StringSplitOptions options)
string[] Split(char[] separator, int count, System.StringSplitOptions options)
string[] Split(string[] separator, System.StringSplitOptions options)
string[] Split(string[] separator, int count, System.StringSplitOptions options)
Daftar berikut ini memperlihatkan kelebihan beban untuk metode Split() yang tersedia di PowerShell 7:
"".Split
OverloadDefinitions
-------------------
string[] Split(char separator, System.StringSplitOptions options)
string[] Split(char separator, int count, System.StringSplitOptions options)
string[] Split(Params char[] separator)
string[] Split(char[] separator, int count)
string[] Split(char[] separator, System.StringSplitOptions options)
string[] Split(char[] separator, int count, System.StringSplitOptions options)
string[] Split(string separator, System.StringSplitOptions options)
string[] Split(string separator, int count, System.StringSplitOptions options)
string[] Split(string[] separator, System.StringSplitOptions options)
string[] Split(string[] separator, int count, System.StringSplitOptions options)
Di Windows PowerShell 5.1, Anda dapat meneruskan array karakter (char[]) ke metode Split() sebagai string. Metode ini membagi string target pada setiap kemunculan karakter dalam array. Perintah berikut membagi string target di Windows PowerShell 5.1, tetapi tidak di PowerShell 7:
# PowerShell 7 example
"1111p2222q3333".Split('pq')
1111p2222q3333
Untuk mengikat ke kelebihan beban yang benar, Anda harus mengetik string ke array karakter:
# PowerShell 7 example
"1111p2222q3333".Split([char[]]'pq')
1111
2222
3333
Modul tidak lagi dikirim dengan PowerShell
Untuk berbagai alasan kompatibilitas, modul berikut tidak lagi disertakan dalam PowerShell.
- ISE
- Microsoft.PowerShell.LocalAccounts
- Microsoft.PowerShell.ODataUtils
- Microsoft.PowerShell.Operasi.Validasi
- PSScheduledJob
- PSWorkflow
- PSWorkflowUtility
PowerShell Workflow
Alur Kerja PowerShell adalah fitur di Windows PowerShell yang dibangun di atas Windows Workflow Foundation (WF) yang memungkinkan pembuatan runbook yang andal untuk tugas yang berlangsung lama atau diparalelkan.
Karena kurangnya dukungan untuk Windows Workflow Foundation di .NET Core, kami menghapus Alur Kerja PowerShell dari PowerShell.
Di masa mendatang, kami ingin mengaktifkan paralelisme/konkurensi asli dalam bahasa PowerShell tanpa perlu PowerShell Workflow.
Jika ada kebutuhan untuk menggunakan titik pemeriksaan untuk melanjutkan skrip setelah OS dimulai ulang, sebaiknya gunakan Penjadwal Tugas untuk menjalankan skrip pada startup OS, tetapi skrip harus mempertahankan statusnya sendiri (seperti mempertahankannya ke file).
Cmdlet dihapus dari PowerShell
Untuk modul yang disertakan dalam PowerShell, cmdlet berikut dihapus dari PowerShell karena berbagai alasan kompatibilitas atau penggunaan API yang tidak didukung.
CimCmdlets
Export-BinaryMiLog
Microsoft.PowerShell.Core
Add-PSSnapinExport-ConsoleGet-PSSnapinRemove-PSSnapinResume-JobSuspend-Job
Microsoft.PowerShell.Diagnostics
Export-CounterImport-Counter
Microsoft.PowerShell.Management
Add-ComputerCheckpoint-ComputerClear-EventLogComplete-TransactionDisable-ComputerRestoreEnable-ComputerRestoreGet-ComputerRestorePointGet-ControlPanelItemGet-EventLogGet-TransactionGet-WmiObjectInvoke-WmiMethodLimit-EventLogNew-EventLogNew-WebServiceProxyRegister-WmiEventRemove-ComputerRemove-EventLogRemove-WmiObjectReset-ComputerMachinePasswordRestore-ComputerSet-WmiInstanceShow-ControlPanelItemShow-EventLogStart-TransactionTest-ComputerSecureChannelUndo-TransactionUse-TransactionWrite-EventLog
Microsoft.PowerShell.Utility
Convert-StringConvertFrom-String
PSDesiredStateConfiguration
Disable-DscDebugEnable-DscDebugGet-DscConfigurationGet-DscConfigurationStatusGet-DscLocalConfigurationManagerPublish-DscConfigurationRemove-DscConfigurationDocumentRestore-DscConfigurationSet-DscLocalConfigurationManagerStart-DscConfigurationStop-DscConfigurationTest-DscConfigurationUpdate-DscConfiguration
Cmdlet WMI v1
Cmdlet WMI v1 berikut dihapus dari PowerShell:
Register-WmiEventSet-WmiInstanceInvoke-WmiMethodGet-WmiObjectRemove-WmiObject
Cmdlet modul CimCmdlets (juga dikenal sebagai WMI v2) memiliki fungsi yang sama dan menyediakan fungsionalitas baru serta sintaksis yang didesain ulang.
New-WebServiceProxy cmdlet telah dihapus
.NET Core tidak mendukung Windows Communication Framework, yang menyediakan layanan untuk menggunakan protokol SOAP. Cmdlet ini dihapus karena membutuhkan SOAP.
cmdlet *-Transaction dihapus
Cmdlet ini memiliki penggunaan yang sangat terbatas. Keputusan tersebut dibuat untuk menghentikan dukungan bagi mereka.
Complete-TransactionGet-TransactionStart-TransactionUndo-TransactionUse-Transaction
*-EventLog cmdlet
Karena penggunaan API yang tidak didukung, cmdlet *-EventLog telah dihapus dari PowerShell.
Get-WinEvent dan New-WinEvent tersedia untuk mengambil dan membuat event di Windows.
Cmdlet yang menggunakan Windows Presentation Framework (WPF)
.NET Core 3.1 menambahkan dukungan untuk WPF, sehingga rilis PowerShell 7.0 memulihkan fitur khusus Windows berikut:
- Cmdlet
Show-Command - Cmdlet
Out-GridView - Parameter ShowWindow dari
Get-Help
Perubahan Konfigurasi Status yang Diinginkan PowerShell (DSC)
Invoke-DscResource dipulihkan sebagai fitur eksperimental di PowerShell 7.0.
Dimulai dengan PowerShell 7.2, modul PSDesiredStateConfiguration telah dihapus dari PowerShell dan telah diterbitkan ke Galeri PowerShell. Untuk informasi selengkapnya, lihat pengumuman di blog Tim PowerShell.
Perubahan eksekusi PowerShell
Mengganti nama powershell.exe menjadi pwsh.exe
Nama biner untuk PowerShell telah diubah dari powershell(.exe) menjadi pwsh(.exe). Perubahan ini menyediakan cara deterministik bagi pengguna untuk menjalankan PowerShell pada mesin dan mendukung penginstalan Windows PowerShell dan PowerShell secara berdampingan.
Perubahan tambahan pada pwsh(.exe) dari powershell.exe:
- Mengubah parameter posisi pertama dari
-Commandmenjadi-File. Perubahan ini memperbaiki penggunaan#!(yang juga dikenal sebagai shebang) dalam skrip PowerShell yang sedang dieksekusi dari dalam shell selain PowerShell di platform non-Windows. Ini juga berarti Bahwa Anda dapat menjalankan perintah sepertipwsh foo.ps1ataupwsh fooScripttanpa menentukan-File. Namun, perubahan ini mengharuskan Anda secara eksplisit menentukan-catau-Commandsaat mencoba menjalankan perintah sepertipwsh.exe -Command Get-Command. -
pwshmenerima opsi-i(atau-Interactive) untuk menunjukkan shell interaktif. Ini memungkinkan PowerShell digunakan sebagai shell default pada platform Unix. - Telah menghapus parameter
-ImportSystemModulesdan-PSConsoleFiledaripwsh.exe. - Mengubah
pwsh -Versiondan bantuan bawaan untukpwsh.exeagar selaras dengan alat asli lainnya. - Pesan kesalahan argumen tidak valid untuk
-Filedan-Commandserta kode keluaran yang konsisten dengan standar Unix. - Menambahkan parameter
-WindowStylepada Windows. Demikian pula, pembaruan penginstalan berbasis paket pada platform non-Windows adalah pembaruan di tempat.
Nama yang dipersingkat juga konsisten dengan penamaan shell pada platform non-Windows.
Mendukung menjalankan skrip PowerShell dengan parameter bool
Sebelumnya, menggunakan pwsh.exe untuk menjalankan skrip PowerShell menggunakan -File tidak menyediakan cara untuk meneruskan $true/$false sebagai nilai parameter. Dukungan untuk $true/$false sebagai nilai yang diurai ke parameter ditambahkan. Nilai switch juga didukung.
Peningkatan kompatibilitas mundur untuk Windows PowerShell
Untuk Windows, parameter sakelar baru UseWindowsPowerShell ditambahkan ke Import-Module. Sakelar ini membuat modul proksi di PowerShell 7 yang menggunakan proses Windows PowerShell lokal untuk menjalankan cmdlet apa pun yang terkandung dalam modul tersebut secara implisit. Untuk informasi selengkapnya, lihat Import-Module .
Untuk informasi selengkapnya tentang modul Microsoft yang bekerja dengan PowerShell 7.0, lihat Tabel Kompatibilitas Modul .
Dukungan Microsoft Update untuk Windows
PowerShell 7.2 menambahkan dukungan untuk Microsoft Update. Saat mengaktifkan fitur ini, Anda akan mendapatkan pembaruan PowerShell 7 terbaru dalam alur manajemen Windows Update (WU) tradisional Anda, baik itu dengan Windows Update for Business, WSUS, SCCM, atau dialog WU interaktif di Pengaturan.
Paket MSI PowerShell 7.2 menyertakan opsi baris perintah berikut:
-
USE_MU- Properti ini memiliki dua nilai yang mungkin:-
1(default) - Memilih memperbarui melalui Pembaruan Microsoft atau WSUS -
0- Jangan memilih untuk memperbarui melalui Pembaruan Microsoft atau WSUS
-
ENABLE_MU-
1(standar) - Memilih untuk menggunakan Pembaruan Microsoft, Pembaruan Otomatis, atau Pembaruan Windows -
0- Jangan memilih menggunakan Pembaruan Microsoft, Pembaruan Otomatis, atau Pembaruan Windows
-
Perubahan mesin
Mendukung PowerShell sebagai shell Unix default
Di Unix, ini adalah konvensi bagi shell untuk menerima -i untuk shell interaktif dan banyak alat mengharapkan perilaku ini (script misalnya, dan saat mengatur PowerShell sebagai shell default) dan memanggil shell dengan sakelar -i. Perubahan ini mengubah cara -i yang sebelumnya dapat digunakan sebagai cara singkat untuk mencocokkan -InputFormat, yang sekarang perlu menjadi -in.
Snap-in kustom
PowerShell snap-ins adalah pendahulu modul PowerShell yang tidak diadopsi secara luas di komunitas PowerShell.
Karena kompleksitas mendukung snap-in dan kurangnya penggunaannya di komunitas, kami tidak lagi mendukung snap-in kustom di PowerShell.
Penanda fitur eksperimental
PowerShell 6.2 mengaktifkan dukungan untuk fitur eksperimental . Ini memungkinkan pengembang PowerShell untuk memberikan fitur baru dan mendapatkan umpan balik sebelum desain selesai. Dengan cara ini kita menghindari membuat perubahan signifikan saat desain berkembang.
Gunakan Get-ExperimentalFeature untuk mendapatkan daftar fitur eksperimental yang tersedia. Anda dapat mengaktifkan atau menonaktifkan fitur-fitur ini dengan Enable-ExperimentalFeature dan Disable-ExperimentalFeature.
Muat rakitan dari jalur dasar modul sebelum mencoba memuat dari GAC
Sebelumnya, ketika modul biner memiliki perakitan modul di GAC, kami memuat rakitan dari GAC sebelum mencoba memuatnya dari jalur dasar modul.
Lewati pemeriksaan elemen null untuk koleksi dengan tipe elemen bertipe nilai
Untuk parameter Mandatory dan atribut ValidateNotNull dan ValidateNotNullOrEmpty, abaikan pemeriksaan elemen null jika tipe elemen koleksi adalah tipe nilai.
Pertahankan $? untuk ParenExpression, SubExpression, dan ArrayExpression
PR ini mengubah cara kita mengompilasi subpipeline (...), subekspresi $(...) dan ekspresi array @() sehingga $? tidak secara otomatis benar. Sebaliknya, nilai $? tergantung pada hasil alur atau pernyataan yang dijalankan.
Perbaiki $? agar tidak menjadi $false saat perintah asli menulis ke stderr
$? tidak diatur ke $false ketika perintah bawaan menulis ke stderr. Adalah umum bagi perintah bawaan untuk menulis ke stderr tanpa berniat menunjukkan kegagalan.
$? diatur ke $false hanya ketika perintah asli memiliki kode keluar bukan nol.
Membuat $ErrorActionPreference tidak memengaruhi output stderr dari perintah asli
Adalah umum bagi perintah bawaan untuk menulis ke stderr tanpa bermaksud menunjukkan kegagalan. Dengan perubahan ini, output stderr masih diambil dalam objek ErrorRecord, tetapi runtime tidak lagi diterapkan $ErrorActionPreference jika ErrorRecord berasal dari perintah asli.
Mengubah $OutputEncoding untuk menggunakan pengodean UTF-8 NoBOM daripada ASCII
Pengodean sebelumnya, ASCII (7-bit), akan mengakibatkan perubahan output yang salah dalam beberapa kasus. Menjadikan UTF-8 NoBOM sebagai default akan mempertahankan output Unicode dengan pengodean yang didukung oleh sebagian besar alat dan sistem operasi.
Menyatukan cmdlet dengan parameter -Encoding menjadi berjenis System.Text.Encoding
Nilai -EncodingByte telah dihapus dari cmdlet penyedia FileSystem. Parameter baru, -AsByteStream, sekarang digunakan untuk menentukan bahwa aliran byte diperlukan sebagai input atau bahwa output adalah deretan byte.
Mengubah pengodean New-ModuleManifest ke UTF8NoBOM pada platform non-Windows
Sebelumnya, New-ModuleManifest membuat manifes psd1 di UTF-16 dengan BOM, menimbulkan masalah pada alat-alat Linux. Perubahan signifikan ini mengubah pengodean New-ModuleManifest menjadi UTF tanpa BOM di platform non-Windows.
Menghapus AllScope dari sebagian besar alias default
Untuk mempercepat pembuatan cakupan, AllScope dihapus dari sebagian besar alias default.
AllScope dibiarkan untuk beberapa alias yang sering digunakan di mana pencarian lebih cepat.
-Verbose dan -Debug tidak lagi mengambil alih $ErrorActionPreference
Sebelumnya, jika -Verbose atau -Debug ditentukan, itu akan menimpa efek dari perilaku $ErrorActionPreference. Dengan perubahan ini, -Verbose dan -Debug tidak lagi memengaruhi perilaku $ErrorActionPreference.
Selain itu, parameter -Debug mengatur $DebugPreference ke Lanjutkan alih-alih Bertanya.
Membuat $PSCulture secara konsisten mencerminkan perubahan budaya selama sesi
Di Windows PowerShell, nilai kultur saat ini di-cache, yang dapat memungkinkan nilai untuk tidak sesuai dengan kultur berubah setelah sesi-startup. Perilaku caching ini diperbaiki di PowerShell Core.
Izinkan parameter bernama yang ditentukan secara eksplisit untuk menggantikan parameter yang sama dari percikan hashtable
Dengan perubahan ini, parameter bernama dari splatting dipindahkan ke akhir daftar parameter sehingga mereka terikat setelah semua parameter bernama yang ditentukan secara eksplisit terikat. Pengikatan parameter untuk fungsi sederhana tidak melemparkan kesalahan ketika parameter bernama tertentu tidak dapat ditemukan. Parameter bernama yang tidak diketahui terikat ke parameter $args fungsi sederhana. Dengan memindahkan splatting ke akhir daftar argumen, urutan parameter yang muncul di $argsberubah.
Contohnya:
function SimpleTest {
param(
$Name,
$Path
)
"Name: $Name; Path: $Path; Args: $args"
}
Dalam perilaku sebelumnya, MyPath tidak terikat ke -Path karena ini adalah argumen ketiga dalam daftar argumen. ## Jadi akhirnya dimasukkan ke dalam '$args' bersama dengan Blah = "World"
PS> $hash = @{ Name = "Hello"; Blah = "World" }
PS> SimpleTest @hash "MyPath"
Name: Hello; Path: ; Args: -Blah: World MyPath
Dengan perubahan ini, argumen dari @hash dipindahkan ke akhir daftar argumen.
MyPath menjadi argumen pertama dalam daftar, sehingga terikat ke -Path.
PS> SimpleTest @hash "MyPath"
Name: Hello; Path: MyPath; Args: -Blah: World
Perubahan bahasa
Operator penggabungan-null ??
Operator null-coalescing ?? mengembalikan nilai operand sebelah kirinya jika bukan null.
Jika tidak, sistem akan mengevaluasi operand di sisi kanan dan mengembalikan hasilnya. Operator ?? tidak mengevaluasi operand kanannya jika operand kiri bernilai non-null.
$x = $null
$x ?? 100
100
Dalam contoh berikut, operand sebelah kanan tidak akan dievaluasi.
[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020
Operator penugasan null-coalescing ??=
Operator penugasan null-coalescing ??= menetapkan nilai operand kanannya ke operand kirinya hanya jika operand kirinya bernilai null. Operator ??= tidak mengevaluasi operand kanannya jika operand kiri bernilai non-null.
$x = $null
$x ??= 100
$x
100
Dalam contoh berikut, operand sebelah kanan tidak akan dievaluasi.
[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020
Operator bersyarat null
Nota
Fitur ini dipindahkan dari eksperimental ke mainstream di PowerShell 7.1.
Operator bersyarat-null menerapkan akses anggota, ?., atau akses elemen, ?[], operasi pada operannya hanya jika operand tersebut mengevaluasi ke non-null; jika tidak, mengembalikan null.
Karena PowerShell memungkinkan ? menjadi bagian dari nama variabel, spesifikasi formal dari nama variabel diperlukan untuk menggunakan operator ini. Jadi diperlukan untuk menggunakan {} di sekitar nama variabel seperti ${a} atau ketika ? adalah bagian dari nama variabel ${a?}.
Dalam contoh berikut, nilai PropName dikembalikan.
$a = @{ PropName = 100 }
${a}?.PropName
100
Contoh berikut akan mengembalikan null, tanpa mencoba mengakses nama anggota PropName.
$a = $null
${a}?.PropName
Demikian pula, nilai elemen akan dikembalikan.
$a = 1..10
${a}?[0]
1
Dan ketika operand adalah null, elemen tidak diakses dan null dikembalikan.
$a = $null
${a}?[0]
Nota
Sintaks nama variabel ${<name>} tidak boleh dikacaukan dengan operator subekspresi $(). Untuk informasi selengkapnya, lihat Bagian nama variabel about_Variables.
Menambahkan operator & untuk kontrol pekerjaan
Menempatkan & di akhir pipeline menyebabkan pipeline dijalankan sebagai pekerjaan PowerShell. Saat sebuah pipeline dijalankan di latar belakang, sebuah objek pekerjaan dikembalikan. Setelah alur kerja berjalan sebagai tugas, semua cmdlet *-Job standar dapat digunakan untuk mengelola tugas. Variabel (mengabaikan variabel khusus proses) yang digunakan dalam pipeline secara otomatis disalin ke pekerjaan agar Copy-Item $foo $bar & berjalan dengan benar. Pekerjaan ini juga dijalankan di direktori saat ini alih-alih direktori beranda pengguna.
Metode/properti baru pada PSCustomObject
Kami telah menambahkan metode dan properti baru ke PSCustomObject.
PSCustomObject sekarang menyertakan properti Count/Length seperti objek lain.
$PSCustomObject = [pscustomobject]@{foo = 1}
$PSCustomObject.Length
1
$PSCustomObject.Count
1
Pekerjaan ini juga mencakup metode ForEach dan Where yang memungkinkan Anda mengoperasikan dan memfilter item PSCustomObject:
$PSCustomObject.ForEach({$_.foo + 1})
2
$PSCustomObject.Where({$_.foo -gt 0})
foo
---
1
Konversi dari PSMethod ke Delegat
Anda dapat mengonversi PSMethod menjadi delegasi. Ini memungkinkan Anda melakukan hal-hal seperti meneruskan PSMethod[M]::DoubleStrLen sebagai nilai delegasi ke dalam [M]::AggregateString:
class M {
static [int] DoubleStrLen([string] $value) { return 2 * $value.Length }
static [long] AggregateString([string[]] $values, [Func[string, int]] $selector) {
[long] $res = 0
foreach($s in $values){
$res += $selector.Invoke($s)
}
return $res
}
}
[M]::AggregateString((gci).Name, [M]::DoubleStrLen)
Perilaku perbandingan string berubah di PowerShell 7.1
PowerShell 7.1 dibangun di .NET 5.0, yang memperkenalkan perubahan yang melanggar berikut:
Sejak .NET 5.0, perbandingan string yang tidak bergantung pada budaya mengabaikan karakter kontrol non-pencetakan.
Misalnya, dua string berikut dianggap identik:
# Escape sequence "`a" is Ctrl-G or [char]7
'Food' -eq "Foo`ad"
True
Cmdlet baru
Cmdlet Get-Uptime baru
Cmdlet Get-Uptime mengembalikan waktu yang berlalu sejak sistem operasi terakhir kali di-boot. Cmdlet diperkenalkan di PowerShell 6.0.
Cmdlet Remove-Alias baru
Cmdlet Remove-Alias menghapus alias dari sesi PowerShell saat ini. Cmdlet diperkenalkan di PowerShell 6.0.
Cmdlet baru Remove-Service
cmdlet Remove-Service menghapus layanan Windows di registri dan di database layanan. Cmdlet Remove-Service diperkenalkan di PowerShell 6.0.
Cmdlet Markdown Baru
Markdown adalah standar untuk membuat dokumen teks biasa yang dapat dibaca dengan pemformatan dasar yang dapat dirender ke dalam HTML.
Cmdlet berikut ditambahkan di PowerShell 6.1:
- ConvertFrom-Markdown - Mengonversi konten string atau file menjadi objek MarkdownInfo.
- Get-MarkdownOption - Menampilkan warna dan gaya saat ini yang digunakan untuk merender konten Markdown di konsol.
- Set-MarkdownOption - Mengatur warna dan gaya yang digunakan untuk merender konten Markdown di konsol.
- Show-Markdown - Menampilkan konten Markdown di dalam konsol atau sebagai HTML
Cmdlet Test-Json baru
cmdlet Test-Json menguji apakah string adalah dokumen JavaScript Object Notation (JSON) yang valid dan dapat secara opsional memverifikasi bahwa dokumen JSON terhadap skema yang disediakan.
Cmdlet ini diperkenalkan di PowerShell 6.1
Cmdlet baru untuk mendukung Fitur Eksperimental
Cmdlet berikut ditambahkan di PowerShell 6.2 untuk mendukung Fitur Eksperimental.
- Nonaktifkan-FiturEksperimental
- Aktifkan-FiturEksperimental
- Get-ExperimentalFeature
Cmdlet baru Join-String
Cmdlet Join-String menggabungkan objek dari alur menjadi satu string. Cmdlet ini ditambahkan di PowerShell 6.2.
Tampilan baru ConciseView dan cmdlet Get-Error
PowerShell 7.0 meningkatkan tampilan pesan kesalahan untuk meningkatkan keterbacaan kesalahan interaktif dan skrip dengan tampilan default baru, ConciseView. Tampilan dapat dipilih pengguna melalui variabel preferensi $ErrorView.
Dengan ConciseView, jika kesalahan bukan dari kesalahan skrip atau pengurai, maka itu adalah pesan kesalahan satu baris:
Get-ChildItem -Path C:\NotReal
Get-ChildItem: Cannot find path 'C:\NotReal' because it does not exist
Jika kesalahan terjadi selama eksekusi skrip atau merupakan kesalahan penguraian, PowerShell mengembalikan pesan kesalahan multibaris yang berisi kesalahan, penunjuk, dan pesan kesalahan yang menunjukkan di mana kesalahan berada di baris tersebut. Jika terminal tidak mendukung urutan escape warna ANSI (VT100), maka warna tidak ditampilkan.
Tampilan default di PowerShell 7 adalah ConciseView. Tampilan default sebelumnya adalah NormalView dan Anda dapat memilih ini dengan mengatur variabel preferensi $ErrorView.
$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView
Nota
Properti baru ErrorAccentColor ditambahkan ke $Host.PrivateData untuk mendukung perubahan warna aksen pesan kesalahan.
Cmdlet Get-Erroryang baru menyediakan tampilan terperinci dan lengkap dari kesalahan yang terdefinisi secara penuh ketika diinginkan. Secara default cmdlet menampilkan detail lengkap, termasuk pengecualian dalam, dari kesalahan terakhir yang terjadi.
Cmdlet Get-Error mendukung input dari alur menggunakan variabel bawaan $Error.
Get-Error menampilkan semua kesalahan yang dialirkan.
$Error | Get-Error
Cmdlet Get-Error mendukung parameter Terbaru, memungkinkan Anda menentukan berapa banyak kesalahan dari sesi saat ini yang ingin Anda tampilkan.
Get-Error -Newest 3 # Displays the lst three errors that occurred in the session
Untuk informasi selengkapnya, lihat Get-Error.
Perubahan cmdlet
Eksekusi paralel ditambahkan ke ForEach-Object
Dimulai pada PowerShell 7.0, cmdlet ForEach-Object, yang mengiterasi item-item dalam koleksi, sekarang memiliki paralelisme terintegrasi dengan parameter Paralel baru.
Secara default, blok skrip paralel menggunakan direktori kerja pemanggil saat ini yang memulai tugas paralel.
Contoh ini mengambil 50.000 entri log dari 5 log sistem pada komputer Windows lokal:
$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'
$logEntries = $logNames | ForEach-Object -Parallel {
Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5
$logEntries.Count
50000
Parameter Paralel menentukan blok skrip yang dijalankan secara paralel untuk setiap nama log input.
Parameter ThrottleLimit baru membatasi jumlah blok skrip yang berjalan secara paralel pada waktu tertentu. Pengaturan awal adalah 5.
Gunakan variabel $_ untuk mewakili objek input saat ini di blok skrip. Gunakan pengubah cakupan Using: untuk meneruskan referensi variabel ke blok skrip yang sedang berjalan.
Untuk informasi selengkapnya, lihat ForEach-Object.
Periksa modul bawaan yang kompatibel system32 di Windows
Dalam pembaruan Windows 10 1809 dan Windows Server 2019, kami memperbarui sejumlah modul PowerShell bawaan untuk menandainya sebagai kompatibel dengan PowerShell.
Saat PowerShell dimulai, PowerShell secara otomatis menyertakan $windir\System32 sebagai bagian dari variabel lingkungan PSModulePath. Namun, ini hanya mengekspos modul ke Get-Module dan Import-Module jika CompatiblePSEdition ditandai sebagai kompatibel dengan Core.
Anda dapat mengambil alih perilaku ini untuk menampilkan semua modul menggunakan parameter sakelar -SkipEditionCheck.
Kami juga telah menambahkan properti PSEdition ke output tabel.
alias -lp untuk semua parameter -LiteralPath
Kami membuat alias parameter standar -lp untuk semua cmdlet PowerShell bawaan yang memiliki parameter -LiteralPath.
Perbaiki Get-Item -LiteralPath a*b jika a*b tidak benar-benar ada untuk mengembalikan kesalahan
Sebelumnya, -LiteralPath yang diberikan wildcard akan memperlakukannya sama dengan -Path dan jika wildcard tidak menemukan file, maka akan keluar tanpa pemberitahuan. Perilaku yang benar adalah bahwa -LiteralPath bersifat literal, jadi jika file tidak ada, itu harus menampilkan kesalahan. Perubahan adalah memperlakukan kartubebas yang digunakan dengan -Literal sebagai harfiah.
Atur direktori kerja ke direktori saat ini di Start-Job
Cmdlet Start-Job sekarang menggunakan direktori saat ini sebagai direktori kerja untuk pekerjaan baru.
Menghapus -Protocol dari cmdlet *-Computer
Karena masalah dengan remoting RPC di CoreFX (terutama pada platform non-Windows) dan untuk memastikan pengalaman remot yang konsisten di PowerShell, parameter -Protocol telah dihapus dari cmdlet \*-Computer. DCOM tidak lagi didukung untuk pengaksesan jarak jauh. Cmdlet berikut hanya khusus mendukung pengendalian jarak jauh WSMAN.
Rename-ComputerRestart-ComputerStop-Computer
Menghapus -ComputerName dari cmdlet *-Service
Untuk mendorong penggunaan PSRP yang konsisten, parameter -ComputerName dihapus dari cmdlet *-Service.
Perbaiki Get-Content -Delimiter untuk tidak menyertakan pemisah dalam baris yang dikembalikan
Sebelumnya, output saat menggunakan Get-Content -Delimiter tidak konsisten dan tidak nyaman karena diperlukan pemrosesan data lebih lanjut untuk menghapus pemisah. Perubahan ini menghapus pemisah di baris yang dikembalikan.
Perubahan pada Format-Hex
Parameter -Raw sekarang menjadi "no-op" (karena tidak melakukan apa pun). Mulai sekarang semua output ditampilkan dengan representasi angka yang akurat yang mencakup semua byte untuk jenisnya. Inilah yang dilakukan parameter -Raw sebelum perubahan ini.
Perbaikan kesalahan ketik dalam nama properti Get-ComputerInfo
BiosSerialNumber salah eja sebagai BiosSeralNumber dan telah diubah ke ejaan yang benar.
Menambahkan cmdlet Get-StringHash dan Get-FileHash
Perubahan ini adalah bahwa beberapa algoritma hash tidak didukung oleh CoreFX, oleh karena itu mereka tidak lagi tersedia:
MACTripleDESRIPEMD160
Menambahkan validasi pada cmdlet Get-* di mana meneruskan $null mengembalikan semua objek alih-alih kesalahan
Meneruskan $null ke salah satu hal berikut ini sekarang melemparkan kesalahan:
Get-Credential -UserNameGet-Event -SourceIdentifierGet-EventSubscriber -SourceIdentifierGet-Help -NameGet-PSBreakpoint -ScriptGet-PSProvider -PSProviderGet-PSSessionConfiguration -NameGet-Runspace -NameGet-RunspaceDebug -RunspaceNameGet-Service -NameGet-TraceSource -NameGet-Variable -Name
Menambahkan dukungan untuk Format File Log Yang Diperluas W3C di Import-Csv
Sebelumnya, cmdlet Import-Csv tidak dapat digunakan untuk mengimpor file log secara langsung dalam format log yang diperluas W3C dan tindakan tambahan akan diperlukan. Dengan perubahan ini, format log yang diperluas W3C didukung.
Import-Csv menerapkan pstypenames ketika mengimpor, jika informasi jenis ada di CSV
Sebelumnya, objek yang diekspor menggunakan Export-Csv dengan TypeInformation diimpor dengan ConvertFrom-Csv tidak menyimpan informasi jenis. Perubahan ini menambahkan informasi jenis ke anggota pstypenames jika tersedia dari file CSV.
-NoTypeInformation adalah default pada Export-Csv
Sebelumnya, cmdlet Export-Csv akan menghasilkan komentar sebagai baris pertama yang berisi nama jenis objek. Perubahan mengecualikan informasi jenis secara default karena tidak dipahami oleh sebagian besar alat CSV. Perubahan ini dilakukan untuk mengatasi umpan balik pelanggan.
Gunakan -IncludeTypeInformation untuk mempertahankan perilaku sebelumnya.
Izinkan * digunakan dalam jalur registri untuk Remove-Item
Sebelumnya, -LiteralPath yang diberikan wildcard akan memperlakukannya sama dengan -Path dan jika wildcard tidak menemukan file, itu akan keluar secara diam-diam. Perilaku yang benar adalah -LiteralPath dianggap sebagai literal, sehingga jika file tidak ada, seharusnya menghasilkan kesalahan. Perubahan ini adalah memperlakukan karakter pengganti yang digunakan dengan -Literal secara harfiah.
Group-Object sekarang mengurutkan grup
Sebagai bagian dari peningkatan performa, Group-Object sekarang mengembalikan daftar grup yang diurutkan.
Meskipun Anda tidak boleh mengandalkan urutan, Anda bisa terpengaruh oleh perubahan ini jika Anda menginginkan grup pertama. Kami memutuskan bahwa peningkatan performa ini sepadan dengan perubahan karena dampak tergantung pada perilaku sebelumnya rendah.
Deviasi standar dalam Measure-Object
Keluaran dari Measure-Object kini menyertakan properti StandardDeviation.
Get-Process | Measure-Object -Property CPU -AllStats
Count : 308
Average : 31.3720576298701
Sum : 9662.59375
Maximum : 4416.046875
Minimum :
StandardDeviation : 264.389544720926
Property : CPU
Get-PfxCertificate -Password
Get-PfxCertificate sekarang memiliki parameter Password, yang memerlukan SecureString. Ini memungkinkan Anda untuk menggunakannya secara non-interaktif:
$certFile = '\\server\share\pwd-protected.pfx'
$certPass = Read-Host -AsSecureString -Prompt 'Enter the password for certificate: '
$certThumbPrint = (Get-PfxCertificate -FilePath $certFile -Password $certPass ).ThumbPrint
Penghapusan fungsi more
Di masa lalu, PowerShell mengirimkan fungsi pada Windows yang disebut more yang dibungkus more.com. Fungsi itu sekarang telah dihapus.
Selain itu, fungsi help berubah untuk menggunakan more.com di Windows, atau pager default sistem yang ditentukan oleh $Env:PAGER pada platform non-Windows.
cd DriveName: sekarang mengembalikan pengguna ke direktori kerja saat ini di drive tersebut
Sebelumnya, menggunakan Set-Location atau cd untuk kembali ke PSDrive yang mengirim pengguna ke lokasi default untuk drive tersebut. Pengguna sekarang diarahkan ke direktori kerja terakhir yang diketahui untuk sesi tersebut.
cd - kembali ke direktori sebelumnya
C:\Windows\System32> cd C:\
C:\> cd -
C:\Windows\System32>
Atau di Linux:
PS /etc> cd /usr/bin
PS /usr/bin> cd -
PS /etc>
Selain itu, cd dan cd -- berubah menjadi $HOME.
Update-Help sebagai non-admin
Karena permintaan yang tinggi, Update-Help tidak perlu lagi dijalankan dengan hak administrator.
Update-Help sekarang secara default menyimpan bantuan ke folder khusus pengguna.
Where-Object -Not
Dengan penambahan parameter -Not ke Where-Object, dapat memfilter objek di alur untuk tidak adanya properti, atau nilai properti null/kosong.
Misalnya, perintah ini mengembalikan semua layanan yang tidak memiliki layanan dependen yang ditentukan:
Get-Service | Where-Object -Not DependentServices
Perubahan pada Cmdlet Web
API .NET yang mendasar dari Web Cmdlets telah diubah menjadi System.Net.Http.HttpClient. Perubahan ini memberikan banyak manfaat. Namun, perubahan ini bersama dengan kurangnya interoperabilitas dengan Internet Explorer telah mengakibatkan beberapa perubahan yang merusak dalam Invoke-WebRequest dan Invoke-RestMethod.
-
Invoke-WebRequestsekarang hanya mendukung Penguraian HTML dasar.Invoke-WebRequestselalu mengembalikan objekBasicHtmlWebResponseObject. PropertiParsedHtmldanFormstelah dihapus. - nilai
BasicHtmlWebResponseObject.HeaderssekarangString[]alih-alihString. -
BasicHtmlWebResponseObject.BaseResponsesekarang menjadi objekSystem.Net.Http.HttpResponseMessage. - Properti
Responsepada pengecualian Web Cmdlet sekarang menjadi objekSystem.Net.Http.HttpResponseMessage. - Penguraian header RFC yang ketat sekarang default untuk parameter
-Headersdan-UserAgent. Ini dapat dilewati dengan-SkipHeaderValidation. - skema URI
file://danftp://tidak lagi didukung. - pengaturan
System.Net.ServicePointManagertidak lagi dihormati. - Saat ini tidak ada autentikasi berbasis sertifikat yang tersedia di macOS.
- Penggunaan
-Credentialmelalui URIhttp://akan mengakibatkan kesalahan. Gunakan URIhttps://atau berikan parameter-AllowUnencryptedAuthenticationuntuk menekan kesalahan. -
-MaximumRedirectionsekarang menghasilkan kesalahan penghentian ketika upaya pengalihan melebihi batas yang disediakan alih-alih mengembalikan hasil pengalihan terakhir. - Di PowerShell 6.2, perubahan dilakukan ke default pengodean UTF-8 untuk respons JSON. Ketika charset tidak disediakan untuk respons JSON, encoding default harus UTF-8 sesuai dengan RFC 8259.
- Pengodean default diatur ke UTF-8 untuk respons
application-json - Menambahkan parameter
-SkipHeaderValidationuntuk mengizinkan headerContent-Typeyang tidak sesuai standar. - Menambahkan parameter
-Formuntuk mendukung dukunganmultipart/form-datayang disederhanakan - Penanganan kunci relasi yang mematuhi dan tidak membedakan huruf besar/kecil
- Menambahkan parameter
-Resumeuntuk cmdlet web
Invoke-RestMethod mengembalikan info yang berguna saat tidak ada data yang dikembalikan
Ketika API hanya mengembalikan null, Invoke-RestMethod menserialisasikan ini sebagai string "null" alih-alih $null. Perubahan ini memperbaiki logika dalam Invoke-RestMethod untuk membuat serialisasi nilai tunggal JSON yang valid dengan benar null literal sebagai $null.
Cmdlet Web memperingatkan ketika -Credential dikirim melalui koneksi yang tidak terenkripsi
Saat menggunakan HTTP, konten termasuk kata sandi dikirim sebagai teks-jelas. Perubahan ini untuk tidak mengizinkan ini secara default dan mengembalikan kesalahan jika kredensial diteruskan secara tidak aman. Pengguna dapat melewati ini dengan menggunakan sakelar -AllowUnencryptedAuthentication.
Buat parameter -OutFile di cmdlet web agar berfungsi seperti -LiteralPath
Mulai dari PowerShell 7.1, parameter OutFile pada cmdlet web berfungsi seperti LiteralPath dan tidak memproses wildcard.
Perubahan API
Menghapus kelas AddTypeCommandBase
Kelas AddTypeCommandBase dihapus dari Add-Type untuk meningkatkan performa. Kelas ini hanya digunakan oleh cmdlet Add-Type dan tidak boleh berdampak pada pengguna.
Menghapus VisualBasic sebagai bahasa yang didukung dalam Add-Type
Di masa lalu, Anda dapat mengkompilasi kode Visual Basic menggunakan cmdlet Add-Type. Visual Basic jarang digunakan dengan Add-Type. Kami menghapus fitur ini untuk mengurangi ukuran PowerShell.
Menghapus dukungan RunspaceConfiguration
Sebelumnya, saat membuat runspace PowerShell secara terprogram menggunakan API, Anda dapat menggunakan RunspaceConfiguration warisan atau kelas InitialSessionState yang lebih baru. Perubahan ini menghapus dukungan untuk RunspaceConfiguration dan hanya mendukung InitialSessionState.
CommandInvocationIntrinsics.InvokeScript mengikat argumen ke $input alih-alih $args
Posisi parameter yang salah menyebabkan args diteruskan sebagai input, bukan sebagai args.
Menghapus properti ClrVersion dan BuildVersion dari $PSVersionTable
Properti ClrVersion dari $PSVersionTable tidak bermanfaat dengan CoreCLR. Pengguna akhir tidak boleh menggunakan nilai tersebut untuk menentukan kompatibilitas.
Properti BuildVersion terkait dengan versi build Windows, yang tidak tersedia di platform non-Windows. Gunakan properti GitCommitId untuk mengambil versi build PowerShell yang tepat.
Menerapkan penguraian escape Unicode
`u#### atau `u{####} dikonversi ke karakter Unicode yang sesuai. Untuk menghasilkan `uharfiah, lolos dari backtick: ``u.
Masalah pengikatan parameter dengan ValueFromRemainingArguments dalam fungsi PS
ValueFromRemainingArguments sekarang mengembalikan nilai-nilai dalam bentuk array alih-alih satu nilai tunggal yang sebelumnya merupakan array.
Membersihkan penggunaan CommandTypes.Workflow dan WorkflowInfoCleaned
Bersihkan kode yang terkait dengan penggunaan CommandTypes.Workflow dan WorkflowInfo di System.Management.Automation.
Perubahan pemecahan kecil ini terutama memengaruhi kode penyedia bantuan.
- Ubah konstruktor publik
WorkflowInfomenjadi internal. Kami tidak mendukung alur kerja lagi, jadi masuk akal untuk tidak mengizinkan orang membuat instansWorkflow. - Hapus jenis System.Management.Automation.DebugSource karena hanya digunakan untuk penelusuran kesalahan alur kerja.
- Hapus kelebihan beban
SetParentdari kelas abstrak Debugger yang hanya digunakan untuk penelusuran kesalahan alur kerja. - Hapus overload
SetParentyang sama dari kelas turunan RemotingJobDebugger.
Jangan membungkus hasil pengembalian dalam PSObject saat mengonversi ScriptBlock ke delegat.
Ketika ScriptBlock dikonversi ke jenis delegasi yang akan digunakan dalam konteks C#, membungkus hasil dalam PSObject membawa masalah yang tidak diperlukan:
- Ketika nilai dikonversi ke jenis pengembalian delegasi,
PSObjectpada dasarnya dibongkar. JadiPSObjecttidak diperlukan. - Ketika tipe pengembalian delegasi adalah
object, itu akan dibungkus dalamPSObject, membuatnya sulit untuk digunakan dalam kode C#.
Setelah perubahan ini, objek yang dikembalikan adalah objek yang mendasar.
Dukungan Jarak Jauh
PowerShell Remoting (PSRP) menggunakan WinRM pada platform Unix memerlukan NTLM/Negosiasi atau Autentikasi Dasar melalui HTTPS. PSRP di macOS hanya mendukung Autentikasi Dasar melalui HTTPS. Autentikasi berbasis Kerberos tidak didukung untuk platform non-Windows.
PowerShell juga mendukung PowerShell Remoting (PSRP) melalui SSH di semua platform (Windows, macOS, dan Linux). Untuk informasi selengkapnya, lihat SSH remoting di PowerShell.
PowerShell Direct untuk Container mencoba menggunakan pwsh terlebih dahulu
PowerShell Direct adalah fitur PowerShell dan Hyper-V yang memungkinkan Anda terhubung ke Hyper-V VM atau Kontainer tanpa konektivitas jaringan atau layanan manajemen jarak jauh lainnya.
Di masa lalu, PowerShell Direct tersambung menggunakan instans Windows PowerShell bawaan pada Kontainer. Sekarang, PowerShell Direct pertama kali mencoba menyambungkan dengan menggunakan pwsh.exe yang tersedia pada variabel lingkungan PATH. Jika pwsh.exe tidak tersedia, PowerShell Direct akan kembali menggunakan powershell.exe.
Enable-PSRemoting sekarang membuat titik akhir jarak jauh terpisah untuk versi pratinjau
Enable-PSRemoting sekarang membuat dua konfigurasi sesi jarak jauh:
- Satu untuk versi utama PowerShell. Contohnya,
PowerShell.6. Titik akhir yang dapat diandalkan melalui pembaruan versi minor sebagai konfigurasi sesi PowerShell 6 seluruh sistem - Satu konfigurasi sesi yang khusus untuk versi, misalnya:
PowerShell.6.1.0
Perilaku ini berguna jika Anda ingin menginstal beberapa versi PowerShell 6 dan dapat diakses pada komputer yang sama.
Selain itu, versi pratinjau PowerShell sekarang mendapatkan konfigurasi sesi jarak jauh mereka sendiri setelah menjalankan cmdlet Enable-PSRemoting:
C:\WINDOWS\system32> Enable-PSRemoting
Output Anda mungkin berbeda jika Anda belum menyiapkan WinRM sebelumnya.
WinRM is already set up to receive requests on this computer.
WinRM is already set up for remote management on this computer.
Kemudian Anda dapat melihat konfigurasi sesi PowerShell terpisah untuk pratinjau dan build PowerShell 6 yang stabil, dan untuk setiap versi tertentu.
Get-PSSessionConfiguration
Name : PowerShell.6.2-preview.1
PSVersion : 6.2
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
Name : PowerShell.6-preview
PSVersion : 6.2
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
Name : powershell.6
PSVersion : 6.1
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
Name : powershell.6.1.0
PSVersion : 6.1
StartupScript :
RunAsUser :
Permission : NT AUTHORITY\INTERACTIVE AccessAllowed, BUILTIN\Administrators AccessAllowed, BUILTIN\Remote Management Users AccessAllowed
sintaks user@host:port didukung untuk SSH
Klien SSH biasanya mendukung string koneksi dalam format user@host:port. Dengan penambahan SSH sebagai protokol untuk PowerShell Remoting, kami telah menambahkan dukungan untuk format string koneksi ini:
Enter-PSSession -HostName fooUser@ssh.contoso.com:2222
Telemetri hanya dapat dinonaktifkan dengan variabel lingkungan
PowerShell mengirim data telemetri dasar ke Microsoft saat diluncurkan. Data ini mencakup nama OS, versi OS, dan versi PowerShell. Data ini memungkinkan kami untuk lebih memahami lingkungan tempat PowerShell digunakan dan memungkinkan kami memprioritaskan fitur dan perbaikan baru.
Untuk menolak telemetri ini, atur variabel lingkungan POWERSHELL_TELEMETRY_OPTOUT ke true, yes, atau 1. Kami tidak lagi mendukung penghapusan file DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY untuk menonaktifkan telemetri.