我的开发环境正在使用远程混合工作者来执行控制台应用程序。我正在通过 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?我很困惑如何让它在天蓝色上运行。