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)" }
}