Public/Get-ALVMName.ps1

function Get-ALVMName {
    <#
.SYNOPSIS
  Extracts VM name out of "action required" task
.DESCRIPTION
  Extracts VM name out of "action required" task
.PARAMETER message
  Message from pending operation
.EXAMPLE
  Get-ALVMName -message $status.WorkItems.WorkItemResult.Status
#>

    [cmdletbinding()]
    Param(
        [Parameter(Mandatory = $true)]$message
    )
    Begin {
        Write-Verbose "BEGIN: $($MyInvocation.MyCommand)"
        #Test-ALWebsession -WebSession $websession
    }
    Process {
        $pattern = "(?<=(\]|'))([^'\[]*)-\d\d\d\d-\d\d-\d\d_\d\d-\d\d-\d\d.\d\d\d([^\[']*)(?=(\[|'))"
        $result = [regex]::match($message, $pattern)
        Write-Verbose $result
        return $result.value
    }
    end {Write-Verbose "END: $($MyInvocation.MyCommand)"}
}