2017-04-06 55 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

相關問題