我有一个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
答案 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/
感谢。