Get-Azure VM 的输出是 di

Output of Get-Azure VM is di

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

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

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

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

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

复制实验室 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

复制实验室 0 0 0 0 0 0 0 0 0 0 0 0 0

哦天哪!!!我第 5 次回答这个问题。 Windows 任务调度程序不会完全 运行 您的 powershell 文件,但是它会将任务显示为已完成状态。无法使用 windows 任务调度程序完成 Azure powershell 调度,因为由于缺少 credentials/certificate 或其他原因,它实际上不会连接到 Azure 控制台。 使用门户获取 Azure 运行 书籍模型。使用相同的代码。我打赌你不能使用 windows 任务调度程序来做到这一点。

一个。大多数 imp- 转到 ASSET 选项卡并添加适当的 windows powershell 凭据(只需使用用户名和密码,与登录 azure 门户时使用的相同)。

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

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

c。在此之后,您可以根据需要安排 运行 图书。

希望这篇能帮到你-

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/

谢谢。