Menjalankan skrip di Mesin Virtual Windows Anda dengan menggunakan tindakan Jalankan Perintah

Fitur Perintah Jalankan menggunakan agen mesin virtual (VM) untuk menjalankan skrip PowerShell dalam Azure Windows VM. Anda dapat menggunakan skrip ini untuk manajemen komputer atau aplikasi umum. Skrip tersebut dapat membantu Anda dengan cepat mendiagnosis dan memulihkan akses komputer virtual dan masalah jaringan, dan membuat komputer virtual kembali ke kondisi yang baik.

Keuntungan

Anda dapat mengakses komputer virtual Anda dengan berbagai cara. Perintah Jalankan dapat menjalankan skrip pada komputer virtual Anda dari jarak jauh dengan menggunakan agen VM. Anda menggunakan Run Command melalui portal Azure, REST API, atau PowerShell untuk VM Windows.

Kemampuan ini berguna dalam semua skenario di mana Anda ingin menjalankan skrip di dalam komputer virtual. Ini adalah satu-satunya cara untuk memecahkan masalah dan memulihkan komputer virtual yang tidak memiliki RDP atau SSH port terbuka karena konfigurasi jaringan atau pengguna administratif yang tidak tepat.

Prasyarat

OS Windows Yang Didukung

OS Windows x64
Windows 10 Didukung
Windows 11 Didukung
Windows Server 2008 SP2 Didukung
Windows Server 2008 R2 Didukung
Windows Server 2012 Didukung
Windows Server 2012 R2 Didukung
Server Windows 2016 Didukung
Windows Server 2016 Core Didukung
Server Windows 2019 Didukung
Windows Server 2019 Core Didukung
Windows Server 2022 Didukung
Windows Server 2022 Core Didukung

Batasan

Batasan berikut berlaku saat Anda menggunakan Run Command:

  • Output dibatasi hingga 4.096 byte terakhir.
  • Waktu minimum untuk menjalankan skrip adalah sekitar 20 detik.
  • Skrip dijalankan sebagai Sistem pada Windows.
  • Satu skrip pada satu waktu dapat dijalankan.
  • Skrip yang meminta informasi (mode interaktif) tidak didukung.
  • Anda tidak dapat membatalkan skrip yang sedang berjalan.
  • Waktu maksimum yang dapat dijalankan skrip adalah 90 menit. Setelah itu, akan kehabisan waktu.
  • Konektivitas keluar dari VM diperlukan untuk mengembalikan hasil skrip.
  • Tidak disarankan untuk menjalankan skrip yang akan menyebabkan penghentian atau pembaruan Agen VM. Skrip dapat membiarkan ekstensi dalam status Transisi, yang mengarah ke waktu tunggu.

Catatan

Agar berfungsi dengan benar, Jalankan Perintah memerlukan konektivitas (port 443) ke alamat IP publik Azure. Jika ekstensi tidak memiliki akses ke titik akhir ini, skrip mungkin berhasil berjalan tetapi tidak mengembalikan hasilnya. Jika Anda memblokir lalu lintas di komputer virtual, Anda dapat menggunakan tag layanan untuk mengizinkan lalu lintas ke alamat IP publik Azure dengan menggunakan tag AzureCloud.

Fitur Jalankan Perintah tidak berfungsi jika status agen VM TIDAK SIAP. Periksa status agen di properti VM di portal Microsoft Azure.

Perintah yang tersedia

Tabel ini menunjukkan daftar perintah yang tersedia untuk VM Windows. Anda dapat menggunakan perintah RunPowerShellScript untuk menjalankan skrip kustom apa pun yang Anda inginkan. Saat Anda menggunakan Azure CLI atau PowerShell untuk menjalankan perintah, nilai yang Anda berikan untuk parameter --command-id atau -CommandId harus salah satu dari nilai yang tercantum berikut ini. Saat Anda menentukan nilai yang bukan perintah yang tersedia, Anda menerima kesalahan ini:

The entity was not found in this Azure location

Nama Deskripsi
RunPowerShellScript Menjalankan skrip PowerShell
DisableNLA Nonaktifkan Autentikasi Tingkat Jaringan
DisableWindowsUpdate Nonaktifkan Pembaruan Otomatis Windows Update
EnableAdminAccount Memeriksa apakah akun administrator lokal dinonaktifkan, dan jika demikian mengaktifkannya.
EnableEMS Aktifkan EMS
EnableRemotePS Mengonfigurasi komputer untuk mengaktifkan PowerShell jarak jauh.
EnableWindowsUpdate Aktifkan Pembaruan Otomatis Windows Update
IPConfig Menampilkan informasi terperinci untuk alamat IP, subnet mask, dan gateway default untuk setiap adapter yang terikat ke TCP/IP.
RDPSettings Memeriksa pengaturan registri dan pengaturan kebijakan domain. Menyarankan tindakan kebijakan jika komputer merupakan bagian dari domain, atau memodifikasi pengaturan ke nilai default.
ResetRDPCert Menghapus sertifikat TLS/SSL yang terkait dengan pendengar RDP dan memulihkan keamanan pendengar RDP ke default. Gunakan skrip ini jika Anda melihat masalah pada sertifikat.
SetRDPPort Mengatur nomor port default atau yang ditentukan pengguna untuk sambungan Remote Desktop. Mengaktifkan aturan firewall untuk akses masuk ke port.

Azure CLI

Contoh berikut menggunakan perintah az vm run-command untuk menjalankan skrip shell pada VM Azure Windows.

# script.ps1
#   param(
#       [string]$arg1,
#       [string]$arg2
#   )
#   Write-Host This is a sample script with parameters $arg1 and $arg2

az vm run-command invoke  --command-id RunPowerShellScript --name win-vm -g my-resource-group \
    --scripts @script.ps1 --parameters "arg1=somefoo" "arg2=somebar"

Portal Azure

Buka Mesin Virtual di portal Microsoft Azure dan pilih Jalankan perintah di menu sebelah kiri, pada bagian Operasi. Anda melihat daftar perintah yang tersedia untuk dijalankan pada komputer virtual.

Daftar perintah

Pilih perintah untuk dijalankan. Beberapa perintah mungkin memiliki parameter input opsional atau wajib. Untuk perintah tersebut, parameter disajikan sebagai bidang teks bagi Anda untuk memberikan nilai input. Untuk setiap perintah, Anda dapat melihat skrip yang sedang dijalankan dengan memperluas Lihat skrip. RunPowerShellScript berbeda dari perintah lainnya, karena memungkinkan Anda untuk menyediakan skrip khusus Anda sendiri.

Catatan

Perintah bawaan tidak dapat diedit.

Setelah Anda memilih perintah, pilih Jalankan untuk menjalankan skrip. Setelah skrip selesai, ia mengembalikan output dan kesalahan apa pun di jendela output. Tangkapan layar berikut menunjukkan contoh output dari menjalankan perintah RDPSettings.

Jalankan output skrip perintah

PowerShell

Contoh berikut menggunakan cmdlet Invoke-AzVMRunCommand untuk menjalankan skrip PowerShell di komputer virtual Azure. Cmdlet meminta skrip yang direferensikan dalam parameter -ScriptPath menjadi lokal di mana cmdlet dijalankan.

Invoke-AzVMRunCommand -ResourceGroupName '<myResourceGroup>' -Name '<myVMName>' -CommandId 'RunPowerShellScript' -ScriptPath '<pathToScript>' -Parameter @{"arg1" = "var1";"arg2" = "var2"}

Catatan

Nilai parameter dapat berupa jenis string saja dan skrip bertanggung jawab untuk mengonversinya ke jenis lain jika diperlukan.

Membatasi akses ke Run Command

Mencantumkan perintah yang dijalankan atau menampilkan detail perintah memerlukan izin Microsoft.Compute/locations/runCommands/read pada Tingkat Langganan. Peran Pembaca bawaan dan tingkat yang lebih tinggi memiliki izin ini.

Menjalankan perintah memerlukan izin Microsoft.Compute/virtualMachines/runCommands/write. Peran Kontributor Komputer Virtual dan tingkat yang lebih tinggi memiliki izin ini.

Anda dapat menggunakan salah satu peran bawaan atau membuat peran kustom untuk menggunakan Run Command.

Pemecahan masalah Perintah Eksekusi Tindakan Windows

Saat memecahkan masalah perintah eksekusi tindakan untuk lingkungan Windows, lihat file log RunCommandExtension yang biasanya terletak di direktori berikut: C:\WindowsAzure\Logs\Plugins\Microsoft.CPlat.Core.RunCommandWindows\<version>\RunCommandExtension.log untuk detail lebih lanjut.

Masalah yang diketahui

Ekstensi Perintah Eksekusi Tindakan Anda mungkin gagal dijalankan di lingkungan Windows Anda jika perintah berisi karakter yang dipesan. Contohnya:

& Jika simbol diteruskan dalam parameter perintah Anda seperti skrip PowerShell di bawah ini, mungkin gagal.

$paramm='abc&jj'
Invoke-AzVMRunCommand -ResourceGroupName AzureCloudService1 -Name test -CommandId 'RunPowerShellScript' -ScriptPath C:\data\228332902\PostAppConfig.ps1 -Parameter @{"Prefix" = $paramm}

^ Gunakan karakter untuk meloloskan & dalam argumen, seperti$paramm='abc^&jj'

Ekstensi Jalankan Perintah mungkin juga gagal dijalankan jika perintah yang akan dijalankan berisi "\n" di jalur, karena akan diperlakukan sebagai baris baru. Misalnya, C:\Windows\notepad.exe berisi \n di jalur file. Pertimbangkan untuk mengganti \n dengan \N di jalur Anda.

Penghapusan Perintah Eksekusi Tindakan

Jika perlu menghapus perintah eksekusi tindakan Ekstensi Windows, lihat langkah-langkah di bawah ini untuk Azure PowerShell dan CLI:

Ganti rgname dan vmname dengan nama grup sumber daya dan nama komputer virtual yang relevan dalam contoh penghapusan berikut.

 Invoke-AzVMRunCommand -ResourceGroupName 'rgname' -VMName 'vmname' -CommandId 'RemoveRunCommandWindowsExtension'
az vm run-command invoke  --command-id RemoveRunCommandWindowsExtension --name vmname -g rgname

Catatan

Saat Anda menerapkan Perintah Jalankan lagi, ekstensi akan diinstal secara otomatis. Anda dapat menggunakan perintah penghapusan ekstensi untuk memecahkan masalah apa pun yang terkait dengan ekstensi.

Langkah berikutnya

Untuk mempelajari tentang cara lain menjalankan skrip dan perintah dari jarak jauh di VM Anda, lihat Menjalankan skrip di VM Windows Anda.