Error Running Script for another OMS workspace

Hi Experts,

I have a script to export list of all alert rule created in OMS (Log Analytics). It is running fine and i can see result in my temp folder with name OMSAlert.csv. But when i am running same script in my another Azure subscription for a workspace i am getting error. Its bit strange and i am not ware why its is happening.

The code is as follows:-

param ( #The subscription id where the OMS is located [Parameter(Mandatory)] [string]$SubscriptionId, #The name of the OMS workspace. [Parameter(Mandatory)] [string]$WorkspaceID, #Notification Group shortname [string]$FilePath="c:temp" ) $ErrorActionPreference = "Stop" #Variables $OutPath=$FilePath + "OMSalerts.csv" #Getting all Workspaces $allWorkspaces = armclient get "/subscriptions/$SubscriptionId/providers/Microsoft.OperationalInsights/workspaces?api-version=2015-03-20" | ConvertFrom-Json ForEach($Workspace in $allWorkspaces.value) { if($Workspace.name -eq $WorkspaceID) { $url = $Workspace.id } } Write-Host "Building table for results" #Build a table to format the results $table = New-Object system.Data.DataTable "Results" $col1 = New-Object system.Data.DataColumn Name,([string]) $table.columns.add($col1) $col2 = New-Object system.Data.DataColumn Description,([string]) $table.columns.add($col2) $col3 = New-Object system.Data.DataColumn Threshold,([string]) $table.columns.add($col3) $col4 = New-Object system.Data.DataColumn Severity,([string]) $table.columns.add($col4) $col5 = New-Object system.Data.DataColumn Query,([string]) $table.columns.add($col5) $col6 = New-Object system.Data.DataColumn Interval,([string]) $table.columns.add($col6) $col7 = New-Object system.Data.DataColumn QueryTimeSpan,([string]) $table.columns.add($col7) $col8 = New-Object system.Data.DataColumn QueryEnabled,([boolean]) $table.columns.add($col8) #Get all searches Write-Host "Getting all searches for Workspace" $Searches = armclient get "$url/savedsearches?api-version=2015-03-20" | ConvertFrom-Json if($Searches.value -ne $null) { Write-Output "Searches found: $($Searches.value.count)" } else { Write-Output "No searches found, exiting script" Break } Write-Host "Getting schedules for Searches" $Searches.value.id | %{ $search = armclient get "$_/?api-version=2015-03-20" | ConvertFrom-Json $schedules = armclient get "$_/schedules?api-version=2015-03-20" | ConvertFrom-Json $schedules | %{ $schedule = $_.value.properties $actions = armclient get "$($_.value.id)/actions?api-version=2015-03-20" | convertfrom-json $actions | %{ if ($_.value.properties.Type -eq "Alert"){ Write-Host "Alert found: $($_.value.properties.Name)" $Name=$_.value.properties.Name $Description=$_.value.properties.Description $Threshold=$_.value.properties.Threshold $Severity=$_.value.properties.Severity $Query=$search.properties.Query $Interval=$schedule.Interval $QueryTimeSpan=$schedule.QueryTimeSpan $QueryEnabled=$schedule.Enabled $row = $table.NewRow() $row.Name = $Name $row.Description = $Description $row.Threshold = $Threshold.Value $row.Severity = $Severity $row.Query = $Query $row.Interval = $Interval $row.QueryTimeSpan = $QueryTimeSpan $row.QueryEnabled = $QueryEnabled $table.Rows.Add($row) } } } } Write-Host "Exporting results" $table | Export-Csv $OutPath -NoTypeInformation 

The error which i am getting is as below:-

convertfrom-json : Invalid JSON primitive: .
At C:Userskumar_gDownloadsretrievealerts-oms.ps1:130 char:80
+ … et “$($_.value.id)/actions?api-version=2015-03-20” | convertfrom-json
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [ConvertFrom-Json], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.ConvertFromJsonCommand

Note:- Same script without any changes running fine for another subscription. I have also replaced api version from 2015-03-20 to 2016-04-01 but still no luck.

submitted by /u/GouravIN
[link] [comments]

Leave a Reply