Batch file. Ejecutar script de PowerShell dentro de un archivo .bat y guardarlo en una variable

A toda la comunidad. Un placer saludarlos. Nuevamente traigo una consulta. Paso a detallarles

Tengo el siguiente script de PowerShell

(Get-Item -Path 'C:\Program Files (x86)\ExpressVPN\expressvpn-ui\ExpressVPN.exe').VersionInfo |
    Format-List -Force

lo cual me tira como resultado lo siguiente:

PS C:\Windows\system32> (Get-Item -Path 'C:\Program Files (x86)\ExpressVPN\expressvpn-ui\ExpressVPN.exe').VersionInfo |
    Format-List -Force
OriginalFilename : ExpressVPN.exe
FileDescription : ExpressVPN
ProductName : ExpressVPN
Comments : 
CompanyName : ExpressVPN
FileName          : C:\Program Files (x86)\ExpressVPN\expressvpn-ui\ExpressVPN.exe
FileVersion : 10.0.9.2_release
ProductVersion : 10.0.9.2_release
IsDebug           : False
IsPatched         : False
IsPreRelease      : False
IsPrivateBuild    : False
IsSpecialBuild    : False
Language : Independiente del idioma
LegalCopyright : Copyright ExpressVPN © 2021, All rights reserved.
LegalTrademarks : 
PrivateBuild : 
SpecialBuild : 
FileVersionRaw    : 10.0.9.2
ProductVersionRaw : 10.0.9.2

Lo que intento y necesito, es obtener el valor de ProductVersion y almacenarlo en una variable para poder hacer uso de ese resultado "10.0.9.3_release" en una comparativa, por citar un ej. Todo dentro de un archivo .bat

1 respuesta

Respuesta
1

Prueba con esto:

@echo off
set archivo=C:\Program Files (x86)\ExpressVPN\expressvpn-ui\ExpressVPN.exe
@PowerShell  ^
   (Get-Item -Path '%archivo%'). VersionInfo ^| Format-List -Force > flist.log
%End PowerShell%
for /f "tokens=2 delims=: " %%a in ('type flist.log^|find "ProductVersion "') do echo %%a 

Esta es la forma en la que yo extraigo resultados de PowerShell para pasarlos a variables del BAT. Imagino que puede haber otras más directas por lo que estaría encantado de que alguien nos las contara.

Ojo, que el editor de la página ha insertado un espacio entre el "." y VersionInfo. Hay que eliminarlo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas