0

サービスを定期的に監視するために、いくつかのメトリックをアプリケーション インサイトに書き込みたいという要件があります。

私は、この 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)"

ありがとうシラジ

4

2 に答える 2

0

問題は、DLL ファイルのロードにあります。Runbook は、次の行でファイルを見つけることができません。

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

Azure Automation を介して Runbook を実行する場合、ローカル マシンまたはオンプレミスで通常行うようにローカル パスにアクセスすることはできません。Azure Automation では、モジュールは " C:\Modules " に配置されます。

代わりに、dll ファイルをアップロードした後、以下のコード スニペットを使用します。

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

最も近い関連資料: DLL の参照

于 2016-05-05T20:55:44.533 に答える