public static bool GetVmPowerStatus(String accessToken, ComputeVm thisVm)
{
bool returnResult = false;
string vmId = thisVm.id;
var SplitUrl = vmId.Split('/');
var rgName = SplitUrl[4];
var subscriptionName = SplitUrl[2];
string authToken = "Bearer" + " " + accessToken;
var client = new WebClient();
client.Headers.Add("Authorization", authToken);
client.Headers.Add("Content-Type", "application/json");
string vmStatusUrl = string.Format("https://management.azure.com/subscriptions/{0}/resourceGroups/{1}/providers/Microsoft.Compute/virtualMachines/{2}?$expand=instanceView&api-version=2015-06-15", subscriptionName, rgName, thisVm.name);
String text = "";
text = client.DownloadString(vmStatusUrl);
var vmStatus = Newtonsoft.Json.JsonConvert.DeserializeObject<ComputeVm>(text);
var InstanceView = vmStatus.properties.instanceView.statuses;
var ThisInstanceviewPowerState = InstanceView.Where(p => p.code.Contains("PowerState")).FirstOrDefault();
var ThisInstanceviewProvisioningState = InstanceView.Where(p => p.code.Contains("ProvisioningState")).FirstOrDefault();
if ((ThisInstanceviewPowerState.code == "PowerState/running") && (ThisInstanceviewProvisioningState.code == "ProvisioningState/succeeded"))
{
returnResult = true;
}
System.Diagnostics.Debug.WriteLine(string.Format("VM {0} in RG {1} has power state {2}", thisVm.name, rgName, ThisInstanceviewPowerState.code));
return returnResult;
}