首页 > 解决方案 > 如何将 Powershell 命令的输出定向到 CMD 变量

问题描述

我正在使用 PowerShell 来获取文件的文件版本

C:\WINDOWS\system32>powershell (Get-Command C:\Users\lafarnum\Downloads\aniteloggingclientapi.dll).FileVersionInfo.FileVersion 1.12.0.4

输出文件版本为 1.12.0.4。我想将此文件版本像正常分配一样通过管道传输到 DOS CMD 变量中,但问题是它只是分配 PowerShell 命令字符串,而不是 PowerShell 命令的输出

C:\WINDOWS\system32>set pfpathset=powershell (Get-Command C:\Users\lafarnum\Downloads\aniteloggingclientapi.dll).FileVersionInfo.FileVersion

C:\WINDOWS\system32>echo %pdpathset% %pdpathset%

C:\WINDOWS\system32>echo %pfpathset% powershell (Get-Command C:\Users\lafarnum\Downloads\aniteloggingclientapi.dll).FileVersionInfo.FileVersion

C:\WINDOWS\system32>

那么PS命令输出似乎没有直接指向CMD STDOUT输出?那么我是否必须将 PS 命令的输出通过管道传输到另一个字符串变量中,然后将该变量分配给我的 pfpathset 变量?还是我必须使用 ps 脚本来执行此操作?

对不起,如果这是一个基本问题,但我是一个 powershell 新手,所以任何帮助将不胜感激。

感谢你在期待

标签: powershell

解决方案


类似于将命令输出分配给批处理文件中的变量。由于括号,您需要双引号。

在 .bat 文件中放入 %%i 而不是 %i。

for /f %i in ('powershell "(Get-Command notepad).FileVersionInfo.FileVersion"') do set output=%i

echo %output%
10.0.19041.1

推荐阅读