Capturar saída de um comando do PowerShell no loop for / f de um arquivo em lotes

Esse código do PowerShell seleciona o valor correto paravar5 desta string. O resultado desejado é "Alerta gerado".

PS C:\src\t> $s = 'Status 58   var5=Alert Raised on: March'
PS C:\src\t> $s
Status 58   var5=Alert Raised on: March
PS C:\src\t> $s | Where-Object { $_ -match '.*var5=(.*)\s+\w+:' } | ForEach-Object { $Matches[1] }
Alert Raised

No entanto, o uso do mesmo código do PowerShell em um script de shell do cmd produz um resultado diferente. Por que é que? Existe algo que precisa ser escapado para o shell do cmd?

C:>type mat002-annex.bat
@ECHO OFF
SET "S=Status 58   var5=Alert Raised on: March"
ECHO S is set to %S
FOR /F %%a IN ('powershell -NoLogo -NoProfile -Command ^
    " '%S%' | Where-Object { $_ -match '.*var5=(.*)\s+\w+:' } | ForEach-Object { $Matches[1] } "') DO (ECHO Result is "%%a")

C:>mat002-annex.bat
S is set to S
Result is "Alert"

questionAnswers(2)

yourAnswerToTheQuestion