Public/Functions/Resolve-MsUrl.ps1

<#
.SYNOPSIS
Resolves a short Microsoft aka.ms or fwlink URL.
 
.DESCRIPTION
Resolves a short Microsoft aka.ms or fwlink URL.
 
.PARAMETER Uri
Uri to resolve.
 
.EXAMPLE
Resolve-MsUrl -Uri 'https://aka.ms/windows'
 
.LINK
https://osd.osdeploy.com
 
.NOTES
Author: David Segura - Recast Software
2026-07-13 - Improved help and readability without changing behavior
#>

function Resolve-MsUrl
{
    [OutputType([System.Uri])]
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory, ValueFromPipeline)]
        # Uri to resolve
        [System.Uri]
        $Uri
    )

    switch ($Uri) {
        HonoluluDownload   { $Uri = 'https://aka.ms/HonoluluDownload' }
        MCMultiplayerHelp  { $Uri = 'https://aka.ms/MCMultiplayerHelp' }
        SignupAzureDevOps  { $Uri = 'https://aka.ms/SignupAzureDevOps' }
        WS03blog           { $Uri = 'https://aka.ms/WS03blog' }
        WinterofXamarin    { $Uri = 'https://aka.ms/WinterofXamarin' }
        aadv2              { $Uri = 'https://aka.ms/aadv2' }
        account            { $Uri = 'https://aka.ms/account' }
        admincenter        { $Uri = 'https://aka.ms/admincenter' }
        armworkshop        { $Uri = 'https://aka.ms/citadel/arm' }
        authapp            { $Uri = 'https://aka.ms/authapp' }
        azsb               { $Uri = 'https://aka.ms/azsb' }
        azureadvisor       { $Uri = 'https://aka.ms/azureadvisor' }
        azureportal        { $Uri = 'https://aka.ms/azureportal' }
        azuretipsandtricks { $Uri = 'https://aka.ms/azuretipsandtricks' }
        dsvm               { $Uri = 'https://aka.ms/dsvm' }
        insider            { $Uri = 'https://aka.ms/insider' }
        m365pnp            { $Uri = 'https://aka.ms/m365pnp' }
        mdwdataops         { $Uri = 'https://aka.ms/mdw-dataops' }
        mfasetup           { $Uri = 'https://aka.ms/MFASetup' }
        mslab              { $Uri = 'https://aka.ms/mslab' }
        mslabdownload      { $Uri = 'https://aka.ms/mslab/download' }
        mysecurityinfo     { $Uri = 'https://aka.ms/mysecurityinfo' }
        office             { $Uri = 'https://aka.ms/office' }
        officepowershell   { $Uri = 'https://aka.ms/office-powershell' }
        onedrive           { $Uri = 'https://aka.ms/onedrive' }
        onedrivesetup      { $Uri = 'https://go.microsoft.com/fwlink/p/?LinkID=2182910' }
        privacy            { $Uri = 'https://aka.ms/privacy' }
        remoteconnect      { $Uri = 'https://aka.ms/remoteconnect' }
        server             { $Uri = 'https://aka.ms/server' }
        spfx               { $Uri = 'https://aka.ms/spfx-extensions' }
        teams-samples      { $Uri = 'https://aka.ms/teams-samples' }
        thirdpartynotices  { $Uri = 'https://aka.ms/thirdpartynotices' }
        upgradecenter      { $Uri = 'https://aka.ms/upgradecenter' }
        vscode             { $Uri = 'https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user' }
        vse2022            { $Uri = 'https://aka.ms/vs/17/release/vs_enterprise.exe' }
        wac-insiders-feed  { $Uri = 'https://aka.ms/wac-insiders-feed' }
        wacdownload        { $Uri = 'https://aka.ms/WACDownload' }
        win10releaseinfo   { $Uri = 'https://aka.ms/win10releaseinfo' }
        win10releasenotes  { $Uri = 'https://aka.ms/win10releasenotes' }
        windows            { $Uri = 'https://aka.ms/windows' }
        windowsadmincenter { $Uri = 'https://aka.ms/WindowsAdminCenter' }
        winserverdata      { $Uri = 'https://aka.ms/winserverdata' }
        yourpc             { $Uri = 'https://aka.ms/yourpc' }
    }

    if ($Uri)
    {
        try
        {
            $webRequest = Invoke-WebRequest "$Uri" -UseBasicParsing -Method Head -MaximumRedirection 0 -ErrorAction SilentlyContinue
            if ($webRequest.Headers.Location)
            {
                $webRequest.Headers.Location
            }
        }
        catch
        {
            Write-Warning $_.Exception.Message
        }
    }
}