Private/NestedFunctions/New-JCCommandFromURL.ps1

Function New-JCCommandFromURL {
    [CmdletBinding()]
    param (

        [Parameter(
            Mandatory,
            ValueFromPipelineByPropertyName = $True)]
        [string]
        [alias("URL")]
        $GitHubURL

    )

    process {

        # Convert GitHub url to raw url
        $httpUrl = $GitHubURL | Select-String -Pattern "\bmaster.*$" | % { $_.Matches }  | % { $_.Value }
        $rawUrl = "https://raw.githubusercontent.com/TheJumpCloud/support/$httpUrl"

        $rawUrlInvoke = Invoke-WebRequest -Uri $rawUrl -UseBasicParsing -UserAgent:(Get-JCUserAgent)
        $content = [Regex]::Matches($rawUrlInvoke.Content, '#### (Name|commandType).*[\r\n]+(.*)|#### Command[\n\r]+.*\n([\s\S]*?)```$', [System.Text.RegularExpressions.RegexOptions]::Multiline)

        # Command Values
        $Name = $content[0].Groups[2].Value #Name
        $commandType = $content[1].Groups[2].Value #CommandType
        $Command = $content[2].Groups[3].Value #Command

        $NewCommandParams = @{

            name        = $Name
            commandType = $commandType
            command     = $command
        }
        try {

            $NewCommand = New-JCCommand @NewCommandParams

        } catch {

            $NewCommand = $_.ErrorDetails

        }
    }
    end {

        Return $NewCommand

    }
}