Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
PowerShell berusaha untuk menyediakan paritas fitur di semua platform yang didukung. Namun, beberapa fitur berulah secara berbeda atau tidak tersedia karena perbedaan .NET Core dan perbedaan khusus platform. Perubahan lain dilakukan untuk meningkatkan interoperabilitas PowerShell pada platform non-Windows.
.NET Framework vs .NET Core
PowerShell di Linux dan macOS menggunakan .NET Core, subset dari .NET Framework lengkap di Microsoft Windows. 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.
Perubahan interoperabilitas Unix umum
- Menambahkan dukungan untuk globbing perintah asli pada platform Unix. Ini berarti Anda dapat menggunakan kartubebas dengan perintah asli seperti
ls *.txt. - Fungsionalitas
moremenghormati Linux$PAGERdan default keless. - Garis miring terbelakang secara otomatis lolos saat berhadapan dengan argumen perintah asli.
- Memperbaiki ConsoleHost untuk menghormati
NoEchoplatform Unix. - Jangan tambahkan
PATHEXTvariabel lingkungan di Unix. - Halaman
powershellmanusia disertakan dalam paket.
Kebijakan eksekusi
PowerShell mengabaikan kebijakan eksekusi saat berjalan pada platform non-Windows. Get-ExecutionPolicymengembalikan Unrestricted di Linux dan macOS. Set-ExecutionPolicy tidak melakukan apa pun di Linux dan macOS.
Sensitivitas huruf besar/kecil di PowerShell
Secara historis, PowerShell secara seragam tidak peka huruf besar/kecil, dengan beberapa pengecualian. Pada sistem operasi seperti UNIX, sistem file sebagian besar peka huruf besar/kecil, dan PowerShell mematuhi standar sistem file.
- Anda harus menggunakan kasus yang benar saat nama file ditentukan di PowerShell.
- Jika skrip mencoba memuat modul dan nama modul tidak ditangani dengan benar, maka beban modul gagal. Perilaku ini dapat menyebabkan masalah dengan skrip yang ada jika nama yang dirujuk oleh modul tidak cocok dengan kasus yang tepat dari nama file aktual.
- Meskipun nama dalam sistem file peka huruf besar/kecil, penyelesaian tab nama file tidak peka huruf besar/kecil. Penyelesaian tab menelusuri daftar nama menggunakan pencocokan yang tidak peka huruf besar/kecil.
Get-Helpmendukung pencocokan pola yang tidak peka huruf besar/kecil pada platform Unix.Import-Moduletidak peka huruf besar/kecil saat digunakan dengan nama file untuk menentukan nama modul.
Dukungan sistem file untuk Linux dan macOS
- Jalur yang diberikan ke cmdlet sekarang slash-agnostic (keduanya
/dan\bekerja sebagai pemisah direktori) - Spesifikasi Direktori Dasar XDG sekarang dihormati dan digunakan secara default:
- Jalur profil Linux/macOS terletak di
~/.config/powershell/profile.ps1 - Jalur penyimpanan riwayat terletak di
~/.local/share/powershell/PSReadline/ConsoleHost_history.txt - Jalur modul pengguna terletak di
~/.local/share/powershell/Modules
- Jalur profil Linux/macOS terletak di
- Dukungan untuk nama file dan folder yang berisi karakter titik dua di Unix.
- Dukungan untuk nama skrip atau jalur lengkap yang memiliki koma.
- Deteksi kapan parameter LiteralPath digunakan untuk menekan ekspansi kartubebas untuk cmdlet navigasi.
- Diperbarui
Get-ChildItemuntuk bekerja lebih seperti *nixls -Rdan perintah asli WindowsDIR /S.Get-ChildItemsekarang mengembalikan tautan simbolis yang ditemui selama pencarian rekursif dan tidak mencari direktori yang ditargetkan tautan tersebut.
Ekstensi File .PS1
Skrip PowerShell harus berakhir .ps1 agar penerjemah memahami cara memuat dan menjalankannya dalam proses saat ini. Menjalankan skrip dalam proses saat ini adalah perilaku yang diharapkan untuk PowerShell. Anda dapat menambahkan #! nomor ajaib ke skrip yang tidak memiliki .ps1 ekstensi, tetapi ini menyebabkan skrip dijalankan dalam instans PowerShell baru, mencegah skrip berfungsi dengan benar saat bertukar objek. Perilaku ini mungkin diinginkan saat menjalankan skrip PowerShell dari Bash atau shell lain.
Alias kenyamanan dihapus
PowerShell menyediakan sekumpulan alias di Windows yang memetakan ke nama perintah Linux untuk kenyamanan pengguna. Di Linux dan macOS, "alias kenyamanan" untuk perintah lsdasar , , , catcprmmanmvmountdan ps dihapus untuk memungkinkan executable asli berjalan tanpa menentukan jalur.
Pencatatan
Di macOS, PowerShell menggunakan API asli os_log untuk masuk ke sistem pengelogan terpadu Apple.
Di Linux, PowerShell menggunakan Syslog, solusi pengelogan di mana-mana.
Kontrol Pekerjaan
Tidak ada dukungan kontrol pekerjaan bergaya Unix di PowerShell di Linux atau macOS. Perintah fg dan bg tidak tersedia. Namun, Anda dapat menggunakan pekerjaan PowerShell yang berfungsi di semua platform.
Menempatkan & di akhir alur menyebabkan alur dijalankan sebagai pekerjaan PowerShell. Saat alur di latar belakang, objek pekerjaan dikembalikan. Setelah alur berjalan sebagai pekerjaan, semua *-Job cmdlet 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 berjalan di direktori saat ini alih-alih direktori beranda pengguna.
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.
PowerShell mendukung PowerShell Remoting (PSRP) melalui SSH di semua platform (Windows, Linux, dan macOS). Untuk informasi selengkapnya, lihat Jarak jauh SSH di PowerShell.
Dukungan Just-Enough-Administration (JEA)
PowerShell di Linux atau macOS tidak memungkinkan Anda membuat titik akhir jarak jauh administrasi terbatas (JEA).
sudo, , execdan PowerShell
Karena PowerShell menjalankan sebagian besar perintah dalam memori (seperti Python atau Ruby), Anda tidak dapat menggunakan sudo langsung dengan bawaan PowerShell. Anda dapat menjalankan pwsh dari sudo. Jika perlu menjalankan cmdlet PowerShell dari dalam PowerShell dengan sudo, misalnya, sudo Set-Date 8/18/2016, maka Anda akan menggunakan sudo pwsh Set-Date 8/18/2016.
Modul yang disertakan pada platform non-Windows
Untuk platform non-Windows, PowerShell menyertakan modul berikut:
- Microsoft.PowerShell.Archive
- Microsoft.PowerShell.Core
- Microsoft.PowerShell.Host
- Microsoft.PowerShell.Management
- Microsoft.PowerShell.Security
- Microsoft.PowerShell.Utility
- PackageManagement
- PowerShellGet
- PSReadLine
- ThreadJob
Sejumlah besar perintah (cmdlet) yang umumnya tersedia di PowerShell tidak tersedia di Linux atau macOS. Seringkali, perintah ini tidak berlaku untuk platform ini. Misalnya, perintah untuk fitur khusus Windows seperti registri atau layanan tidak tersedia. Perintah lain, seperti Set-ExecutionPolicy, ada tetapi tidak berfungsi.
Untuk daftar modul dan cmdlet yang komprehensif serta platform yang mereka dukung, lihat Riwayat rilis modul dan cmdlet.
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
Modul khusus Windows berikut ini tidak disertakan dalam PowerShell untuk Linux atau macOS.
- CimCmdlets
- Microsoft.PowerShell.Diagnostics
- Microsoft.WSMan.Management
- PSDiagnostics
Cmdlet tidak tersedia di platform non-Windows
Beberapa cmdlet dihapus dari PowerShell. Yang lain tidak tersedia atau mungkin bekerja secara berbeda pada platform non-Windows. Untuk daftar cmdlet komprehensif yang dihapus dari PowerShell, lihat Cmdlet yang dihapus dari PowerShell.
Microsoft.PowerShell.Core
Cmdlet berikut tidak tersedia di Linux atau macOS:
Disable-PSRemotingEnable-PSRemotingConnect-PSSessionDisconnect-PSSessionReceive-PSSessionGet-PSSessionCapabilityDisable-PSSessionConfigurationEnable-PSSessionConfigurationGet-PSSessionConfigurationRegister-PSSessionConfigurationSet-PSSessionConfigurationUnregister-PSSessionConfigurationTest-PSSessionConfigurationFile
Parameter ShowWindow Get-Help tidak tersedia untuk platform non-Windows. PowerShell 7.3 menambahkan Switch-Process cmdlet dan exec fungsi untuk Linux dan macOS. Perintah ini tidak tersedia di Windows.
Cmdlet Microsoft.PowerShell.Security
Cmdlet berikut tidak tersedia di Linux atau macOS:
Get-AclSet-AclGet-AuthenticodeSignatureSet-AuthenticodeSignatureNew-FileCatalogTest-FileCatalog
Cmdlet ini hanya tersedia mulai dari PowerShell 7.1.
Get-CmsMessageProtect-CmsMessageUnprotect-CmsMessage
Cmdlet Microsoft.PowerShell.Management
Cmdlet berikut tidak tersedia di Linux dan macOS:
Rename-ComputerGet-ComputerInfoGet-HotFixClear-RecycleBinGet-ServiceNew-ServiceRemove-ServiceRestart-ServiceResume-ServiceSet-ServiceStart-ServiceStop-ServiceSuspend-ServiceSet-TimeZone
Cmdlet berikut tersedia dengan batasan:
Get-Clipboard- tersedia di PowerShell 7.0+Set-Clipboard- tersedia di PowerShell 7.0+Restart-Computer- tersedia untuk Linux dan macOS di PowerShell 7.1+Stop-Computer- tersedia untuk Linux dan macOS di PowerShell 7.1+
Cmdlet Microsoft.PowerShell.Utility
Cmdlet berikut tidak tersedia di Linux dan macOS:
Convert-StringConvertFrom-StringConvertFrom-SddlStringOut-GridViewOut-PrinterShow-Command
Alias tidak tersedia di Linux atau macOS
Tabel berikut mencantumkan alias yang tersedia untuk Windows yang tidak tersedia di platform non-Windows. Alias ini tidak tersedia karena alias bertentangan dengan perintah asli pada platform tersebut.
| Alias | Cmdlet |
|---|---|
ac |
Add-Content |
cat |
Get-Content |
clear |
Clear-Host |
compare |
Compare-Object |
cp |
Copy-Item |
cpp |
Copy-ItemProperty |
diff |
Compare-Object |
kill |
Stop-Process |
ls |
Get-ChildItem |
man |
help |
mount |
New-PSDrive |
mv |
Move-Item |
ps |
Get-Process |
rm |
Remove-Item |
rmdir |
Remove-Item |
sleep |
Start-Sleep |
sort |
Sort-Object |
start |
Start-Process |
tee |
Tee-Object |
write |
Write-Output |
Tabel tidak menyertakan alias tidak tersedia untuk cmdlet yang tidak ada di platform non-Windows.
Konfigurasi Status yang Diinginkan PowerShell (DSC)
Dimulai dengan PowerShell 7.2, modul PSDesiredStateConfiguration dihapus dari PowerShell dan diterbitkan di Galeri PowerShell. Untuk informasi selengkapnya, lihat pengumuman di blog Tim PowerShell. Untuk informasi selengkapnya tentang menggunakan DSC di Linux, lihat Mulai menggunakan DSC untuk Linux. DSC v1.1 dan v2.x tidak didukung di macOS. DSC v3 didukung di Windows, Linux, dan macOS, tetapi masih dalam pengembangan awal.