Perbedaan antara Windows PowerShell 5.1 dan PowerShell 7.x
Windows PowerShell 5.1 dibangun di atas .NET Framework v4.5. Dengan rilis 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 yang melanggar 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 di PowerShell 7.5
- Apa yang baru di PowerShell 7.4
- Apa yang baru di PowerShell 7.3
- Apa yang baru di PowerShell 7.2
- Apa yang baru di 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 Melanggar perubahan 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:
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 [type]::new()
metode .
Misalnya, .NET menambahkan kelebihan beban ke [System.String]::Split()
metode yang tidak tersedia di .NET Framework 4.5. Daftar berikut ini memperlihatkan kelebihan beban untuk metode yang Split()
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 yang Split()
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 Split()
metode 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.Operation.Validation
- 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 kuat untuk tugas yang berjalan lama atau paralel.
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-PSSnapin
Export-Console
Get-PSSnapin
Remove-PSSnapin
Resume-Job
Suspend-Job
Microsoft.PowerShell.Diagnostics
Export-Counter
Import-Counter
Microsoft.PowerShell.Management
Add-Computer
Checkpoint-Computer
Clear-EventLog
Complete-Transaction
Disable-ComputerRestore
Enable-ComputerRestore
Get-ComputerRestorePoint
Get-ControlPanelItem
Get-EventLog
Get-Transaction
Get-WmiObject
Invoke-WmiMethod
Limit-EventLog
New-EventLog
New-WebServiceProxy
Register-WmiEvent
Remove-Computer
Remove-EventLog
Remove-WmiObject
Reset-ComputerMachinePassword
Restore-Computer
Set-WmiInstance
Show-ControlPanelItem
Show-EventLog
Start-Transaction
Test-ComputerSecureChannel
Undo-Transaction
Use-Transaction
Write-EventLog
Microsoft.PowerShell.Utility
Convert-String
ConvertFrom-String
PSDesiredStateConfiguration
Disable-DscDebug
Enable-DscDebug
Get-DscConfiguration
Get-DscConfigurationStatus
Get-DscLocalConfigurationManager
Publish-DscConfiguration
Remove-DscConfigurationDocument
Restore-DscConfiguration
Set-DscLocalConfigurationManager
Start-DscConfiguration
Stop-DscConfiguration
Test-DscConfiguration
Update-DscConfiguration
Cmdlet WMI v1
Cmdlet WMI v1 berikut dihapus dari PowerShell:
Register-WmiEvent
Set-WmiInstance
Invoke-WmiMethod
Get-WmiObject
Remove-WmiObject
Cmdlet modul CimCmdlets (alias WMI v2) melakukan fungsi yang sama dan menyediakan fungsionalitas baru dan sintaksis yang didesain ulang.
New-WebServiceProxy
cmdlet dihapus
.NET Core tidak mendukung Windows Communication Framework, yang menyediakan layanan untuk menggunakan protokol SOAP. Cmdlet ini dihapus karena membutuhkan SOAP.
*-Transaction
cmdlet dihapus
Cmdlet ini memiliki penggunaan yang sangat terbatas. Keputusan tersebut dibuat untuk menghentikan dukungan bagi mereka.
Complete-Transaction
Get-Transaction
Start-Transaction
Undo-Transaction
Use-Transaction
*-EventLog
Cmdlet
Karena penggunaan API yang tidak didukung, *-EventLog
cmdlet telah dihapus dari PowerShell.
Get-WinEvent
dan New-WinEvent
tersedia untuk mendapatkan dan membuat peristiwa 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:
Show-Command
CmdletOut-GridView
Cmdlet- 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 powerShell yang dapat dieksekusi
Mengganti nama powershell.exe
menjadi pwsh.exe
Nama biner untuk PowerShell telah diubah dari powershell(.exe)
ke 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 menjadi pwsh(.exe)
dari powershell.exe
:
- Mengubah parameter posisi pertama dari
-Command
ke-File
. Perubahan ini memperbaiki penggunaan#!
(alias sebagai shebang) dalam skrip PowerShell yang sedang dijalankan dari shell non-PowerShell pada platform non-Windows. Ini juga berarti bahwa Anda dapat menjalankan perintah sepertipwsh foo.ps1
ataupwsh fooScript
tanpa menentukan-File
. Namun, perubahan ini mengharuskan Anda secara eksplisit menentukan-c
atau-Command
saat mencoba menjalankan perintah sepertipwsh.exe -Command Get-Command
. pwsh
-i
menerima sakelar (atau-Interactive
) untuk menunjukkan shell interaktif. Ini memungkinkan PowerShell digunakan sebagai shell default pada platform Unix.- Parameter yang
-ImportSystemModules
dihapus dan-PSConsoleFile
daripwsh.exe
. - Bantuan yang diubah
pwsh -version
dan bawaan untukpwsh.exe
menyelaraskan dengan alat asli lainnya. - Pesan kesalahan argumen tidak valid untuk
-File
dan-Command
dan kode keluar yang konsisten dengan standar Unix - Menambahkan
-WindowStyle
parameter pada 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 ada cara untuk meneruskan $true
/$false
sebagai nilai parameter. Dukungan untuk $true
/$false
sebagai nilai yang diurai ke parameter ditambahkan. Nilai switch juga didukung.
Kompatibilitas mundur yang ditingkatkan dengan 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 WSUS0
- Jangan memilih untuk memperbarui melalui Pembaruan Microsoft atau WSUS
ENABLE_MU
1
(default) - Memilih menggunakan Pembaruan Microsoft Pembaruan Otomatis atau Pembaruan Windows0
- Jangan ikut serta menggunakan Pembaruan Otomatis microsoft atau Pembaruan Windows
Perubahan mesin
Mendukung PowerShell sebagai shell Unix default
Di Unix, ini adalah konvensi bagi shell untuk menerima -i
shell interaktif dan banyak alat mengharapkan perilaku ini (script
misalnya, dan saat mengatur PowerShell sebagai shell default) dan memanggil shell dengan -i
sakelar. Perubahan ini melanggar yang -i
sebelumnya dapat digunakan sebagai tangan pendek untuk mencocokkan -inputformat
, yang sekarang perlu .-in
Snap-in kustom
Snap-in PowerShell adalah pendahulu modul PowerShell yang tidak memiliki adopsi luas di komunitas PowerShell.
Karena kompleksitas mendukung snap-in dan kurangnya penggunaannya di komunitas, kami tidak lagi mendukung snap-in kustom di PowerShell.
Bendera fitur eksperimental
Dukungan yang diaktifkan PowerShell 6.2 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 yang melanggar 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 jenis elemen tipe nilai
Mandatory
Untuk parameter dan ValidateNotNull
ValidateNotNullOrEmpty
atribut, lewati null-element periksa apakah jenis elemen koleksi adalah jenis 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
ketika perintah asli menulis ke stderr
$?
tidak diatur ke $false
ketika perintah asli menulis ke stderr
. Adalah umum bagi perintah asli untuk menulis tanpa stderr
berniat untuk menunjukkan kegagalan. $?
diatur ke $false
hanya ketika perintah asli memiliki kode keluar bukan nol.
Membuat $ErrorActionPreference
tidak memengaruhi stderr
output perintah asli
Adalah umum bagi perintah asli untuk menulis tanpa stderr
berniat untuk menunjukkan kegagalan. Dengan perubahan ini, stderr
output masih diambil dalam objek ErrorRecord , tetapi runtime tidak lagi berlaku $ErrorActionPreference
jika ErrorRecord berasal dari perintah asli.
Ubah $OutputEncoding
untuk menggunakan UTF-8 NoBOM
pengodean daripada ASCII
Pengodean sebelumnya, ASCII (7-bit), akan mengakibatkan perubahan output yang salah dalam beberapa kasus. Membuat UTF-8 NoBOM
default 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 -Encoding
Byte
telah dihapus dari cmdlet penyedia sistem file. Parameter baru, -AsByteStream
, sekarang digunakan untuk menentukan bahwa aliran byte diperlukan sebagai input atau bahwa output adalah aliran byte.
Mengubah New-ModuleManifest
pengodean ke UTF8NoBOM
pada platform non-Windows
Sebelumnya, New-ModuleManifest
membuat psd1
manifes di UTF-16 dengan BOM, menciptakan masalah untuk alat Linux. Perubahan yang melanggar ini mengubah pengodean New-ModuleManifest
menjadi UTF (tanpa BOM) di platform non-Windows.
Hapus 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 mengesampingkan perilaku $ErrorActionPreference
. Dengan perubahan ini, -Verbose
dan -Debug
tidak lagi memengaruhi perilaku $ErrorActionPreference
.
Selain itu, parameter diatur -Debug
$DebugPreference
ke Lanjutkan alih-alih Inquire.
Membuat perubahan budaya dalam sesi secara konsisten mencerminkan $PSCulture
perubahan budaya dalam sesi
Di Windows PowerShell, nilai budaya saat ini di-cache, yang dapat memungkinkan nilai untuk tidak sinkron dengan budaya berubah setelah sesi-startup. Perilaku penembolokan ini diperbaiki di inti PowerShell.
Izinkan parameter bernama yang ditentukan secara eksplisit untuk menggantikan parameter yang sama dari percikan hashtable
Dengan perubahan ini, parameter bernama dari percikan dipindahkan ke akhir daftar parameter sehingga 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 $args
parameter fungsi sederhana. Memindahkan splatting ke akhir daftar argumen mengubah urutan parameter muncul di $args
.
Contohnya:
function SimpleTest {
param(
$Name,
$Path
)
"Name: $Name; Path: $Path; Args: $args"
}
Dalam perilaku sebelumnya, MyPath tidak terikat -Path
karena ini adalah argumen ketiga dalam daftar argumen. ## Jadi akhirnya diisi menjadi '$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 null-coalescing ??
Operator null-coalescing ??
mengembalikan nilai operand sebelah kirinya jika bukan null.
Jika tidak, itu mengevaluasi operand tangan kanan dan mengembalikan hasilnya. Operator ??
tidak mengevaluasi operand kanannya apabila operand sebelah kiri mengevaluasi ke 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 ??=
penetapan null-coalescing menetapkan nilai operand tangan kanannya ke operand sebelah kirinya hanya jika operand sebelah kiri mengevaluasi ke null. Operator ??=
tidak mengevaluasi operand kanannya apabila operand sebelah kiri mengevaluasi ke 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 null-conditional
Catatan
Fitur ini dipindahkan dari eksperimental ke mainstream di PowerShell 7.1.
Operator null-conditional menerapkan akses anggota, ?.
, atau akses elemen, ?[]
, operasi ke operand-nya hanya jika operand tersebut mengevaluasi ke non-null; jika tidak, itu mengembalikan null.
Karena PowerShell memungkinkan ?
untuk menjadi bagian dari nama variabel, spesifikasi formal dari nama variabel diperlukan untuk menggunakan operator ini. Jadi diperlukan untuk menggunakan {}
sekitar nama variabel seperti ${a}
atau kapan ?
adalah bagian dari nama ${a?}
variabel .
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 null, elemen tidak diakses dan null dikembalikan.
$a = $null
${a}?[0]
Catatan
Sintaks ${<name>}
nama variabel tidak boleh dikacaukan dengan $()
operator subekspresi. Untuk informasi selengkapnya, lihat Bagian nama variabel about_Variables.
Menambahkan &
operator untuk kontrol pekerjaan
Menempatkan &
di akhir alur menyebabkan alur dijalankan sebagai pekerjaan PowerShell. Saat alur di latar belakang, objek pekerjaan dikembalikan. Setelah alur berjalan sebagai pekerjaan, semua cmdlet standar *-Job
dapat digunakan untuk mengelola pekerjaan. Variabel (mengabaikan variabel khusus proses) yang digunakan dalam alur secara otomatis disalin ke pekerjaan sehingga Copy-Item $foo $bar &
hanya berfungsi. 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 Count
/Length
properti seperti objek lain.
$PSCustomObject = [pscustomobject]@{foo = 1}
$PSCustomObject.Length
1
$PSCustomObject.Count
1
Pekerjaan ini juga mencakup ForEach
metode dan Where
yang memungkinkan Anda mengoperasikan dan memfilter PSCustomObject
item:
$PSCustomObject.ForEach({$_.foo + 1})
2
$PSCustomObject.Where({$_.foo -gt 0})
foo
---
1
Konversi dari PSMethod ke Delegasi
Anda dapat mengonversi menjadi PSMethod
delegasi. Ini memungkinkan Anda untuk 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:
Pada .NET 5.0, perbandingan string invarian 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 boot terakhir sistem operasi. 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.
Hapus Layanan cmdlet baru
Cmdlet Remove-Service menghapus layanan Windows di registri dan di database layanan. Remove-Service
Cmdlet 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 ke objek MarkdownInfo .
- Get-MarkdownOption - Mengembalikan 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 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.
Cmdlet Join-String Baru
Cmdlet Join-String menggabungkan objek dari alur ke dalam 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 $ErrorView
preferensi .
Dengan ConciseView, jika kesalahan bukan dari kesalahan skrip atau pengurai, maka itu adalah pesan kesalahan baris tunggal:
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 $ErrorView
preferensi .
$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView
Catatan
Properti baru ErrorAccentColor ditambahkan ke $Host.PrivateData
untuk mendukung perubahan warna aksen pesan kesalahan.
Cmdlet baru Get-Error
memberikan tampilan terperinci lengkap dari kesalahan yang sepenuhnya memenuhi syarat jika diinginkan. Secara default cmdlet menampilkan detail lengkap, termasuk pengecualian dalam, dari kesalahan terakhir yang terjadi.
Get-Error
Cmdlet mendukung input dari alur menggunakan variabel $Error
bawaan .
Get-Error
menampilkan semua kesalahan yang disalurkan.
$Error | Get-Error
Get-Error
Cmdlet 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 di PowerShell 7.0, ForEach-Object
cmdlet, yang melakukan iterasi item dalam koleksi, sekarang memiliki paralelisme bawaan 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. Bawaan adalah 5.
$_
Gunakan variabel untuk mewakili objek input saat ini di blok skrip. $using:
Gunakan cakupan untuk meneruskan referensi variabel ke blok skrip yang sedang berjalan.
Untuk informasi selengkapnya, lihat ForEach-Object.
Periksa system32
modul bawaan yang kompatibel 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 disertakan $windir\System32
PSModulePath
sebagai bagian dari variabel lingkungan. 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 pengalihan -SkipEditionCheck
.
Kami juga telah menambahkan PSEdition
properti ke output tabel.
-lp
alias untuk semua -LiteralPath
parameter
Kami membuat alias -lp
parameter standar untuk semua cmdlet PowerShell bawaan yang memiliki -LiteralPath
parameter .
Perbaiki Get-Item -LiteralPath a*b
jika a*b
tidak benar-benar ada untuk mengembalikan kesalahan
Sebelumnya, -LiteralPath
mengingat kartubebas akan memperlakukannya sama seperti -Path
dan jika wildcard tidak menemukan file, kartubebas akan keluar secara diam-diam. Perilaku yang benar haruslah itu -LiteralPath
harfiah sehingga jika file tidak ada, itu harus kesalahan. Perubahannya adalah memperlakukan kartubebas yang digunakan sebagai -Literal
harfiah.
Atur direktori kerja ke direktori saat ini di Start-Job
Start-Job
Cmdlet sekarang menggunakan direktori saat ini sebagai direktori kerja untuk pekerjaan baru.
Hapus -Protocol
dari *-Computer
cmdlet
Karena masalah dengan remoting RPC di CoreFX (terutama pada platform non-Windows) dan memastikan pengalaman jarak jauh yang konsisten di PowerShell, -Protocol
parameter dihapus dari \*-Computer
cmdlet. DCOM tidak lagi didukung untuk jarak jauh. Cmdlet berikut hanya mendukung jarak jauh WSMAN:
Rename-Computer
Restart-Computer
Stop-Computer
Hapus -ComputerName
dari *-Service
cmdlet
Untuk mendorong penggunaan PSRP yang konsisten, -ComputerName
parameter dihapus dari *-Service
cmdlet.
Perbaikan Get-Content -Delimiter
untuk tidak menyertakan pemisah dalam baris yang dikembalikan
Sebelumnya, output saat menggunakan Get-Content -Delimiter
tidak konsisten dan tidak nyaman karena memerlukan pemrosesan data lebih lanjut untuk menghapus pemisah. Perubahan ini menghapus pemisah di baris yang dikembalikan.
Perubahan pada Format-Hex
Parameter -Raw
sekarang adalah "no-op" (karena tidak melakukan apa-apa). Ke depan semua output ditampilkan dengan representasi angka sejati yang mencakup semua byte untuk jenisnya. Inilah yang -Raw
dilakukan parameter sebelum perubahan ini.
Perbaikan kesalahan ketik dalam nama properti Get-ComputerInfo
BiosSerialNumber
salah eja karena BiosSeralNumber
dan telah diubah ke ejaan yang benar.
Tambahkan Get-StringHash
dan Get-FileHash
cmdlet
Perubahan ini adalah bahwa beberapa algoritma hash tidak didukung oleh CoreFX, oleh karena itu mereka tidak lagi tersedia:
MACTripleDES
RIPEMD160
Menambahkan validasi pada Get-*
cmdlet di mana passing $null mengembalikan semua objek alih-alih kesalahan
Meneruskan $null
ke salah satu hal berikut ini sekarang melemparkan kesalahan:
Get-Credential -UserName
Get-Event -SourceIdentifier
Get-EventSubscriber -SourceIdentifier
Get-Help -Name
Get-PSBreakpoint -Script
Get-PSProvider -PSProvider
Get-PSSessionConfiguration -Name
Get-Runspace -Name
Get-RunspaceDebug -RunspaceName
Get-Service -Name
Get-TraceSource -Name
Get-Variable -Name
Menambahkan dukungan untuk Format File Log Yang Diperluas W3C di Import-Csv
Sebelumnya, Import-Csv
cmdlet tidak dapat digunakan untuk langsung mengimpor file log dalam format log yang diperluas W3C dan tindakan tambahan akan diperlukan. Dengan perubahan ini, format log yang diperluas W3C didukung.
Import-Csv
PSTypeNames
berlaku saat impor ketika informasi jenis ada di CSV
Sebelumnya, objek yang diekspor menggunakan Export-CSV
dengan TypeInformation
yang diimpor dengan ConvertFrom-Csv
tidak menyimpan informasi jenis. Perubahan ini menambahkan informasi jenis ke PSTypeNames
anggota jika tersedia dari file CSV.
-NoTypeInformation
adalah default pada Export-Csv
Sebelumnya, Export-CSV
cmdlet 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 *
untuk digunakan dalam jalur registri untuk Remove-Item
Sebelumnya, -LiteralPath
mengingat kartubebas akan memperlakukannya sama seperti -Path
dan jika wildcard tidak menemukan file, kartubebas akan keluar secara diam-diam. Perilaku yang benar haruslah itu -LiteralPath
harfiah sehingga jika file tidak ada, itu harus kesalahan. Perubahannya adalah memperlakukan kartubebas yang digunakan sebagai -Literal
harfiah.
Objek Grup sekarang mengurutkan grup
Sebagai bagian dari peningkatan performa, Group-Object
sekarang mengembalikan daftar grup yang diurutkan.
Meskipun Anda tidak boleh mengandalkan pesanan, Anda dapat dipecah oleh perubahan ini jika Anda menginginkan grup pertama. Kami memutuskan bahwa peningkatan performa ini sepadan dengan perubahan karena dampak tergantung pada perilaku sebelumnya rendah.
Simpang siur standar dalam Measure-Object
Output dari Measure-Object
sekarang mencakup StandardDeviation
properti.
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 Password
parameter , yang mengambil 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
more
Penghapusan fungsi
Di masa lalu, PowerShell mengirimkan fungsi pada Windows yang disebut more
yang dibungkus more.com
. Fungsi itu sekarang telah dihapus.
Selain itu help
, fungsi berubah untuk digunakan more.com
pada 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 mengirim pengguna ke lokasi default untuk drive tersebut. Pengguna sekarang dikirim ke direktori kerja terakhir yang diketahui saat ini 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 --
ubah menjadi $HOME
.
Update-Help
sebagai non-admin
Dengan permintaan populer, Update-Help
tidak perlu lagi dijalankan sebagai administrator. Update-Help
sekarang default untuk menyimpan bantuan ke folder yang dilingkup pengguna.
Where-Object -Not
Dengan penambahan -Not
parameter 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 melanggar dalam Invoke-WebRequest
dan Invoke-RestMethod
.
Invoke-WebRequest
sekarang hanya mendukung Penguraian HTML dasar.Invoke-WebRequest
selalu mengembalikanBasicHtmlWebResponseObject
objek. PropertiParsedHtml
danForms
telah dihapus.BasicHtmlWebResponseObject.Headers
nilai sekarangString[]
bukanString
.BasicHtmlWebResponseObject.BaseResponse
sekarang menjadiSystem.Net.Http.HttpResponseMessage
objek.- Properti
Response
pada pengecualian Web Cmdlet sekarang menjadiSystem.Net.Http.HttpResponseMessage
objek. - Penguraian header RFC yang ketat sekarang default untuk
-Headers
parameter dan-UserAgent
. Ini dapat dilewati dengan-SkipHeaderValidation
. file://
danftp://
skema URI tidak lagi didukung.System.Net.ServicePointManager
pengaturan tidak lagi dihormati.- Saat ini tidak ada autentikasi berbasis sertifikat yang tersedia di macOS.
- Penggunaan lebih
http://
dari-Credential
URI akan mengakibatkan kesalahan.https://
Gunakan URI atau berikan-AllowUnencryptedAuthentication
parameter untuk menekan kesalahan. -MaximumRedirection
sekarang 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, pengodean default harus UTF-8 per RFC 8259.
- Pengodean default diatur ke UTF-8 untuk
application-json
respons - Menambahkan
-SkipHeaderValidation
parameter untuk mengizinkanContent-Type
header yang tidak sesuai standar - Menambahkan
-Form
parameter untuk mendukung dukungan yang disederhanakanmultipart/form-data
- Penanganan kunci relasi yang sesuai dan tidak peka huruf besar/kecil
- Menambahkan
-Resume
parameter untuk cmdlet web
Invoke-RestMethod mengembalikan info yang berguna ketika tidak ada data yang dikembalikan
Ketika API mengembalikan hanya null
, Invoke-RestMethod
sedang menserialisasikan ini sebagai string "null"
alih-alih $null
. Perubahan ini memperbaiki logika untuk Invoke-RestMethod
membuat serialisasi nilai tunggal JSON null
yang valid dengan benar sebagai $null
.
Cmdlet Web memperingatkan kapan -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 -OutFile
parameter di cmdlet web agar berfungsi seperti -LiteralPath
Dimulai di PowerShell 7.1, parameter OutFile dari cmdlet web berfungsi seperti LiteralPath dan tidak memproses wildcard.
Perubahan API
Hapus AddTypeCommandBase
kelas
Kelas AddTypeCommandBase
dihapus dari Add-Type
untuk meningkatkan performa. Kelas ini hanya digunakan oleh Add-Type
cmdlet dan tidak boleh berdampak pada pengguna.
Dihapus VisualBasic
sebagai bahasa yang didukung dalam Add-Type
Di masa lalu, Anda dapat mengkompilasi kode Visual Basic menggunakan Add-Type
cmdlet. Visual Basic jarang digunakan dengan Add-Type
. Kami menghapus fitur ini untuk mengurangi ukuran PowerShell.
Dukungan yang dihapus RunspaceConfiguration
Sebelumnya, saat membuat runspace PowerShell secara terprogram menggunakan API, Anda dapat menggunakan kelas warisan RunspaceConfiguration
atau yang lebih InitialSessionState
baru. Perubahan ini menghapus dukungan untuk RunspaceConfiguration
dan hanya mendukung InitialSessionState
.
CommandInvocationIntrinsics.InvokeScript
mengikat argumen ke $input
alih-alih $args
Posisi parameter yang salah mengakibatkan args diteruskan sebagai input alih-alih sebagai args.
Hapus ClrVersion
dan BuildVersion
properti dari $PSVersionTable
Properti ClrVersion
$PSVersionTable
tidak berguna 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. GitCommitId
Gunakan properti untuk mengambil versi build PowerShell yang tepat.
Menerapkan penguraian escape Unicode
`u####
atau `u{####}
dikonversi ke karakter Unicode yang sesuai. Untuk menghasilkan literal `u
, lolos dari backtick: ``u
.
Masalah pengikatan parameter dalam ValueFromRemainingArguments
fungsi PS
ValueFromRemainingArguments
sekarang mengembalikan nilai sebagai array alih-alih nilai tunggal yang 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 menjadi
WorkflowInfo
internal. Kami tidak mendukung alur kerja lagi, jadi masuk akal untuk tidak mengizinkan orang membuatWorkflow
instans. - Hapus jenis System.Management.Automation.DebugSource karena hanya digunakan untuk penelusuran kesalahan alur kerja.
- Hapus kelebihan beban
SetParent
dari debugger kelas abstrak yang hanya digunakan untuk penelusuran kesalahan alur kerja. - Hapus kelebihan beban
SetParent
yang sama dari kelas turunan RemotingJobDebugger.
Jangan membungkus hasil PSObject
pengembalian saat mengonversi ke ScriptBlock
delegasi
ScriptBlock
Ketika dikonversi ke jenis delegasi yang akan digunakan dalam konteks C#, membungkus hasilnya membawa masalah yang PSObject
tidak diperlukan:
- Ketika nilai dikonversi ke jenis pengembalian delegasi, pada
PSObject
dasarnya akan dibongkar.PSObject
Jadi tidak diperlukan. - Ketika jenis pengembalian delegasi adalah
object
, itu dibungkus dalam sehinggaPSObject
sulit untuk bekerja dengan 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 Jarak jauh SSH di PowerShell.
PowerShell Direct untuk Kontainer 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 terhubung menggunakan apa pun yang tersedia pwsh.exe
pada PATH
variabel lingkungan. 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 ini yang dapat diandalkan di seluruh pembaruan versi minor sebagai konfigurasi sesi PowerShell 6 "seluruh sistem" - Satu konfigurasi sesi khusus 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 Enable-PSRemoting
cmdlet:
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
user@host:port
sintaks yang 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 POWERSHELL_TELEMETRY_OPTOUT
lingkungan ke true
, yes
, atau 1
. Kami tidak lagi mendukung penghapusan file DELETE_ME_TO_DISABLE_CONSOLEHOST_TELEMETRY
untuk menonaktifkan telemetri.