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. Run Command dapat menjalankan skrip pada komputer virtual Anda dari jarak jauh dengan menggunakan agen komputer virtual. 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' 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 | Keterangan |
---|---|
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.
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.
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/action
. 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 Tindakan Jalankan Perintah Windows
Saat memecahkan masalah perintah eksekusi tindakan untuk lingkungan Windows, lihat file log RunCommandExtension biasanya terletak di direktori berikut: C:\WindowsAzure\Logs\Plugins\Microsoft.CPlat.Core.RunCommandWindows\<version>\RunCommandExtension.log
untuk detail lebih lanjut.
Masalah umum
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.Pastikan Anda tidak memiliki pengaturan kustom dalam kunci
HKLM\SOFTWARE\Microsoft\Command Processor\AutoRun
registri (dirinci di sini). Ini dapat memicu selama runCommand Extension menginstal atau mengaktifkan fase dan menyebabkan kesalahan seperti 'XYZ tidak dikenali sebagai perintah internal atau eksternal, program yang dapat dioperasikan atau file batch'.
Penghapusan Perintah Eksekusi Tindakan
Jika perlu menghapus perintah eksekusi tindakan Anda 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.