0

我的开发环境正在使用远程混合工作者来执行控制台应用程序。我正在通过 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
        }

对于我的一生,我无法在我的生产代码所在的天蓝色 VM 上找到一个样本来做同样的事情。我有很多虚拟机,我只想在一个虚拟机上运行它。这就是我现在所处的位置。我根本无法工作。

[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”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。在 line:11 char:1 + Connect-AzureRmAccount -ServicePrincipal -Tenant $Conn.TenantID -Appl ... + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Connect-AzureRmAccount:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException C:\projects\myconsoleapp.exe : 术语“C:\projects\myconsoleapp.exe”未被识别为 cmdlet、函数的名称,脚本文件或可运行的程序。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。在行:14 字符:

当我要求我的一个 azure VM 执行我认为非常简单的请求时,我几乎对所有事情都感到困惑。我不知道我是否应该在我的虚拟机上安装一些东西或....?虚拟机相当新.. ~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
}

最终抛出了这个错误

在 line:17 char:1 + C:\projects\myconsoleapp.exe + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 找不到'C :\projects\myconsoleapp.exe' 命令。如果此命令被定义为工作流,请确保在调用它的工作流之前定义它。如果它是旨在直接在 Windows PowerShell 中运行的命令(或在此系统上不可用),请将其放在 InlineScript 中:'InlineScript { C:\projects\myconsoleapp.exe }' + CategoryInfo : ParserError: (:) [ ],ParseException + FullyQualifiedErrorId:CommandNotFound

我无法理解的是它如何知道连接到我列出的特定 VM,因为它没有使用 $VMName 或 $ResourceGroupName?我很困惑如何让它在天蓝色上运行。

4

1 回答 1

0

您遇到的问题可能是由于您在 VM 上运行的 Azure PowerShell 版本所致。Connect-AzureRMAccount 是一个有效的命令,但当它未被识别时,通常是由于版本较旧。

尝试更新您的 PS 模块并再次尝试代码。

Get-Module AzureRm
Install-Module AzureRm -Force
于 2018-05-15T19:43:41.433 回答