可以在Azure(PowerShell)Runbook中执行自定义控制台应用程序吗?

时间:2019-08-20 13:32:50

标签: azure powershell azure-automation azure-runbook

我可以在Azure Runbook(PowerShell或任何其他)中使用自己的/自定义控制台应用程序吗?

当我尝试运行自己的控制台应用程序(在retrieving it from Azure Storage之后)时,它失败了。


当我尝试通过以下方式简单地执行它时:

.\myapp.exe

我得到:

  

程序“ myapp.exe”运行失败:该操作已被用户取消


当我使用System.Diagnostics.Process时:

$process = New-Object System.Diagnostics.Process
$process.StartInfo.FileName = $path
$process.StartInfo.UseShellExecute = $False
$process.Start()

我收到一个更有意义的错误:

  

使用“ 0”参数调用“开始”的异常:“此程序被组策略阻止。有关更多信息,请联系   您的系统管理员”


我可以切换Azure自动化中是否有任何设置以允许执行自定义应用程序?还是在受限的Runbook环境中根本不可能?

3 个答案:

答案 0 :(得分:3)

感谢您与我们联系!不幸的是,当前不支持您在Azure Automation Runbook中运行.exe的要求。是的,您可以使用Azure Web作业。另一位客户最近也提出了类似的要求,并利用Azure Web Job解决了他们的问题。为了澄清起见,您可以参考this MSDN线程。希望对您有帮助。

干杯!

答案 1 :(得分:2)

不幸的是,Azure Automation Runbook暂时不支持它。Here is a feedback由Automation PG团队答复,目前没有更新。

答案 2 :(得分:2)

您可以

  1. 在App Service上作为Azure WebJob运行控制台应用程序,并通过SCM终结点或
  2. 进行远程调用
  3. 将控制台应用程序编译为PowerShell cmdlet

    using System.Management.Automation; 
    
    namespace MyApp
    {
      [Cmdlet(VerbsCommunications.Send, "RunApplication")]
      public class RunApplicationCommand : Cmdlet
      {
        protected override void ProcessRecord()
        {
          // App Code goes here
        }
      }
    }
    
    • 将编译的DLL附加到PowerShell模块
    • 使用“模块”>“导入”将PowerShell模型部署到自动化帐户
    • 从Runbook调用cmdlet