Bermigrasi dari Windows PowerShell 5.1 ke PowerShell 7

Dirancang untuk lingkungan cloud, lokal, dan hibrid, PowerShell 7 dikemas dengan penyempurnaan dan fitur baru.

  • Menginstal dan menjalankan berdampingan dengan Windows PowerShell
  • Kompatibilitas yang disempurnakan dengan modul Windows PowerShell yang ada
  • Fitur bahasa baru, seperti operator terner dan ForEach-Object -Parallel
  • Meningkatkan performa
  • Jarak jauh berbasis SSH
  • Interoperabilitas lintas platform
  • Dukungan untuk kontainer Docker

PowerShell 7 bekerja berdampingan dengan Windows PowerShell memungkinkan Anda dengan mudah menguji dan membandingkan antara edisi sebelum penyebaran. Migrasi sederhana, cepat, dan aman.

PowerShell 7 didukung pada sistem operasi Windows berikut:

  • Windows 10, dan 11
  • Windows Server 2016, 2019, dan 2022

PowerShell 7 juga berjalan pada macOS dan beberapa distribusi Linux. Untuk daftar sistem operasi yang didukung dan informasi tentang siklus hidup dukungan, lihat Siklus Hidup Dukungan PowerShell.

Menginstal PowerShell 7

Untuk fleksibilitas dan untuk mendukung kebutuhan IT, teknisi DevOps, dan pengembang, ada beberapa opsi yang tersedia untuk menginstal PowerShell 7. Dalam kebanyakan kasus, opsi penginstalan dapat dikurangi ke metode berikut:

  • Menyebarkan PowerShell menggunakan paket MSI
  • Menyebarkan PowerShell menggunakan paket ZIP

Catatan

Paket MSI dapat disebarkan dan diperbarui dengan produk manajemen seperti Microsoft Configuration Manager. Unduh paket dari halaman Rilis GitHub.

Menyebarkan paket MSI memerlukan izin Administrator. Paket ZIP dapat disebarkan oleh pengguna mana pun. Paket ZIP adalah cara term mudah untuk menginstal PowerShell 7 untuk pengujian, sebelum berkomitmen untuk penginstalan penuh.

Anda juga dapat menginstal PowerShell 7 melalui Windows Store atau winget. Untuk informasi selengkapnya tentang kedua metode ini, lihat instruksi terperinci dalam Menginstal PowerShell di Windows.

Menggunakan PowerShell 7 berdampingan dengan Windows PowerShell 5.1

PowerShell 7 dirancang untuk hidup berdampingan dengan Windows PowerShell 5.1. Fitur berikut memastikan bahwa investasi Anda di PowerShell dilindungi dan migrasi Anda ke PowerShell 7 sederhana.

  • Pisahkan jalur penginstalan dan nama yang dapat dieksekusi
  • Pisahkan PSModulePath
  • Memisahkan profil untuk setiap versi
  • Kompatibilitas modul yang ditingkatkan
  • Titik akhir jarak jauh baru
  • Dukungan kebijakan grup
  • Memisahkan log Peristiwa

Perbedaan dalam versi .NET

PowerShell 7.2 dibangun di .NET 6.0. Windows PowerShell 5.1 dibangun di .NET Framework 4.x. Perbedaan antara versi .NET dapat memengaruhi perilaku skrip Anda, terutama jika Anda memanggil metode .NET secara langsung. Untuk informasi selengkapnya, Perbedaan antara Windows PowerShell 5.1 dan PowerShell 7.x.

Pisahkan jalur penginstalan dan nama yang dapat dieksekusi

PowerShell 7 diinstal ke direktori baru, memungkinkan eksekusi berdampingan dengan Windows PowerShell 5.1.

Instal lokasi menurut versi:

  • Windows PowerShell 5.1: $env:WINDIR\System32\WindowsPowerShell\v1.0
  • PowerShell 6.x: $env:ProgramFiles\PowerShell\6
  • PowerShell 7: $env:ProgramFiles\PowerShell\7

Lokasi baru ditambahkan ke JALUR Yang memungkinkan Anda menjalankan Windows PowerShell 5.1 dan PowerShell 7. Jika Anda bermigrasi dari PowerShell 6.x ke PowerShell 7, PowerShell 6 akan dihapus dan PATH diganti.

Dalam Windows PowerShell, executable PowerShell diberi nama powershell.exe. Dalam versi 6 ke atas, executable diberi nama pwsh.exe. Nama baru memudahkan untuk mendukung eksekusi berdampingan dari kedua versi.

Pisahkan PSModulePath

Secara default, Windows PowerShell dan modul penyimpanan PowerShell 7 di lokasi yang berbeda. PowerShell 7 menggabungkan lokasi tersebut dalam variabel lingkungan $Env:PSModulePath. Saat mengimpor modul berdasarkan nama, PowerShell memeriksa lokasi yang ditentukan oleh $Env:PSModulePath. Ini memungkinkan PowerShell 7 memuat modul Core dan Desktop.

Instal Cakupan Windows PowerShell 5.1 PowerShell 7.0
Modul PowerShell $env:WINDIR\system32\WindowsPowerShell\v1.0\Modules $env:ProgramFiles\PowerShell\7\Modules
Pengguna terinstal
Cakupan AllUsers
$env:ProgramFiles\WindowsPowerShell\Modules $env:ProgramFiles\PowerShell\Modules
Pengguna terinstal
Cakupan CurrentUser
$HOME\Documents\WindowsPowerShell\Modules $HOME\Documents\PowerShell\Modules

Contoh berikut menunjukkan nilai $Env:PSModulePath default untuk setiap versi.

  • Untuk Windows PowerShell 5.1:

    $Env:PSModulePath -split (';')
    
    C:\Users\<user>\Documents\WindowsPowerShell\Modules
    C:\Program Files\WindowsPowerShell\Modules
    C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
    
  • Untuk PowerShell 7:

    $Env:PSModulePath -split (';')
    
    C:\Users\<user>\Documents\PowerShell\Modules
    C:\Program Files\PowerShell\Modules
    C:\Program Files\PowerShell\7\Modules
    C:\Program Files\WindowsPowerShell\Modules
    C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
    

Perhatikan bahwa PowerShell 7 menyertakan jalur Windows PowerShell dan jalur PowerShell 7 untuk menyediakan pengisian otomatis modul.

Catatan

Jalur tambahan mungkin ada jika Anda telah mengubah variabel lingkungan PSModulePath atau modul atau aplikasi kustom yang diinstal.

Untuk informasi selengkapnya, lihat about_PSModulePath.

Untuk informasi selengkapnya tentang Modul, lihat about_Modules.

Memisahkan profil

Profil PowerShell adalah skrip yang dijalankan saat PowerShell dimulai. Skrip ini menyesuaikan lingkungan Anda dengan menambahkan perintah, alias, fungsi, variabel, modul, dan drive PowerShell. Skrip profil membuat penyesuaian ini tersedia di setiap sesi tanpa harus membuatnya kembali secara manual.

Jalur ke lokasi profil telah berubah di PowerShell 7.

  • Di Windows PowerShell 5.1, lokasi profil adalah $HOME\Documents\WindowsPowerShell.
  • Di PowerShell 7, lokasi profil adalah $HOME\Documents\PowerShell.

Nama file profil juga telah berubah:

$PROFILE | Select-Object *Host* | Format-List
 AllUsersAllHosts       : C:\Program Files\PowerShell\7\profile.ps1
 AllUsersCurrentHost    : C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
 CurrentUserAllHosts    : C:\Users\<user>\Documents\PowerShell\profile.ps1
 CurrentUserCurrentHost : C:\Users\<user>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

Untuk informasi selengkapnya about_Profiles.

Kompatibilitas PowerShell 7 dengan modul Windows PowerShell 5.1

Sebagian besar modul yang Anda gunakan di Windows PowerShell 5.1 sudah berfungsi dengan PowerShell 7, termasuk Azure PowerShell dan Direktori Aktif. Kami terus bekerja dengan tim lain untuk menambahkan dukungan PowerShell 7 asli untuk modul lainnya termasuk Microsoft Graph, Office 365, dan lainnya. Untuk daftar modul yang didukung saat ini, lihat Kompatibilitas modul PowerShell 7.

Catatan

Di Windows, kami juga telah menambahkan switch UseWindowsPowerShell untuk Import-Module memudahkan transisi ke PowerShell 7 bagi mereka yang menggunakan modul yang tidak kompatibel. Untuk informasi selengkapnya tentang fungsionalitas ini, lihat about_Windows_PowerShell_Compatibility.

Jarak Jauh PowerShell

PowerShell jarak jauh memungkinkan Anda menjalankan perintah PowerShell apa pun di satu atau beberapa komputer jarak jauh. Anda dapat membuat koneksi persisten, memulai sesi interaktif, dan menjalankan skrip di komputer jarak jauh.

Jarak jauh WS-Management

Windows PowerShell 5.1 ke bawah menggunakan protokol WS-Management (WSMAN) untuk negosiasi koneksi dan transportasi data. Windows Remote Management (WinRM) menggunakan protokol WSMAN. Jika WinRM telah diaktifkan, PowerShell 7 menggunakan titik akhir Windows PowerShell 5.1 yang ada bernama Microsoft.PowerShell untuk koneksi jarak jauh. Untuk memperbarui PowerShell 7 agar menyertakan titik akhirnya sendiri, jalankan Enable-PSRemoting cmdlet. Untuk informasi tentang menyambungkan ke titik akhir tertentu, lihat Jarak Jauh WS-Management di PowerShell

Untuk menggunakan jarak jauh Windows PowerShell, komputer jarak jauh harus dikonfigurasi untuk manajemen jarak jauh. Untuk informasi selengkapnya, termasuk instruksi, lihat Tentang Persyaratan Jarak Jauh.

Untuk informasi selengkapnya tentang bekerja dengan jarak jauh, lihat Tentang Jarak Jauh

Jarak jauh berbasis SSH

Jarak jauh berbasis SSH ditambahkan di PowerShell 6.x untuk mendukung sistem operasi lain yang tidak dapat menggunakan komponen asli Windows seperti WinRM. Jarak jauh SSH membuat proses host PowerShell pada komputer target sebagai subsistem SSH. Untuk detail dan contoh tentang menyiapkan jarak jauh berbasis SSH di Windows atau Linux, lihat: PowerShell jarak jauh melalui SSH.

Catatan

Galeri PowerShell (PSGallery) berisi modul dan cmdlet yang secara otomatis mengonfigurasi jarak jauh berbasis SSH. Microsoft.PowerShell.RemotingTools Instal modul dari PSGallery dan jalankan Enable-SSH cmdlet.

New-PSSessionCmdlet , Enter-PSSession, dan Invoke-Command memiliki set parameter baru untuk mendukung koneksi SSH.

[-HostName <string>]  [-UserName <string>]  [-KeyFilePath <string>]

Untuk membuat sesi jarak jauh, tentukan komputer target dengan parameter HostName dan berikan nama pengguna dengan UserName. Saat menjalankan cmdlet secara interaktif, Anda akan dimintai kata sandi.

Enter-PSSession -HostName <Computer> -UserName <Username>

Atau, saat menggunakan parameter HostName , berikan informasi nama pengguna diikuti dengan tanda (@), diikuti dengan nama komputer.

Enter-PSSession -HostName <Username>@<Computer>

Anda dapat menyiapkan autentikasi kunci SSH menggunakan file kunci privat dengan parameter KeyFilePath . Untuk informasi selengkapnya, lihat Manajemen Kunci OpenSSH.

Kebijakan Grup didukung

PowerShell menyertakan pengaturan Kebijakan Grup untuk membantu Anda menentukan nilai opsi yang konsisten untuk server di lingkungan perusahaan. Pengaturan ini meliputi:

  • Konfigurasi sesi konsol: Mengatur titik akhir konfigurasi tempat PowerShell dijalankan.
  • Aktifkan Pengelogan Modul: Mengatur properti Modul LogPipelineExecutionDetails.
  • Mengaktifkan Pengelogan Blok Skrip PowerShell: Mengaktifkan pengelogan terperinci dari semua skrip PowerShell.
  • Aktifkan Eksekusi Skrip: Mengatur kebijakan eksekusi PowerShell.
  • Aktifkan Transkripsi PowerShell: memungkinkan pengambilan input dan output perintah PowerShell menjadi transkrip berbasis teks.
  • Atur jalur sumber default untuk Bantuan-Pembaruan: Mengatur sumber untuk Bantuan yang Dapat Diperbarui ke direktori, bukan Internet.

Untuk mengetahui informasi selengkapnya, lihat about_Group_Policy_Settings.

PowerShell 7 menyertakan templat Kebijakan Grup dan skrip penginstalan di $PSHOME.

Alat Kebijakan Grup menggunakan file templat administratif (.admx, .adml) untuk mengisi pengaturan kebijakan di antarmuka pengguna. Ini memungkinkan administrator untuk mengelola pengaturan kebijakan berbasis registri. InstallPSCorePolicyDefinitions.ps1 Skrip menginstal Templat Administratif PowerShell di komputer lokal.

Get-ChildItem -Path $PSHOME -Filter *Core*Policy*
    Directory: C:\Program Files\PowerShell\7

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/27/2020 12:38 AM          15861 InstallPSCorePolicyDefinitions.ps1
-a---           2/27/2020 12:28 AM           9675 PowerShellCoreExecutionPolicy.adml
-a---           2/27/2020 12:28 AM           6201 PowerShellCoreExecutionPolicy.admx

Pisahkan Log Peristiwa

Peristiwa log Windows PowerShell dan PowerShell 7 untuk memisahkan log peristiwa. Gunakan perintah berikut untuk mendapatkan daftar log PowerShell.

Get-WinEvent -ListLog *PowerShell*

Untuk informasi selengkapnya, lihat about_Logging_Windows.

Pengalaman pengeditan yang ditingkatkan dengan Visual Studio Code

Visual Studio Code (VSCode) dengan Ekstensi PowerShell adalah lingkungan pembuatan skrip yang didukung untuk PowerShell 7. Windows PowerShell Integrated Scripting Environment (ISE) hanya mendukung Windows PowerShell.

Ekstensi PowerShell yang diperbarui meliputi:

  • Mode kompatibilitas ISE baru
  • PSReadLine di Konsol Terintegrasi, termasuk penyorotan sintaksis, pengeditan multibaris, dan pencarian kembali
  • Stabilitas dan peningkatan performa
  • Integrasi CodeLens baru
  • Pelengkapan otomatis jalur yang disempurnakan

Untuk mempermudah transisi ke Visual Studio Code, gunakan fungsi Aktifkan Mode ISE yang tersedia di Palet Perintah. Fungsi ini mengalihkan VSCode ke dalam tata letak gaya ISE. Tata letak bergaya ISE memberi Anda semua fitur dan kemampuan baru PowerShell dalam pengalaman pengguna yang sudah dikenal.

Untuk beralih ke tata letak ISE baru, tekan Ctrl+Shift+P untuk membuka Palet Perintah, ketik PowerShell dan pilih PowerShell: Aktifkan Mode ISE.

Untuk mengatur tata letak ke tata letak asli, buka Palet Perintah, pilih PowerShell: Nonaktifkan Mode ISE (pulihkan ke default).

Untuk detail tentang menyesuaikan tata letak VSCode ke ISE, lihat Cara Mereplikasi Pengalaman ISE di Visual Studio Code

Catatan

Tidak ada rencana untuk memperbarui ISE dengan fitur baru. Dalam versi terbaru Windows 10 atau Windows Server 2019 dan yang lebih tinggi, ISE sekarang menjadi fitur yang dapat dipasang pengguna. Tidak ada rencana untuk menghapus ISE secara permanen. Tim PowerShell dan mitranya berfokus pada peningkatan pengalaman pembuatan skrip di ekstensi PowerShell untuk Visual Studio Code.

Langkah berikutnya

Berbekal pengetahuan untuk bermigrasi secara efektif, instal PowerShell 7 sekarang!