Azure Automation Powershell runbook 静默无法加载程序集

Azure Automation Powershell runbook silently fails to LoadAssembly

我是 Powershell Runbook 的新手,所以如果我遗漏了一些明显的东西,请原谅我。我正在尝试从我的脚本中记录 Application Insights 请求,但甚至无法加载 DLL,尽管我已经看到其他代码执行非常相似的操作。请注意,这是 Powershell Runbook,而不是 Powershell Workflow Runbook。

这是我的代码:

Write-Output "Starting"
$assemblyPath = "C:\Modules\Global\Azure\Compute\Microsoft.ApplicationInsights.dll"
dir $assemblyPath

Write-Output "1"        
[System.Reflection.Assembly]::LoadFrom($assemblyPath)
Write-Output "2"

这是我在测试窗格中 运行 时得到的输出:

Starting

    Directory: C:\Modules\Global\Azure\Compute
Mode                LastWriteTime         Length Name                                                                   
----                -------------         ------ ----                                                                   
------        1/11/2016   1:59 PM         152824 Microsoft.ApplicationInsights.dll                                      
1
Starting

    Directory: C:\Modules\Global\Azure\Compute
Mode                LastWriteTime         Length Name                                                                   
----                -------------         ------ ----                                                                   
------        1/11/2016   1:59 PM         152824 Microsoft.ApplicationInsights.dll                                      
1
Starting

    Directory: C:\Modules\Global\Azure\Compute
Mode                LastWriteTime         Length Name                                                                   
----                -------------         ------ ----                                                                   
------        1/11/2016   1:59 PM         152824 Microsoft.ApplicationInsights.dll                                      
1

它似乎达到了 LoadAssembly 的程度,然后就崩溃了,运行 脚本重复了三次才放弃。任何想法我做错了什么? DLL 显然存在于那个位置,我没有得到任何错误输出来帮助我调试。谢谢!

您对 LoadFrom 的调用似乎生成了大量输出。如果您以交互方式 运行 您的代码并像这样更改它,您可以看到这一点:[System.Reflection.Assembly]::LoadFrom($assemblyPath) | Out-String -Width 500000000,它实际上会生成一个 OutOfMemoryException。或者,如果您像这样修改您的 运行 书籍:[System.Reflection.Assembly]::LoadFrom($assemblyPath) | Out-Null,您的工作将 运行。现在,如此大量的输出正在使 运行 时间崩溃。 (这可能是 运行图书执行引擎中的错误。

但是,不要那样做! LoadFromLoadPartial 等...这些在 PowerShell 3 中已弃用。

好处是有一个未被弃用的 PowerShelly 方法来做你想做的事。只需使用 Add-Type -Path $assemblyPath 而不是 [System.Reflection.Assembly]::LoadFrom($assemblyPath).

仅供参考,每当您看到您的工作暂停和消息时,"The job action 'Activate' cannot be run, because the process stopped unexpectedly. The job action was attempted 3 times." - 这意味着您已经完全破坏了 运行 时间和整个工作环境。 :) 我们尝试了 3 次,以防我们在加载脚本或构建环境时出错,但 3 次后我们认为这是一个错误的脚本。