Get-Azure VM的输出是di

时间:2015-03-18 00:00:44

标签: powershell azure scheduled-tasks

我有一个powershell脚本,它将Azure帐户作为输入,并输出一个表,每个订阅作为一列,以及VM类型,状态等的计数大小。

   $VMs = Get-AzureVM | where {$_.Status -eq "StoppedVM"} | select Name, ServiceName, Status
$VMStoppedCnt = $VMs.Count

当我在powershell或PowerShell ISE中运行ps1文件时,我的$ VM.Count值是预期的。但是,当它作为计划任务运行时,所有值都为0(它仍然输出表格)。

通过powershell运行时的输出示例:

Subscription    D2  D4  D14 A1  A2  A3  A7  G4  TotalVMs    TotalKnownVMs   NonStandardVMs  Running Stopped StoppedDeallocated

Repro Labs 4 5 0 0 0 0 0 0 13 9 4 9 4

通过调用powershell的任务调度程序运行时的示例输出:

Subscription    D2  D4  D14 A1  A2  A3  A7  G4  TotalVMs    TotalKnownVMs   NonStandardVMs  Running Stopped StoppedDeallocated

Repro Labs 0 0 0 0 0 0 0 0 0 0 0 0 0

1 个答案:

答案 0 :(得分:0)

哦,我的!!!我第五次回答这个问题。 Windows任务计划程序无法准确运行您的PowerShell文件,但它会将任务显示为已完成状态。 Azure powershell调度无法使用Windows任务调度程序完成,因为由于缺少凭据/证书或其他内容,它实际上无法连接到Azure控制台。 使用门户网站转到Azure Runbook模型。使用相同的代码。我打赌你不能使用Windows任务调度程序。

一个。大多数进入ASSET选项卡并添加适当的Windows PowerShell凭据(只需使用用户名和密码,就像用于登录azure门户网站一样)。

湾在Runbook中添加代码。假设您的powershell自动化凭据名称是autoaccount,您的订阅名称是xxx。在这种情况下,工作流程将是 -

workflow autoaccount 
{
$Cred = Get-AutomationPSCredential -Name
Add-AzureAccount -Credential $Cred
Select-AzureSubscription -SubscriptionName “xxx”
inlineScript
{
*YOUR CODE HERE*
}
}

℃。在此之后,您可以根据需要安排Runbook。

希望这个人会帮助你 -

http://azure.microsoft.com/blog/2014/11/25/introducing-the-azure-automation-script-converter/ http://azure.microsoft.com/en-us/documentation/articles/automation-create-runbook-from-samples/

感谢。