Private/Invoke-ArgQuery.ps1
|
#Requires -Version 7.0 Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' function Invoke-ArgQuery { [CmdletBinding()] param( [Parameter(Mandatory = $true)] [string]$Query, [Parameter(Mandatory = $false)] [string]$SubscriptionId, [Parameter(Mandatory = $false)] [string]$TenantId ) $azCmd = Get-Command -Name 'az' -ErrorAction SilentlyContinue if (-not $azCmd) { throw "Azure CLI ('az') is not installed or not in PATH." } $arguments = @('graph', 'query', '-q', $Query, '-o', 'json') if ($SubscriptionId) { $arguments += @('--subscriptions', $SubscriptionId) } if ($TenantId) { $arguments += @('--tenant', $TenantId) } $rawResult = & az @arguments 2>&1 if ($LASTEXITCODE -ne 0) { throw "Resource Graph query failed: $rawResult" } $parsed = $rawResult | ConvertFrom-Json if ($parsed -and $parsed.data) { return $parsed.data } return $parsed } |