事情并不复杂,对我来说不合逻辑。我正在尝试在Powershell中设置一个主要进入文件夹并获取所有*.exe files
版本的脚本。这很有效:
dir 'C:\Program Files (x86)\SPN'| Get-ChildItem -Recurse -Include '*.exe' |%{$_.VersionInfo} | select FileName, FileVersion | Format-Table -Autosize | Out-file c:\test.txt
这很简单,因为它只是进入文件夹,递归搜索exe文件,取出VersionInfo,然后在将文件名和版本放入文件之前选择文件名和版本,以便对安装的版本进行报告。它也有效!
问题有点复杂。我们使用htm\vbs application
来运行脚本。主要意味着我们所有的脚本都是vbs, batch, or powershell
通过这个平台运行的。有时我们还通过vbs脚本启动的批处理文件运行PowerShell。
当我启动PowerShell并运行上面的脚本时,文件会输出我之前的信息,当我启动cmd并运行powershell脚本时,我会得到一个没有版本的应用程序列表。同样适用于vbs。
所以我觉得我会更深入。我开始使用cmd,然后键入start powershell
以获得一个新窗口,但是,我仍然只得到filenames and no versions!
我获得版本的唯一方法是通过Powershell运行脚本自己。 (意思是我必须手动打开Powershell,右键单击并选择Run with Powershell
给出名称,没有版本)
欢迎任何建议和想法。
感谢。
答案 0 :(得分:0)
如果首先指定最宽的列,则可能不会显示某些列,因此最安全的方法是首先指定最小的数据元素。在下面的示例中,我们首先指定极宽的路径元素,即使使用换行,我们仍会丢失最终列。
指定fileversion首先解决问题。
dir 'C:\.....| Get-ChildItem -Recurse -Include '*.exe' | %{$_.VersionInfo} | select FileName, FileVersion | Format-Table -Wrap -Autosize -Property fileversion, filename | Out-File "C:\....\testing.txt"