Files

74 lines
2.3 KiB
PowerShell

# Generate Microsoft Foundry portal URL for a model deployment
# This script creates a direct clickable link to view a deployment in the Microsoft Foundry portal
#
# NOTE: The encoding scheme for the subscription ID portion is proprietary to Microsoft Foundry.
# This script uses a GUID byte encoding approach, but may need adjustment based on the actual encoding used.
param(
[Parameter(Mandatory=$true)]
[string]$SubscriptionId,
[Parameter(Mandatory=$true)]
[string]$ResourceGroup,
[Parameter(Mandatory=$true)]
[string]$FoundryResource,
[Parameter(Mandatory=$true)]
[string]$ProjectName,
[Parameter(Mandatory=$true)]
[string]$DeploymentName
)
function Get-SubscriptionIdEncoded {
param([string]$SubscriptionId)
# Parse GUID and convert to bytes in string order (big-endian)
# Not using ToByteArray() because it uses little-endian format
$guidString = $SubscriptionId.Replace('-', '')
$bytes = New-Object byte[] 16
for ($i = 0; $i -lt 16; $i++) {
$bytes[$i] = [Convert]::ToByte($guidString.Substring($i * 2, 2), 16)
}
# Encode as base64url
$base64 = [Convert]::ToBase64String($bytes)
$urlSafe = $base64.Replace('+', '-').Replace('/', '_').TrimEnd('=')
return $urlSafe
}
function Get-FoundryDeploymentUrl {
param(
[string]$SubscriptionId,
[string]$ResourceGroup,
[string]$FoundryResource,
[string]$ProjectName,
[string]$DeploymentName
)
# Encode subscription ID
$encodedSubId = Get-SubscriptionIdEncoded -SubscriptionId $SubscriptionId
# Build the encoded resource path
# Format: {encoded-sub-id},{resource-group},,{foundry-resource},{project-name}
# Note: Two commas between resource-group and foundry-resource
$encodedPath = "$encodedSubId,$ResourceGroup,,$FoundryResource,$ProjectName"
# Build the full URL
$baseUrl = "https://ai.azure.com/nextgen/r/"
$deploymentPath = "/build/models/deployments/$DeploymentName/details"
return "$baseUrl$encodedPath$deploymentPath"
}
# Generate and output the URL
$url = Get-FoundryDeploymentUrl `
-SubscriptionId $SubscriptionId `
-ResourceGroup $ResourceGroup `
-FoundryResource $FoundryResource `
-ProjectName $ProjectName `
-DeploymentName $DeploymentName
Write-Output $url