запустить консольное приложение на Azure VM через Runbook - PullRequest
0 голосов
/ 11 мая 2018

Моя среда разработки использует удаленный гибридный рабочий для запуска консольного приложения.Я запускаю приложение через webhook, и оно работает именно так, как я хочу.PowerShell выглядит следующим образом:

[CmdletBinding()]
Param([object]$WebhookData) #this parameter name needs to be called 
WebHookData otherwise the webhook does not work as expected.

$VerbosePreference = 'continue'

    if($WebhookData -ne $null) 
        {
        C:\Projects\myconsoleApp.exe
        }
    else
        {
        Write-Error -Message 'Runbook was not started from Webhook' -ErrorAction stop
        }

Для жизни я не могу найти образец, чтобы сделать то же самое на моей лазурной виртуальной машине, где живет мой производственный код.У меня много vms, и я хочу запустить это только на одной виртуальной машине.Это то, где я сейчас нахожусь .. Я не могу с этим работать вообще.

[CmdletBinding()]
   #workflow MyFirstRunbook-Workflow
#{
$ResourceGroupName = "My-Resource_Group"
$VMName = "my-vm-name"

#connect to the VM
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
#Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
#connect to the account
Connect-AzureRmAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

#run the console app
C:\projects\myconsoleapp.exe

#Start-AzureRmVM -Name $VMName -ResourceGroupName $ResourceGroupName
#}

Вывод моей ошибки выглядит следующим образом:

Connect-AzureRmAccount: термин «Connect-AzureRmAccount» не распознается как имя командлета, функции, файла сценарияили работоспособная программа.Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку.В строке: 11 символов: 1 + Connect-AzureRmAccount -ServicePrincipal -Tenant $ Conn.TenantID -Appl ... + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:ObjectNotFound: (Connect-AzureRmAccount: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException C: \ projects \ myconsoleapp.exe: термин «C: \ projects \ myconsoleapp.exe» не распознается как имя командлета, функции,файл сценария или работающая программа.Проверьте правильность написания имени или, если путь был указан, проверьте правильность пути и повторите попытку.В строке: 14 символов: 1 + C: \ projects \ myconsoleapp.exe + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: ObjectNotFound:(C: \ projects \ myconsoleapp.exe: String) [], CommandNotFoundException + FullyQualifiedErrorId: CommandNotFoundException

Я в значительной степени запутался во всем, что касается запроса моей единственной лазурной виртуальной машины сделать то, что я хотел быдумаю, это довольно простая просьба.Я не знаю, должен ли я что-то устанавливать на мою ВМ или ....?Виртуальная машина довольно новая .. ~ 6 месяцев

-------------- ОБНОВЛЕНИЕ ---------------

Я изменил свой код так, чтобы он читался как

workflow MyFirstRunbook-Workflow
{
Get-Module AzureRm
Install-Module AzureRm -Force
$ResourceGroupName = "My-Resource_Group"
$VMName = "My-Vm-Name"

#connect to the VM
$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint
#connect to the account
Connect-AzureRmAccount -ServicePrincipal -Tenant $Conn.TenantID -ApplicationId $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

#run the console app
C:\projects\myconsoleapp.exe

#Start-AzureRmVM -Name $VMName -ResourceGroupName $ResourceGroupName
}

, что привело к выдаче этой ошибки

В строке: 17 символов: 1 + C: \ projects \ myconsoleapp.exe+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Не удается найти команду «C: \ projects \ myconsoleapp.exe».Если эта команда определена как рабочий процесс, убедитесь, что она определена до рабочего процесса, который ее вызывает.Если это команда, предназначенная для запуска непосредственно в Windows PowerShell (или недоступная в этой системе), поместите ее в InlineScript: 'InlineScript {C: \ projects \ myconsoleapp.exe}' + CategoryInfo: ParserError: (:) [], ParseException + FullyQualifiedErrorId: CommandNotFound

Я не могу понять, как он знает, как подключиться к конкретной виртуальной машине, которую я перечислил, поскольку нигде он не использует $ VMName или $ ResourceGroupName ??Я так растерялся из-за того, как заставить это работать на лазури.

1 Ответ

0 голосов
/ 15 мая 2018

Вероятно, возникла проблема, связанная с версией Azure PowerShell, которую вы используете на виртуальной машине. Connect-AzureRMAccount является допустимой командой, но когда она не распознана, это обычно происходит из-за наличия более старой версии.

Попробуйте обновить модуль PS и повторите код.

Get-Module AzureRm
Install-Module AzureRm -Force
...