Azure Otomasyonu'de runbook'ları yönetme
Yeni bir tane oluşturarak veya var olan bir runbook'u bir dosyadan veya Runbook Galerisi'nden içeri aktararak Azure Otomasyonu bir runbook ekleyebilirsiniz. Bu makalede runbook'u yönetmeye yönelik bilgiler ve runbook tasarımıyla ilgili önerilen desenler ve en iyi yöntemler sağlanır. Topluluk runbook'larına ve modüllerine erişmenin tüm ayrıntılarını Azure Otomasyonu için Runbook ve modül galerilerinde bulabilirsiniz.
Runbook oluşturma
Azure portalını veya PowerShell'i kullanarak Azure Otomasyonu'de yeni bir runbook oluşturun. Runbook oluşturulduktan sonra, şu bilgileri kullanarak bu runbook'u düzenleyebilirsiniz:
- Azure Otomasyonu'de metin runbook'larını düzenleme
- Otomasyon runbook'ları için temel PowerShell İş Akışı kavramlarını öğrenin
- Azure Otomasyonu'nda Python 2 paketlerini yönetme
- Azure Otomasyonu'de Python 3 paketlerini yönetme (önizleme)
Azure portalında runbook oluşturma
- Azure Portal’ında oturum açın.
- Otomasyon Hesapları'nı arayın ve seçin.
- Otomasyon Hesapları sayfasında, listeden Otomasyon hesabınızı seçin.
- Otomasyon hesabında İşlem Otomasyonu'nun altındaki Runbook'lar'ı seçerek runbook listesini açın.
- Runbook oluştur'a tıklayın.
- Runbook oluşturmak için Oluştur’a tıklayın.
PowerShell ile runbook oluşturma
Boş bir runbook oluşturmak için New-AzAutomationRunbook cmdlet'ini kullanın. Type
için tanımlanan runbook türlerinden birini belirtmek için New-AzAutomationRunbook
parametresini kullanın.
Aşağıdaki örnekte yeni bir boş runbook'un nasıl oluşturulacağı gösterilmektedir.
$params = @{
AutomationAccountName = 'MyAutomationAccount'
Name = 'NewRunbook'
ResourceGroupName = 'MyResourceGroup'
Type = 'PowerShell'
}
New-AzAutomationRunbook @params
Runbook'u içeri aktarma
Kendi runbook'unuzu oluşturmak için bir PowerShell veya PowerShell İş Akışı (.ps1) betiği, grafik runbook (.graphrunbook) veya Python 2 veya Python 3 betiği (.py) içeri aktarabilirsiniz. aşağıdaki noktaları dikkate alarak içeri aktarma sırasında oluşturulan runbook türünü belirtirsiniz.
İş akışı içermeyen bir .ps1 dosyasını PowerShell runbook'una veya PowerShell İş Akışı runbook'una aktarabilirsiniz. Bir PowerShell İş Akışı runbook'una aktarırsanız, iş akışına dönüştürülür. Bu durumda, yapılan değişiklikleri açıklamak için açıklamalar runbook'a eklenir.
PowerShell İş Akışı içeren bir .ps1 dosyasını PowerShell İş Akışı runbook'una aktarabilirsiniz. Dosyada birden çok PowerShell iş akışı varsa içeri aktarma işlemi başarısız olur. Her iş akışını kendi dosyasına kaydetmeniz ve her bir iş akışını ayrı olarak içeri aktarmanız gerekir.
PowerShell betik altyapısı bunu tanıyamadığından, PowerShell İş Akışı içeren bir .ps1 dosyasını PowerShell runbook'una aktarmayın.
Bir .graphrunbook dosyasını yalnızca yeni bir grafik runbook'a aktarabilirsiniz.
Azure portalından runbook'u içeri aktarma
Bir betik dosyasını Azure Otomasyonu içeri aktarmak için aşağıdaki yordamı kullanabilirsiniz.
Not
Portalı kullanarak bir .ps1 dosyasını yalnızca PowerShell İş Akışı runbook'una aktarabilirsiniz.
- Azure portal'da Otomasyon Hesapları'nı bulun ve seçin.
- Otomasyon Hesapları sayfasında, listeden Otomasyon hesabınızı seçin.
- Otomasyon hesabında İşlem Otomasyonu'nun altındaki Runbook'lar'ı seçerek runbook listesini açın.
- Runbook'u içeri aktar'a tıklayın. Aşağıdaki seçeneklerden birini belirleyebilirsiniz:
- Dosyaya gözat - yerel makinenizden bir dosya seçer.
- Galeri'den gözat - Galeriden mevcut bir runbook'a göz atabilir ve bu runbook'u seçebilirsiniz.
- Dosyayı seçin.
- Ad alanı etkinse runbook adını değiştirme seçeneğiniz vardır. Ad bir harfle başlamalıdır ve harf, sayı, alt çizgi ve kısa çizgi içerebilir.
- Runbook türü otomatik olarak doldurulur, ancak geçerli kısıtlamaları dikkate aldıktan sonra türü değiştirebilirsiniz.
- Çalışma zamanı sürümü otomatik olarak doldurulur veya açılan listeden sürümü seçin.
- İçe aktar'a tıklayın. Yeni runbook, Otomasyon hesabının runbook'lar listesinde görüntülenir.
- Çalıştırmadan önce runbook'u yayımlamanız gerekir.
Not
Grafik runbook'u içeri aktardıktan sonra başka bir türe dönüştürebilirsiniz. Ancak, grafik runbook'u metinsel runbook'a dönüştüremezsiniz.
PowerShell ile runbook'u içeri aktarma
Bir betik dosyasını taslak runbook olarak içeri aktarmak için Import-AzAutomationRunbook cmdlet'ini kullanın. Runbook zaten varsa, cmdlet'iyle parametresini Force
kullanmadığınız sürece içeri aktarma işlemi başarısız olur.
Aşağıdaki örnek, bir betik dosyasının runbook'a nasıl aktarılacağını gösterir.
$params = @{
AutomationAccountName = 'MyAutomationAccount'
Name = 'Sample_TestRunbook'
ResourceGroupName = 'MyResourceGroup'
Type = 'PowerShell'
Path = 'C:\Runbooks\Sample_TestRunbook.ps1'
}
Import-AzAutomationRunbook @params
Kaynakları işleme
Runbook'unuz bir kaynak oluşturuyorsa, betik kaynağı oluşturmaya çalışmadan önce kaynağın zaten var olup olmadığını denetlemelidir. İşte temel bir örnek.
$vmName = 'WindowsVM1'
$rgName = 'MyResourceGroup'
$myCred = Get-AutomationPSCredential 'MyCredential'
$vmExists = Get-AzResource -Name $vmName -ResourceGroupName $rgName
if (-not $vmExists) {
Write-Output "VM $vmName does not exist, creating"
New-AzVM -Name $vmName -ResourceGroupName $rgName -Credential $myCred
} else {
Write-Output "VM $vmName already exists, skipping"
}
Etkinlik günlüğünden ayrıntıları alma
Otomasyon hesabının Etkinlik günlüğünden runbook'u başlatan kişi veya hesap gibi runbook ayrıntılarını alabilirsiniz. Aşağıdaki PowerShell örneği, belirtilen runbook'u çalıştıracak son kullanıcıyı sağlar.
$rgName = 'MyResourceGroup'
$accountName = 'MyAutomationAccount'
$runbookName = 'MyRunbook'
$startTime = (Get-Date).AddDays(-1)
$params = @{
ResourceGroupName = $rgName
StartTime = $startTime
}
$JobActivityLogs = (Get-AzLog @params).Where( { $_.Authorization.Action -eq 'Microsoft.Automation/automationAccounts/jobs/write' })
$JobInfo = @{}
foreach ($log in $JobActivityLogs) {
# Get job resource
$JobResource = Get-AzResource -ResourceId $log.ResourceId
if ($null -eq $JobInfo[$log.SubmissionTimestamp] -and $JobResource.Properties.Runbook.Name -eq $runbookName) {
# Get runbook
$jobParams = @{
ResourceGroupName = $rgName
AutomationAccountName = $accountName
Id = $JobResource.Properties.JobId
}
$Runbook = Get-AzAutomationJob @jobParams | Where-Object RunbookName -EQ $runbookName
# Add job information to hashtable
$JobInfo.Add($log.SubmissionTimestamp, @($Runbook.RunbookName, $Log.Caller, $JobResource.Properties.jobId))
}
}
$JobInfo.GetEnumerator() | Sort-Object Key -Descending | Select-Object -First 1
İlerleme izleme
Runbook'larınızı kolayca yeniden kullanılabilen ve yeniden başlatabileceğiniz mantıkla modüler olacak şekilde yazmak iyi bir uygulamadır. Runbook'taki ilerleme durumunu izleme, sorun olduğunda runbook mantığının doğru şekilde yürütülmesini sağlar.
Depolama hesabı, veritabanı veya paylaşılan dosyalar gibi bir dış kaynak kullanarak runbook'un ilerleme durumunu izleyebilirsiniz. İlk olarak gerçekleştirilen son eylemin durumunu denetlemek için runbook'unuzda mantık oluşturun. Ardından, denetimin sonuçlarına bağlı olarak mantık runbook'taki belirli görevleri atlayabilir veya devam edebilir.
Eşzamanlı işleri engelleme
Bazı runbook'lar aynı anda birden çok işte çalıştırılırsa garip davranır. Bu durumda, runbook'un zaten çalışan bir iş olup olmadığını belirlemek için mantık uygulaması önemlidir. İşte temel bir örnek.
# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process
# Connect to Azure with system-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity).context
# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
# Check for already running or new runbooks
$runbookName = "runbookName"
$resourceGroupName = "resourceGroupName"
$automationAccountName = "automationAccountName"
$jobs = Get-AzAutomationJob -ResourceGroupName $resourceGroupName -AutomationAccountName $automationAccountName -RunbookName $runbookName -DefaultProfile $AzureContext
# Ranking all the active jobs
$activeJobs = $jobs | where {$_.status -eq 'Running' -or $_.status -eq 'Queued' -or $_.status -eq 'New' -or $_.status -eq 'Activating' -or $_.status -eq 'Resuming'} | Sort-Object -Property CreationTime
$jobRanking = @()
$rank = 0
ForEach($activeJob in $activeJobs)
{
$rank = $rank + 1
$activeJob | Add-Member -MemberType NoteProperty -Name jobRanking -Value $rank -Force
$jobRanking += $activeJob
}
$AutomationJobId = $PSPrivateMetadata.JobId.Guid
$currentJob = $activeJobs | where {$_.JobId -eq $AutomationJobId}
$currentJobRank = $currentJob.jobRanking
# Only allow the Job with Rank = 1 to start processing.
If($currentJobRank -ne "1")
{
Write-Output "$(Get-Date -Format yyyy-MM-dd-hh-mm-ss.ffff) Concurrency check failed as Current Job Ranking is not 1 but $($currentJobRank) therefore exiting..."
Exit
} Else
{
Write-Output "$(Get-Date -Format yyyy-MM-dd-hh-mm-ss.ffff) Concurrency check passed. Start processing.."
}
Runbook'un sistem tarafından atanan yönetilen kimlikle yürütülmesini istiyorsanız, kodu olduğu gibi bırakın. Kullanıcı tarafından atanan bir yönetilen kimlik kullanmayı tercih ediyorsanız:
- 5. satırdan öğesini kaldırın
$AzureContext = (Connect-AzAccount -Identity).context
. - değerini ve ile
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
değiştirin - İstemci Kimliğini girin.
Not
PowerShell 7.2 karma işleri için 28. satırda değişiklik yapın. $PSPrivateMetadata.JobId.Guid
öğesini $env:PSPrivateMetaData
ile değiştirin.
Zamana bağlı betikteki geçici hataları işleme
Runbook'larınız, yeniden başlatılmasına veya başarısız olmasına neden olabilecek geçici hatalar da dahil olmak üzere güçlü ve hataları işleyebilir olmalıdır. Bir runbook başarısız olursa Azure Otomasyonu yeniden denenir.
Runbook'unuz normalde bir zaman kısıtlaması içinde çalışıyorsa betiğin yürütme süresini denetlemek için mantık uygulamasını sağlayın. Bu denetim yalnızca belirli zamanlarda başlatma, kapatma veya ölçeği genişletme gibi işlemlerin çalıştırılmasını sağlar.
Not
Azure korumalı alan işlemindeki yerel saat UTC olarak ayarlanır. Runbook'larınızdaki tarih ve saat hesaplamaları bu olguyu dikkate almalıdır.
Geçici hataları önlemek için runbook'a Yeniden deneme mantığı
Runbook'lar genellikle ARM, Azure Kaynak Grafı, SQL hizmetleri ve diğer web hizmetleri aracılığıyla Azure gibi uzak sistemlere çağrı yapar. Runbook'ların çağırdığı sistem meşgul olduğunda, geçici olarak kullanılamıyorsa veya yük altında azaltma uyguladığında, çağrılar çalışma zamanı hatalarına karşı savunmasızdır. Runbook'larda dayanıklılık oluşturmak için, runbook'ların geçici bir sorunu başarısız olmadan işleyebilmesi amacıyla çağrı yaparken yeniden deneme mantığını uygulamanız gerekir.
Daha fazla bilgi için Bkz . Yeniden deneme düzeni ve Genel REST ve yeniden deneme yönergeleri.
Örnek 1: Runbook'unuz yalnızca bir veya iki çağrı yapıyorsa
$searchServiceURL = "https://$searchServiceName.search.windows.net"
$resource = Get-AzureRmResource -ResourceType "Microsoft.Search/searchServices" -ResourceGroupName $searchResourceGroupName -ResourceName $searchServiceName -ApiVersion 2015-08-19
$searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey
çağrısı Invoke-AzureRmResourceAction
yaptığınızda geçici hatalar gözlemleyebilirsiniz. Bu gibi bir senaryoda, cmdlet'ine yapılan çağrının etrafında aşağıdaki temel deseni uygulamanızı öneririz.
$searchServiceURL = "https://$searchServiceName.search.windows.net"
$resource = Get-AzureRmResource -ResourceType "Microsoft.Search/searchServices" -ResourceGroupName $searchResourceGroupName -ResourceName $searchServiceName -ApiVersion 2015-08-19
# Adding in a retry
$Stoploop = $false
$Retrycount = 0
do {
try {
$searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey
write-verbose "Invoke-AzureRmResourceAction on $resource.ResourceId completed"
$Stoploop = $true
}
catch {
if ($Retrycount -gt 3)
{
Write-verbose "Could not Invoke-AzureRmResourceAction on $resource.ResourceId after 3 retrys."
$Stoploop = $true
}
else
{
Write-verbose "Could not Invoke-AzureRmResourceAction on $resource.ResourceId retrying in 30 seconds..."
Start-Sleep -Seconds 30
$Retrycount = $Retrycount + 1
}
}
}
While ($Stoploop -eq $false)
Not
Aramayı yeniden deneme denemesi, her seferinde 30 saniye boyunca uyuyan üç kereye kadardır.
Örnek 2 : Runbook sık sık uzak çağrılar yapıyorsa
Runbook sık sık uzak çağrılar yapıyorsa geçici çalışma zamanı sorunlarıyla karşılaşabilir. Yapılan her çağrı için yeniden deneme mantığını uygulayan bir işlev oluşturun ve yürütülecek betik bloğu olarak yapılacak çağrıyı iletin.
Function ResilientRemoteCall {
param(
$scriptblock
)
$Stoploop = $false
$Retrycount = 0
do {
try {
Invoke-Command -scriptblock $scriptblock
write-verbose "Invoked $scriptblock completed"
$Stoploop = $true
}
catch {
if ($Retrycount -gt 3)
{
Write-verbose "Invoked $scriptblock failed 3 times and we will not try again."
$Stoploop = $true
}
else
{
Write-verbose "Invoked $scriptblock failed retrying in 30 seconds..."
Start-Sleep -Seconds 30
$Retrycount = $Retrycount + 1
}
}
}
While ($Stoploop -eq $false)
}
Ardından her uzak çağrıyı işlevine şu şekilde geçirebilirsiniz:
ResilientRemoteCall { Get-AzVm }
veya
ResilientRemoteCall { $searchAPIKey = (Invoke-AzureRmResourceAction -Action listAdminKeys -ResourceId $resource.ResourceId -ApiVersion 2015-08-19 -Force).PrimaryKey}
Birden fazla abonelik ile çalışma
Runbook'unuzun aboneliklerle çalışabilmesi gerekir. Örneğin, runbook birden çok aboneliği işlemek için Disable-AzContextAutosave cmdlet'ini kullanır. Bu cmdlet, kimlik doğrulama bağlamını aynı korumalı alanda çalışan başka bir runbook'tan alınmamasını sağlar.
# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process
# Connect to Azure with system-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity).context
# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription `
-DefaultProfile $AzureContext
$childRunbookName = 'childRunbookDemo'
$resourceGroupName = "resourceGroupName"
$automationAccountName = "automationAccountName"
$startParams = @{
ResourceGroupName = $resourceGroupName
AutomationAccountName = $automationAccountName
Name = $childRunbookName
DefaultProfile = $AzureContext
}
Start-AzAutomationRunbook @startParams
Runbook'un sistem tarafından atanan yönetilen kimlikle yürütülmesini istiyorsanız, kodu olduğu gibi bırakın. Kullanıcı tarafından atanan bir yönetilen kimlik kullanmayı tercih ediyorsanız:
- 5. satırdan öğesini kaldırın
$AzureContext = (Connect-AzAccount -Identity).context
. - değerini ve ile
$AzureContext = (Connect-AzAccount -Identity -AccountId <ClientId>).context
değiştirin - İstemci Kimliğini girin.
Özel betikle çalışma
Not
Log Analytics aracısının yüklü olduğu konakta normalde özel betikleri ve runbook'ları çalıştıramazsınız.
Özel betik kullanmak için:
- Otomasyon hesabı oluşturun.
- Karma Runbook Çalışanı rolünü dağıtın.
- Linux makinesindeyse yükseltilmiş ayrıcalıklara ihtiyacınız vardır. İmza denetimlerini kapatmak için oturum açın.
Bir runbook'u test etme
Bir runbook'u test ettiğinizde Taslak sürümü yürütülür ve gerçekleştirdiği tüm eylemler tamamlanır. İş geçmişi oluşturulmaz, ancak çıkış ve uyarı ile hata akışları Test çıktısı bölmesinde görüntülenir. Ayrıntılı akışa gönderilen iletiler Yalnızca VerbosePreference değişkeni olarak ayarlandıysa Continue
Çıkış bölmesinde görüntülenir.
Taslak sürümü çalıştırılmaya devam etse de runbook normal şekilde yürütülür ve ortamdaki kaynaklara karşı herhangi bir eylem gerçekleştirir. Bu nedenle runbook'ları yalnızca üretim dışı kaynaklarda test etmelisiniz.
Not
Tüm runbook yürütme eylemleri otomasyon hesabının Etkinlik Günlüğü'nde Azure Otomasyonu işi oluşturma işlemi adıyla günlüğe kaydedilir. Ancak runbook'un taslak sürümünün yürütüldüğü bir test bölmesindeki runbook yürütme işlemi, etkinlik günlüklerine Azure Otomasyonu runbook taslağı yazma işlemi adıyla kaydedilir. ile biten kapsamı görmek için İşlem ve JSON sekmesini seçin. /runbooks/(runbook name)/draft/testjob.
Her runbook türünü test etme yordamı aynıdır. Azure portal metin düzenleyici ile grafik düzenleyici arasında test etmede fark yoktur.
- Runbook'un Taslak sürümünü metin düzenleyicisinde veya grafik düzenleyicide açın.
- Test sayfasını açmak için Test'e tıklayın.
- Runbook'un parametreleri varsa bunlar sol bölmede listelenir ve burada test için kullanılacak değerleri sağlayabilirsiniz.
- Testi Karma Runbook Çalışanı üzerinde çalıştırmak istiyorsanız, Çalıştırma Ayarları'nı Karma Çalışanı olarak değiştirin ve hedef grubun adını seçin. Aksi takdirde, testi bulutta çalıştırmak için varsayılan Azure'ı koruyun.
- Testi başlatmak için Başlat'a tıklayın.
- PowerShell İş Akışı'nı veya grafik runbook'u test edilirken durdurmak veya askıya almak için Çıkış bölmesinin altındaki düğmeleri kullanabilirsiniz. Bir runbook'u askıya aldığınızda, askıya alınmadan önce geçerli etkinliği tamamlar. Runbook askıya alındığında, durdurabilir veya yeniden başlatabilirsiniz.
- Çıktı bölmesinde runbook'tan çıktıyı inceleyin.
Runbook yayımlama
Yeni bir runbook oluşturduğunuzda veya içeri aktardığınızda runbook'u çalıştırmadan önce yayımlamanız gerekir. Azure Otomasyonu'daki her runbook'un taslak sürümü ve Yayımlanmış sürümü vardır. Yalnızca Yayımlanan sürüm çalıştırılabilir ve yalnızca Taslak sürüm düzenlenebilir. Yayımlanan sürüm Taslak sürümdeki herhangi bir değişiklikten etkilenmez. Taslak sürümü kullanıma sunulduğunda, geçerli Yayımlanan sürümü Taslak sürümüyle üzerine yazarak yayımlarsınız.
Azure portalda runbook'u yayımlama
- Azure portal'da Otomasyon Hesapları'nı bulun ve seçin.
- Otomasyon Hesapları sayfasında, listeden Otomasyon hesabınızı seçin.
- Otomasyon hesabınızda runbook'u açın.
- Düzenle'yi tıklatın.
- Yayımla'ya tıklayın ve doğrulama iletisine yanıt olarak Evet'i seçin.
PowerShell kullanarak runbook yayımlama
Runbook'unuzu yayımlamak için Publish-AzAutomationRunbook cmdlet'ini kullanın.
$accountName = "MyAutomationAccount"
$runbookName = "Sample_TestRunbook"
$rgName = "MyResourceGroup"
$publishParams = @{
AutomationAccountName = $accountName
ResourceGroupName = $rgName
Name = $runbookName
}
Publish-AzAutomationRunbook @publishParams
Azure portalda runbook zamanlama
Runbook'unuz yayımlandığında, bunu işlem için zamanlayabilirsiniz:
- Azure portal'da Otomasyon Hesapları'nı bulun ve seçin.
- Otomasyon Hesapları sayfasında, listeden Otomasyon hesabınızı seçin.
- Runbook'lar listenizden istediğiniz runbook'u seçin.
- Kaynaklar seçeneğinin altında Planlamalar seçeneğini seçin.
- Planlama ekle seçeneğini işaretleyin.
- Runbook Planla bölmesinde Runbook'unuza planlama ekle seçeneğini işaretleyin.
- Planlama bölmesinde Yeni planlama oluştur seçeneğini işaretleyin.
- Yeni planlama bölmesine bir isim, açıklama ve diğer parametreleri girin.
- Zamanlama oluşturulduktan sonra, bunu vurgulayın ve Tamam'a tıklayın. Şimdi runbook'unuza bağlanmalıdır.
- Runbook durumunu size bildirmek için posta kutunuzda bir e-posta arayın.
Silinen runbook'u geri yükleme
Silinen bir runbook'u PowerShell betikleri aracılığıyla kurtarabilirsiniz. Runbook'u kurtarmak için aşağıdaki koşulların karşılandığından emin olun:
- Geri yüklenecek runbook'lar son 29 gün içinde silindi.
- Bu runbook için Otomasyon hesabı var.
- Otomasyon hesabının Sistem tarafından atanan yönetilen kimliğine Otomasyon Katkıda Bulunanı rolü izni verilir.
PowerShell betiği
- Silinen runbook'ları geri yüklemek için PowerShell betiğini Otomasyon hesabınızda bir iş olarak yürütür.
- GitHub'dan PowerShell betiğini indirin. Alternatif olarak, Runbook Galerisi'nden Otomasyon runbook'unu Geri Yükle adlı PowerShell betiğini içeri aktarabilirsiniz. Geri yüklenecek runbook'un adını belirtin ve silinen runbook'ları geri yüklemek için Azure Otomasyonu'de bir iş olarak çalıştırın.
- Son 29 gün içinde silinen runbook'ların adlarını belirlemek için GitHub'dan betiği indirin veya Runbook Galerisi'nden Silinmiş Otomasyon Runbook'unu Listele adlı PowerShell betiğini içeri aktarın.
İş durumlarını alma
Azure portalında durumları görüntüleme
Azure Otomasyonu iş işleme ayrıntıları İşler'de sağlanır. Runbook işlerinizi görmeye hazır olduğunuzda Azure portalını kullanın ve Otomasyon hesabınıza erişin. Sağ tarafta, İş İstatistikleri'nde tüm runbook işlerinin özetini görebilirsiniz.
Özet, yürütülen her iş için iş durumunun sayısını ve grafik gösterimini görüntüler.
Kutucuğa tıklanması, yürütülen tüm işlerin özetlenmiş listesini içeren İşler sayfasını gösterir. Bu sayfada her işin durumu, runbook adı, başlangıç zamanı ve tamamlanma zamanı gösterilir.
İşleri filtrele'yi seçerek iş listesini filtreleyebilirsiniz. Belirli bir runbook'u, iş durumunu veya açılan listeden bir seçimi filtreleyin ve arama için zaman aralığını sağlayın.
Alternatif olarak, Otomasyon hesabınızdaki Runbook'lar sayfasından bu runbook'u seçip İşler'i seçerek belirli bir runbook'un iş özeti ayrıntılarını görüntüleyebilirsiniz. Bu eylem İşler sayfasını sunar. Buradan bir iş kaydına tıklayarak ayrıntılarını ve çıktısını görüntüleyebilirsiniz.
PowerShell kullanarak iş durumlarını alma
Runbook için oluşturulan işleri ve belirli bir işin ayrıntılarını almak için Get-AzAutomationJob cmdlet'ini kullanın. kullanarak Start-AzAutomationRunbook
bir runbook başlatırsanız, sonuçta elde edilen işi döndürür. İş çıktısını almak için Get-AzAutomationJobOutput kullanın.
Aşağıdaki örnek, örnek bir runbook için son işi alır ve durumunu, runbook parametreleri için sağlanan değerleri ve iş çıkışını görüntüler.
$getJobParams = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
Runbookname = 'Test-Runbook'
}
$job = (Get-AzAutomationJob @getJobParams | Sort-Object LastModifiedDate -Desc)[0]
$job | Select-Object JobId, Status, JobParameters
$getOutputParams = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
Id = $job.JobId
Stream = 'Output'
}
Get-AzAutomationJobOutput @getOutputParams
Aşağıdaki örnek, belirli bir işin çıkışını alır ve her kaydı döndürür. Kayıtlardan biri için bir özel durum varsa, betik özel durumu değer yerine yazar. Özel durumlar çıkış sırasında normal olarak günlüğe kaydedilmeyecek ek bilgiler sağlayabildiği için bu davranış yararlıdır.
$params = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
Stream = 'Any'
}
$output = Get-AzAutomationJobOutput @params
foreach ($item in $output) {
$jobOutParams = @{
AutomationAccountName = 'MyAutomationAccount'
ResourceGroupName = 'MyResourceGroup'
Id = $item.StreamRecordId
}
$fullRecord = Get-AzAutomationJobOutputRecord @jobOutParams
if ($fullRecord.Type -eq 'Error') {
$fullRecord.Value.Exception
} else {
$fullRecord.Value
}
}
Sonraki adımlar
- Örnek sorgular için bkz . İş günlükleri ve iş akışları için örnek sorgular
- Runbook yönetiminin ayrıntılarını öğrenmek için bkz. Azure Otomasyonu'de Runbook yürütme.
- PowerShell runbook'u hazırlamak için bkz. Azure Otomasyonu'de metin runbook'larını düzenleme.
- Runbook yürütme sorunlarını gidermek için bkz . Runbook sorunlarını giderme.