2017-04-06 44 views
0

我是Powershell Runbook的新手,所以请原谅我,如果我失去了明显的东西。我正在尝试从我的脚本中记录Application Insights请求,但甚至无法加载DLL,尽管我已经看到其他代码非常类似。请注意,这是一个Powershell Runbook,而不是Powershell Workflow Runbook。Azure自动化Powershell Runbook默默无法LoadAssembly

这里是我的代码:

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显然存在于该位置,并且我没有收到任何错误输出来帮助我进行调试。谢谢!

+0

@BenH感谢您的回复,我真的看到了这篇文章,我应该提到我也尝试过这条路径,但程序集甚至不存在: dir:找不到路径'C :\ Modules \ Azure \ Microsoft.ApplicationInsights.dll'因为它不存在。 – UnionP

+0

我能够通过切换到Powershell Runbook解决我的问题,并将所有.NET调用封装在InlineScript块中。不是最优雅的,但它的作品。仍然会喜欢听到有没有办法让这个工作不需要做, – UnionP

+0

好,尝试做尝试和输出错误? – 4c74356b41

回答

2

看起来你打电话给LoadFrom正在产生大量的输出。如果您以交互方式运行代码并仅将其更改为:[System.Reflection.Assembly]::LoadFrom($assemblyPath) | Out-String -Width 500000000,则它实际上会生成OutOfMemoryException。另外,如果你修改你的runbook像这样:[System.Reflection.Assembly]::LoadFrom($assemblyPath) | Out-Null,你的工作将会运行。现在,这个大量的输出会导致运行时崩溃。 (这可能是Runbook执行引擎中的一个错误

但是,不要这样做!LoadFromLoadPartial,等等......这些在PowerShell中3

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

作为一个仅供参考,当你看到你的工作暂停和消息,“作业操作‘激活’不能跑,因为的进程意外停止。作业操作尝试3次。” - 这意味着你已经完全崩溃了运行时和你的整个工作环境。 :)我们尝试3次,以防万一它是我们加载脚本或构建环境的错误,但3次后我们认为它是一个糟糕的脚本。

+0

嗯,我会的,工作,感谢提示@Mike! – UnionP