ขณะนี้ฉันมี runbooks ที่หยุด / เริ่ม VM ตามกำหนดเวลา แต่เมื่อเร็ว ๆ นี้ หนังสือวิ่ง เพื่อเริ่ม vms หยุดทำงานเนื่องจากใช้เวลานานเกินไปในการดำเนินการให้เสร็จสิ้น ข้อความต่อไปนี้ถูกโยน -
"งานถูกหยุดเนื่องจากถึงขีดจำกัดส่วนแบ่งที่ยุติธรรมของการปฏิบัติงานมากกว่า 3 ชั่วโมง สำหรับงานที่ต้องใช้เวลานาน ขอแนะนำให้ใช้ Hybrid Runbook Worker Hybrid Runbook Worker ไม่มีข้อจำกัดเกี่ยวกับระยะเวลาที่ runbook สามารถดำเนินการได้"
ฉันไม่เคยใช้ runbook ไฮบริด ก่อนหน้านี้คือคำถามของฉัน - สามารถใช้ runbook แบบไฮบริดเพื่อหยุด / เริ่ม Azure VM หลายตัวได้หรือไม่ ฉันไม่พบสิ่งใดเกี่ยวกับสิ่งนี้ ดูเหมือนว่าวิธีการแบบไฮบริดจะใช้เพื่อดึงข้อมูลหรือดำเนินการภายใน VM
ในที่สุดฉันก็มองหา จัดการทรัพยากร VM (หยุด/เริ่ม VM) จาก ภายใน Azure VM ถ้าเป็นไปได้. ดู runbook ปัจจุบันด้านล่าง:
การเขียนเอาต์พุต "------------------------ การรับรองความถูกต้อง --------------------- ---"
เขียนเอาต์พุต "เข้าสู่ระบบ Azure ... "
$ConnectionName = "AzureRunAsConnection"
พยายาม
{
# รับการเชื่อมต่อ "AzureRunAsConnection "
$Conn = Get-AutomationConnection - ชื่อ $ConnectionName
#เข้าสู่ระบบ Azure
Connect-AzAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
เขียนเอาต์พุต "ลงชื่อเข้าใช้ Azure สำเร็จ"
}
จับ
{
ถ้า (!$Conn)
{
$ErrorMessage = "ไม่พบการเชื่อมต่อ $ConnectionName"
โยน $ErrorMessage
}
อื่น
{
ข้อผิดพลาดในการเขียน - ข้อความ $_.Exception
โยน $_.Exception
}
}
การเขียนเอาต์พุต "------------------------ การเริ่มต้นเครื่องเสมือน ------------------- -----"
## Sequence VM เริ่มต้นขึ้นแล้ว
$คอมพิวเตอร์ = @(
'เครื่องเสมือน (x11)'
)
foreach($c ใน $คอมพิวเตอร์)
{
$AzResource = Get-AzResource -ชื่อ $c -ResourceType "Microsoft.Compute/virtualMachines"
ถ้า($null -ne $AzResource)
{
เขียนเอาต์พุต "กำลังเริ่มเครื่องเสมือน..." + $c
Start-AzVM -ResourceGroupName $AzResource.ResourceGroupName -ชื่อ $c
# หยุด 4 นาทีก่อนวนซ้ำ
Start-Sleep - วินาที 240
}
อื่น
{
โยน "ไม่พบเครื่องเสมือน:" + $c
}
}
ขอบคุณ,