我有一个要求,我想在应用程序洞察中写一些指标,以定期监视服务。
虽然我会写这个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之后,它已不再有效。
所以,这是问题所在。 我无法在Runbook中加载ApplicationInsight DLL。
知道怎么做吗?
Exception calling "LoadFile" with "1" argument(s): "The system cannot find the file specified. (Exception from HRESULT:
0x80070002)"
由于 斯拉吉
答案 0 :(得分:1)
尝试以下路径进行装配 “C:\模块\全球\天青\计算\ Microsoft.ApplicationInsights.dll”
答案 1 :(得分:0)
问题在于加载DLL文件。 Runbook无法在此行中找到该文件:
$AI = "$PSScriptRoot\Microsoft.ApplicationInsights.dll"
[Reflection.Assembly]::LoadFile("$AI")
当您通过Azure自动化运行Runbook时,您无法像在正常情况下在本地计算机或本地计算机上那样访问本地路径。在Azure自动化中,模块放置在" C:\ Modules "。
相反,在上传dll文件后使用下面的代码段:
[System.Reflection.Assembly]::LoadFrom("C:\Modules\Azure\Microsoft.ApplicationInsights.dll")
最近的相关参考:Referencing DLL