Как использовать параметр PowerShell в Jenkins - PullRequest
0 голосов
/ 27 апреля 2018

Я использую PowerShell для автоматизации запуска / остановки ВМ в Azure. Однако, когда я устанавливаю параметр $ OPTION, он ничего не делает. У меня есть утверждения if / elseif / else.

См. Код ниже:

Add-AzureRmAccount -Credential $psCred -TenantId <removed> -ServicePrincipal

Get-AzureRmSubscription -SubscriptionName "<removed>"

#Get VMs using Tags
$vms = (Find-AzureRmResource | Where-Object {($_.tags.Project -eq "DevOps") -And ($_.tags.Test -eq "ernest")} | Select Name, ResourceGroupName)
$vms

Write-Output "Number of Virtual Machines: $($vms.Name.Count)"

foreach($VM in $vms)
{
    if ($OPTION -eq "start" -And $VM.ResourceType -eq "Microsoft.Compute/virtualMachines") 
    {
        Write-Output "Starting :- $VM.Name in $VM.ResourceGroupName"
        Start-AzureRmVM -ResourceGroupName $VM.ResourceGroupName -Name $VM.Name -Verbose
        Write-Output $VM.Name "has started successfully"

        Write-Output "Writing output to workspace"
        Get-AzureRmVM -Status | Where-Object {($_.tags.Project -eq "DevOps") -And ($_.tags.Test -eq "ernest")} | Select Name, ResourceGroupName, PowerState > VM_Start_Info-$(get-date -f yyyy-MM-dd).tsv 
    }

    elseif ($OPTION -eq "stop" -And $VM.ResourceType -eq "Microsoft.Compute/virtualMachines") 
    {
        Write-Output "Deallocating :- $VM.Name in $VM.ResourceGroupName"
        Stop-AzureRmVM -ResourceGroupName $VM.ResourceGroupName -Name $VM.Name -Force -Verbose
        Write-Output $VM.Name "has been deallocated successfully"

        Write-Output "Writing output to workspace"
        Get-AzureRmVM -Status | Where-Object {($_.tags.Project -eq "DevOps") -And ($_.tags.Test -eq "ernest")} | Select Name, ResourceGroupName, PowerState > VM_Stopped_Info-$(get-date -f yyyy-MM-dd).tsv
    }
    else
    {
       Write-Output "No option selected, select an option"
    }
}
Write-Output "Script complete"

1 Ответ

0 голосов
/ 28 апреля 2018

Мне пришлось добавить параметр $env:OPTION в окно Execute Powershell. Теперь работает

...