我是Powershell Runbook的新手,请原谅我,如果我错过了一些明显的东西。我试图从我的脚本中记录Application Insights请求,但是甚至无法加载DLL,尽管我已经看到其他代码执行非常相似的操作。请注意,这是Powershell Runbook,而不是Powershell Workflow Runbook。
这是我的代码:
int jpgfile;
if((jpgfile = open("/tmp/myimage.jpeg", O_WRONLY | O_CREAT, 0660)) < 0){
perror("open");
exit(1);
}
write(jpgfile, buffer_start, bufferinfo.length);
close(jpgfile);
这是我在测试窗格中运行它时得到的输出:
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"
它似乎达到了LoadAssembly然后缩小,在放弃之前运行脚本三次。我有什么想法,我做错了什么? DLL显然存在于该位置,我没有得到任何错误输出来帮助我调试。谢谢!
答案 0 :(得分:3)
看起来您对LoadFrom
的调用产生了大量输出。如果您以交互方式运行代码并且只需更改它,就可以看到这一点:[System.Reflection.Assembly]::LoadFrom($assemblyPath) | Out-String -Width 500000000
,它实际上会生成OutOfMemoryException
。或者,如果您修改Runbook,如下所示:[System.Reflection.Assembly]::LoadFrom($assemblyPath) | Out-Null
,您的作业将会运行。现在,这大量输出正在崩溃运行时。 (这可能是Runbook执行引擎中的一个错误。)
但是,不要这样做! LoadFrom
,LoadPartial
等...这些在PowerShell 3中已弃用。
好消息是有一种不推荐的 PowerShelly 方法可以做你想要的。只需使用Add-Type -Path $assemblyPath
代替[System.Reflection.Assembly]::LoadFrom($assemblyPath)
。
作为一个仅供参考,每当您看到您的工作被暂停并且显示消息时,&#34;工作操作&#39;激活&#39;无法运行,因为进程意外停止。工作行动尝试了3次。&#34; - 这意味着您完全崩溃了运行时和整个工作环境。 :)我们尝试3次以防万一我们做错了加载你的脚本或构建环境,但是经过3次我们认为它是一个糟糕的脚本。