Capture la salida de un comando de PowerShell en un archivo por lotes para el bucle / f

Este código de PowerShell selecciona el valor correcto paravar5 de esta cadena. El resultado deseado es "Alerta elevada".

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

Sin embargo, el uso del mismo código de PowerShell en un script de shell cmd produce un resultado diferente. ¿Porqué es eso? ¿Hay algo que deba escaparse para el shell 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"

Respuestas a la pregunta(2)

Su respuesta a la pregunta