Сборка Azure Runbook load .Net для анализа приложений

У меня есть требование, когда я хочу записать некоторые метрики в аналитическую информацию о приложении для регулярного мониторинга службы.

Я подумал, что напишу этот сценарий PowerShell и планирую его соответствующим образом.

Write-Output "Script Start"
$PSScriptRoot = Get-Location
$AI = "$PSScriptRoot\Microsoft.ApplicationInsights.dll"
[Reflection.Assembly]::LoadFile("$AI")
$InstrumentationKey = ""
$TelClient = New-Object "Microsoft.ApplicationInsights.TelemetryClient"
$TelClient.InstrumentationKey = $InstrumentationKey

$TrackMetric = New-Object "Microsoft.ApplicationInsights.DataContracts.MetricTelemetry"
$TrackMetric.Name = "PowershellTest"
$TrackMetric.Value = Get-Random -Minimum:1 -Maximum:100

$TelClient.TrackMetric($TrackMetric)
$TelClient.Flush()

Write-Output "Script End  $TrackMetric.Value"

Этот сценарий PowerShell работает, но после того, как я переместил этот сценарий в Runbook, он больше не работает.

Итак, вот в чем проблема. Я не могу загрузить DLL ApplicationInsight в модуль Runbook.

Есть идеи, как это сделать?

Сведения об исключении

Exception calling "LoadFile" with "1" argument(s): "The system cannot find the file specified. (Exception from HRESULT: 
0x80070002)"

Спасибо Сирадж


person Mohammed Sirajuddin    schedule 08.03.2016    source источник
comment
Опубликуйте фактический код ошибки, которую вы получаете при попытке запустить ее с Runbook.   -  person jkdba    schedule 08.03.2016


Ответы (2)


Попробуйте следующий путь для сборки "C: \ Modules \ Global \ Azure \ Compute \ Microsoft.ApplicationInsights.dll"

person Prajwal Saini    schedule 05.05.2016

Проблема заключается в загрузке файла DLL. Runbook не может найти файл в этой строке:

$AI = "$PSScriptRoot\Microsoft.ApplicationInsights.dll"
[Reflection.Assembly]::LoadFile("$AI")

Когда вы запускаете модуль Runbook через службу автоматизации Azure, у вас нет доступа к локальному пути, как это обычно бывает на локальном или локальном компьютере. В службе автоматизации Azure модули помещаются в папку «C: \ Modules».

Вместо этого используйте нижеприведенный фрагмент кода после загрузки файла dll:

[System.Reflection.Assembly]::LoadFrom("C:\Modules\Azure\Microsoft.ApplicationInsights.dll")

Ближайшая ссылка по теме: Ссылка на DLL

person Aman Sharma    schedule 05.05.2016
comment
Согласно этому ответу группы автоматизации Azure stackoverflow.com/a/43380852/892770 они рекомендуют использовать Add-Type вместо Assembly.LoadFrom () - person UnionP; 13.04.2017