Yönetilen Komut Çalıştırmalarını kullanarak Windows sanal makinenizde betikleri çalıştırma
Şunlar için geçerlidir: ✔️ Windows VM'leri ✔️ Esnek ölçek kümeleri
Önemli
Yönetilen Çalıştırma Komutu şu anda Azure CLI, PowerShell ve API'de kullanılabilir. Portal işlevselliği yol haritasındadır.
Komut Çalıştır özelliği, bir Azure Windows VM'sinde betikleri yürütmek için sanal makine (VM) aracısını kullanır. Genel makine veya uygulama yönetimi için bu betikleri kullanabilirsiniz. Vm erişimi ve ağ sorunlarını hızla tanılamanıza ve düzeltmenize ve VM'yi yeniden iyi bir duruma döndürmenize yardımcı olabilir.
Güncelleştirilmiş yönetilen Çalıştırma Komutu, betikleri yürütmek için aynı VM aracı kanalını kullanır ve özgün eylem odaklı Çalıştırma Komutu üzerinde aşağıdaki geliştirmeleri sağlar:
- ARM dağıtım şablonu aracılığıyla güncelleştirilmiş Komut Çalıştırma desteği
- Birden çok betik için paralel yürütme
- Betikleri sıralı yürütme
- Kullanıcı tarafından belirtilen betik zaman aşımı
- Uzun süre çalışan (saatler/günler) betikler için destek
- Gizli dizileri (parametreler, parolalar) güvenli bir şekilde geçirme
Önkoşullar
Windows İşletim Sistemi Desteği
Windows İşletim Sistemi | x64 |
---|---|
Windows 10 | Desteklenir |
Windows 11 | Desteklenir |
Windows Server 2008 SP2 | Desteklenir |
Windows Server 2008 R2 | Desteklenir |
Windows Server 2012 | Desteklenir |
Windows Server 2012 R2 | Desteklenir |
Windows Server 2016 | Desteklenir |
Windows Server 2016 Core | Desteklenir |
Windows Server 2019 | Desteklenir |
Windows Server 2019 Core | Desteklenir |
Windows Server 2022 | Desteklenir |
Windows Server 2022 Core | Desteklenir |
Windows Server 2025 | Desteklenir |
Windows Server 2025 Core | Desteklenir |
Komut Çalıştırma'ya erişimi sınırlama
Çalıştırma komutlarının listelenmesi veya bir komutun ayrıntılarının gösterilmesi için Abonelik Düzeyinde izin gerekir Microsoft.Compute/locations/runCommands/read
. Yerleşik Okuyucu rolü ve üst düzeyler bu izne sahiptir.
Komut çalıştırmak için izin gerekir Microsoft.Compute/virtualMachines/runCommand/write
.
Sanal Makine Katılımcısı rolü ve üst düzeyler bu izne sahiptir.
Komut Çalıştır'ı kullanmak için yerleşik rollerden birini kullanabilir veya özel bir rol oluşturabilirsiniz.
Azure CLI
Aşağıdaki örneklerde az vm run-command komutu kullanılarak Azure Windows VM'de kabuk betiği çalıştırılır.
VM ile betik yürütme
Bu komut betiği VM'ye teslim eder, yürütür ve yakalanan çıkışı döndürür.
az vm run-command create --name "myRunCommand" --vm-name "myVM" --resource-group "myRG" --script "Write-Host Hello World!"
Vm'de dağıtılan tüm RunCommand kaynaklarını listeleme
Bu komut, özellikleriyle birlikte önceden dağıtılan Çalıştırma Komutlarının tam listesini döndürür.
az vm run-command list --vm-name "myVM" --resource-group "myRG"
Yürütme durumunu ve sonuçlarını alma
Bu komut en son çıkış, başlangıç/bitiş saati, çıkış kodu ve yürütmenin terminal durumu gibi geçerli yürütme ilerleme durumunu alır.
az vm run-command show --name "myRunCommand" --vm-name "myVM" --resource-group "myRG" --expand instanceView
Not
içindeki instanceView
çıkış ve hata alanları son 4 KB ile sınırlıdır.
Tam çıkışa ve hataya erişmek isterseniz, veya Set-AzVMssRunCommand
kullanarak Set-AzVMRunCommand
Çalıştır Komutunu yürütürken ve -errorBlobUri
parametrelerini kullanarak -outputBlobUri
çıkış ve hata verilerini depolama ekleme bloblarına iletme seçeneğiniz vardır.
Vm'den RunCommand kaynağını silme
Daha önce VM'de dağıtılan RunCommand kaynağını kaldırın. Betik yürütme işlemi devam ediyorsa yürütme sonlandırılır.
az vm run-command delete --name "myRunCommand" --vm-name "myVM" --resource-group "myRG"
PowerShell
VM ile betik yürütme
Bu komut betiği VM'ye teslim eder, yürütür ve yakalanan çıkışı döndürür.
Set-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -Location "EastUS" -RunCommandName "RunCommandName" –SourceScript "echo Hello World!"
SourceScriptUri parametresini kullanarak VM'de betik yürütme
OutputBlobUri
ve ErrorBlobUri
isteğe bağlı parametrelerdir.
Set-AzVMRunCommand -ResourceGroupName "myRg" `
-VMName "myVM" `
-RunCommandName "RunCommandName" `
-SourceScriptUri “<SAS_URI_of_a_storage_blob_with_read_access_or_public_URI>" `
-OutputBlobUri “<SAS_URI_of_a_storage_append_blob_with_read_add_create_write_access>" `
-ErrorBlobUri “<SAS_URI_of_a_storage_append_blob_with_read_add_create_write_access>”
Vm'de uzun süre çalışan bir Çalıştırma Komutu yürütme
Yürütme süresi varsayılan 90 dakikadan daha uzun çalışmalıdır. 100 dakika çalıştırılmalıdır (6.0000 saniye -TimeoutInSecond parametresine bakın) sağlanan betiğin bu kadar uzun çalışması beklenir. 100 dakika sonra betik yürütme durdurulmalıdır.
Set-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri> -AsyncExecution -TimeoutInSecond 6000
Vm'de dağıtılan tüm RunCommand kaynaklarını listeleme
Bu komut, özellikleriyle birlikte önceden dağıtılan Çalıştırma Komutlarının tam listesini döndürür.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM"
Yürütme durumunu ve sonuçlarını alma
Bu komut en son çıkış, başlangıç/bitiş saati, çıkış kodu ve yürütmenin terminal durumu gibi geçerli yürütme ilerleme durumunu alır.
Get-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName" -Expand InstanceView
SourceScriptUri (depolama blob SAS URL'si) kullanarak VM'de Çalıştır Komutu oluşturma veya güncelleştirme
PowerShell betiği içeren bir depolama blobunun SAS URL'sini kullanarak Bir Windows VM'de Çalıştır Komutu oluşturun veya güncelleştirin.
SourceScriptUri
bir depolama blobu tam SAS URL'si veya genel URL olabilir.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Not
SAS URL'si bloba okuma erişimi sağlamalıdır. SAS URL'si için 24 saatlik bir süre sonu önerilir. SAS URL'leri Blob'un seçenekleri kullanılarak Azure portalında veya kullanılarak New-AzStorageBlobSASToken
SAS belirteci oluşturulabilir. kullanarak New-AzStorageBlobSASToken
SAS belirteci oluşturuyorsanız, SAS URL'niz = "temel blob URL'si" + "?" + "SAS belirteci"New-AzStorageBlobSASToken
Çalıştırma Komutunu Oluşturduktan veya Güncelleştirdikten Sonra VM için Çalıştır Komut Örneği Görünümü Alma
Örnek Görünümü ile VM için Çalıştır Komutu alın. Örnek Görünümü çalıştırma komutunun yürütme durumunu (Başarılı, Başarısız vb.), çıkış kodunu, standart çıkışı ve Komut Çalıştır kullanılarak betik yürütülerek oluşturulan standart hatayı içerir. Sıfır olmayan ExitCode başarısız bir yürütmeyi gösterir.
$x = Get-AzVMRunCommand -ResourceGroupName MyRG -VMName MyVM -RunCommandName MyRunCommand -Expand InstanceView
$x.InstanceView
Örnek çıkış
ExecutionState : Succeeded
ExecutionMessage :
ExitCode : 0
Output :
output : uid=0(root) gid=0(root) groups=0(root)
HelloWorld
Error :
StartTime : 10/27/2022 9:10:52 PM
EndTime : 10/27/2022 9:10:55 PM
Statuses :
InstanceView.ExecutionState
: Kullanıcının Komut Çalıştır betiğinin durumu. Betiğinizin başarılı olup olmadığını öğrenmek için bu duruma bakın.
ProvisioningState
: Uçtan uca genel uzantı sağlama durumu (uzantı platformunun Komut Çalıştır betiğini tetikleyip tetikleyemediği).
ScriptLocalPath (yerel betik dosyası) kullanarak VM'de Çalıştır Komutu oluşturma veya güncelleştirme
Cmdlet'in yürütüldüğü istemci makinesinde bulunan yerel bir betik dosyasını kullanarak VM'de Çalıştır Komutunu oluşturun veya güncelleştirin.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1"
SourceScript kullanarak vm üzerinde Çalıştır Komutu oluşturma veya güncelleştirme (betik metni)
Betik içeriğini doğrudan -SourceScript parametresine geçiren bir VM'de Çalıştır Komutunu oluşturun veya güncelleştirin. Birden çok komutu ayırmak için kullanın ;
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand2 -Location EastUS2EUAP -SourceScript "id; echo HelloWorld"
SourceCommandId kullanarak VM'de Çalıştır Komutu oluşturma veya güncelleştirme
Önceden var olan commandId'sini kullanarak bir VM'de Çalıştır Komutu oluşturun veya güncelleştirin. Kullanılabilir commandId'ler Get-AzVMRunCommandDocument kullanılarak alınabilir.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceCommandId DisableWindowsUpdate
OutputBlobUri, ErrorBlobUri kullanarak çıktıya standart çıkış ve standart hata iletileri akışı yapmak için VM'de Çalıştır Komutu oluşturma veya güncelleştirme ve Blob ekleme hatası
Vm'de Çalıştır Komutunu oluşturun veya güncelleştirin ve standart çıkış ve standart hata iletilerini çıkışa akışla aktarıp Blob ekleme hatası oluştu.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVML -RunCommandName MyRunCommand3 -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1" -OutputBlobUri <OutPutBlobUrI> -ErrorBlobUri "ErrorBlobUri
Not
Çıktı ve hata bloblarının AppendBlob türü olması ve SAS URL'lerinin bloba okuma, ekleme, oluşturma, yazma erişimi sağlaması gerekir. SAS URL'si için 24 saatlik bir süre sonu önerilir. Çıkış veya hata blobu yoksa AppendBlob türünde bir blob oluşturulur. SAS URL'leri Blob'un seçenekleri kullanılarak Azure portalında veya kullanılarak New-AzStorageBlobSASToken
SAS belirteci oluşturulabilir.
RunAsUser ve RunAsPassword parametrelerini kullanarak farklı bir kullanıcı olarak VM'de Çalıştır Komutu oluşturma veya güncelleştirme
ve RunAsPassword
parametrelerini kullanarak RunAsUser
farklı bir kullanıcı olarak bir VM'de Çalıştır Komutu oluşturun veya güncelleştirin. RunA'ların düzgün çalışması için VM yöneticisine başvurun ve kullanıcının VM'ye eklendiğinden, kullanıcının Çalıştır Komutu (Dizinler, Dosyalar, Ağ vb.) tarafından erişilen kaynaklara erişimi olduğundan ve Windows VM'sinde 'İkincil Oturum Açma' hizmetinin vm üzerinde çalıştığından emin olun.
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -ScriptLocalPath "C:\MyScriptsDir\MyScript.ps1" -RunAsUser myusername -RunAsPassword mypassword
SourceScriptUri (depolama blob SAS URL'si) kullanarak bir Sanal Makine Ölçek Kümeleri kaynağında Çalıştır Komutu oluşturma veya güncelleştirme
PowerShell betiği içeren bir depolama blobunun SAS URL'sini kullanarak Bir Windows Sanal Makine Ölçek Kümeleri kaynağında Çalıştır Komutu oluşturun veya güncelleştirin.
Set-AzVmssVMRunCommand -ResourceGroupName MyRG0 -VMScaleSetName MyVMSS -InstanceId 0 -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri>
Not
SAS URL'si bloba okuma erişimi sağlamalıdır. SAS URL'si için 24 saatlik bir süre sonu önerilir. SAS URL'leri Blob'un seçenekleri kullanılarak Azure portalında veya kullanılarak New-AzStorageBlobSASToken
SAS belirteci oluşturulabilir. kullanarak New-AzStorageBlobSASToken
SAS belirteci oluşturuyorsanız, SAS URL biçimi şöyledir: temel blob URL'si + "?" + adresinden New-AzStorageBlobSASToken
SAS belirteci.
Parametre ve ProtectedParameter parametrelerini kullanarak bir VM örneğinde Çalıştır Komutu oluşturma veya güncelleştirme (Betik için Genel ve Korumalı Parametreler)
Parolalar, anahtarlar vb. gibi hassas girişleri betiklere geçirmek için ProtectedParameter kullanın.
$PublicParametersArray = @([Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='publicParam1';value='publicParam1value'},
>> [Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='publicParam2';value='publicParam2value'})
$ProtectedParametersArray = @([Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='secret1';value='secret1value'},
>> [Microsoft.Azure.PowerShell.Cmdlets.Compute.Models.Api20210701.IRunCommandInputParameter]@{name='secret2';value='secret2value'})
Set-AzVMRunCommand -ResourceGroupName MyRG0 -VMName MyVMEE -RunCommandName MyRunCommand -Location EastUS2EUAP -SourceScriptUri <SourceScriptUri> -Parameter $PublicParametersArray -ProtectedParameter $ProtectedParametersArray
Windows: Bağımsız değişkenler betiklere geçirilip şu şekilde çalıştırılırken parametreler ve ProtectedParameters betiklere geçirilir -
myscript.ps1 -publicParam1 publicParam1value -publicParam2 publicParam2value -secret1 secret1value -secret2 secret2value
Linux: Adlandırılmış Parametreler ve değerleri, .sh betiğinde erişilebilir olması gereken ortam yapılandırmasına ayarlanır. Adsız bağımsız değişkenler için, ad girişine boş bir dize geçirin. Adsız bağımsız değişkenler betiklere geçirilir ve şöyle çalıştırılır -
myscript.sh publicParam1value publicParam2value secret1value secret2value
Vm'den RunCommand kaynağını silme
Daha önce VM'de dağıtılan RunCommand kaynağını kaldırın. Betik yürütme işlemi devam ediyorsa yürütme sonlandırılır.
Remove-AzVMRunCommand -ResourceGroupName "myRG" -VMName "myVM" -RunCommandName "RunCommandName"
REST API
Yeni bir Çalıştırma Komutu dağıtmak için, doğrudan VM'de bir PUT yürütür ve Komut Çalıştır örneği için benzersiz bir ad belirtin.
PUT /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?api-version=2023-03-01
{
"location": "<location>",
"properties": {
"source": {
"script": "Write-Host Hello World!",
"scriptUri": "<SAS URI of a storage blob with read access or public URI>",
"commandId": "<Id>"
},
"parameters": [
{
"name": "param1",
"value": "value1"
},
{
"name": "param2",
"value": "value2"
}
],
"protectedParameters": [
{
"name": "secret1",
"value": "value1"
},
{
"name": "secret2",
"value": "value2"
}
],
"runAsUser": "userName",
"runAsPassword": "userPassword",
"timeoutInSeconds": 3600,
"treatFailureAsDeploymentFailure": true,
"outputBlobUri": "< SAS URI of a storage append blob with read, add, create, write access>",
"errorBlobUri": "< SAS URI of a storage append blob with read, add, create, write access >"
}
}
Notlar
- Giriş kaynağı olarak satır içi betik, betik URI'si veya yerleşik betik komut kimliği sağlayabilirsiniz. Betik URI'si, okuma erişimi olan depolama blob SAS URI'si veya genel URI'dir.
- Tek bir komut yürütmesi için yalnızca bir tür kaynak girişi desteklenir.
- API 2023-03-01 sürümünden başlayarak, betikte bir hata olduğunda dağıtımın başarısız olmasına neden olan özelliğini
treatFailureAsDeploymentFailure
true olarak ayarlayabilirsiniz. False olarak ayarlanırsa ProvisioningState yalnızca çalıştırma komutunun uzantılar platformu tarafından çalıştırılıp çalıştırılmadığını yansıtır. Betik hatası durumunda betiğin başarısız olup olmadığını göstermez. - Çalıştırma Komutu, büyük betik çıkışlarını depolamak için kullanılabilecek outputBlobUri ve errorBlobUri parametrelerini kullanarak Depolama bloblarına çıktı ve hata yazmayı destekler. Okuma, ekleme, oluşturma, yazma erişimiyle depolama ekleme blobunun SAS URI'sini kullanın. Blob AppendBlob türünde olmalıdır. Betik çıktısı veya hata blobu yazılamaz. Zaten varsa blobun üzerine yazılır. Yoksa oluşturulur.
Vm'de Çalıştır Komutunun çalışan örneklerini listeleme
GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands?api-version=2023-03-01
Belirli bir Çalıştırma Komutu dağıtımı için çıkış ayrıntılarını alma
GET /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?$expand=instanceView&api-version=2023-03-01
Belirli bir Komut Çalıştır dağıtımlarını silme
Komutunu Çalıştır örneğini de silebilirsiniz.
DELETE /subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/runcommands/<runCommandName>?api-version=2023-03-01
Betikleri sıralı bir sırada dağıtma
Betikleri sıralı olarak dağıtmak için sıralı betikler arasında bir ilişki belirten bir dependsOn
dağıtım şablonu kullanın.
{
"type": "Microsoft.Compute/virtualMachines/runCommands",
"name": "secondRunCommand",
"apiVersion": "2019-12-01",
"location": "[parameters('location')]",
"dependsOn": <full resourceID of the previous other Run Command>,
"properties": {
"source": {
"script": "Write-Host Hello World!"
},
"timeoutInSeconds": 60
}
}
Birden çok Çalıştırma Komutunu sıralı olarak yürütme
Varsayılan olarak, dağıtım şablonunu kullanarak birden çok RunCommand kaynağı dağıtırsanız, bunlar VM'de aynı anda yürütülür. Betiklere bağımlılığınız ve tercih edilen bir yürütme sırasına sahipseniz, sırayla çalıştırılması için özelliğini kullanabilirsiniz dependsOn
.
Bu örnekte secondRunCommand, firstRunCommand komutundan sonra yürütülür.
{
"$schema":"https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion":"1.0.0.0",
"resources":[
{
"type":"Microsoft.Compute/virtualMachines/runCommands",
"name":"[concat(parameters('vmName'),'/firstRunCommand')]",
"apiVersion":"2023-03-01",
"location":"[parameters('location')]",
"dependsOn":[
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'))]"
],
"properties":{
"source":{
"script":"Write-Host First: Hello World!"
},
"parameters":[
{
"name":"param1",
"value":"value1"
},
{
"name":"param2",
"value":"value2"
}
],
"timeoutInSeconds":20
}
},
{
"type":"Microsoft.Compute/virtualMachines/runCommands",
"name":"[concat(parameters('vmName'),'/secondRunCommand')]",
"apiVersion":"2019-12-01",
"location":"[parameters('location')]",
"dependsOn":[
"[concat('Microsoft.Compute/virtualMachines/', parameters('vmName'),'runcommands/firstRunCommand')]"
],
"properties":{
"source":{
"scriptUri":"http://github.com/myscript.ps1"
},
"timeoutInSeconds":60
}
}
]
}
Sonraki adımlar
Sanal makinenizde betikleri ve komutları uzaktan çalıştırmanın diğer yolları hakkında bilgi edinmek için bkz . Windows VM'nizde betikleri çalıştırma.