-
Notifications
You must be signed in to change notification settings - Fork 0
/
reboot_azure_vm.ps1
33 lines (25 loc) · 1.11 KB
/
reboot_azure_vm.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# run from Azure Cloud shell
$azure_data = @(
[PSCustomObject]@{SubscriptionName='Subscription_A'},
[PSCustomObject]@{SubscriptionName='Subscription_B'},
[PSCustomObject]@{SubscriptionName='Subscription_C'})
foreach ($data in $azure_data) {
#select Azure subscription to work on and get the list of VM
$SubscriptionName = $data.SubscriptionName
Select-AzureRmSubscription -SubscriptionName $SubscriptionName
$server_List = get-azvm | where {($_.Tags['wins_reboot'] -eq "true")}
ForEach ($server in $server_List) {
$job_progress = Restart-AzVM -ResourceGroupName $server.ResourceGroupName -Name $server.Name -AsJob
#check the result and output VM name and reboot status to a text file
while ($job_progress.State -eq "Running") {
Start-Sleep 1
} # while loop
Write-Host "$job_progress is completed"
$job_result = Receive-Job -Job $job_progress
$result = [PSCustomObject]@{
ServerName = $server.Name
Reboot_Status = $job_result.Status
}
$result >> result.txt
} #for loop
} # for loop