我目前正在尝试使用Get-RemoteProgram
script列出远程计算机上安装的程序。
我不仅要捕获远程程序列表,还要捕获单个系统的直接版本。
RemoteProgram -ComputerName remotecomputername -Property DisplayVersion,VersionMajor
ProgramName ComputerName DisplayVersion VersionMajor ----------- ------------ -------------- ------------ System Center Endpoint Protection remotecomputername 4.7.214.0 4 Microsoft Visual Studio 2010 Tools for Office Runtime (x64) remotecomputername 10.0.50903 4 Synaptics Pointing Device Driver remotecomputername 18.0.7.34 18
但是,当我在多个系统中循环播放时,我会完全丢失DisplayVersion
和MajorVersion
字段。
Get-Content -Path C:\Temp\computerlist.txt | ForEach-Object -Begin {RemoteProgram} -Process {RemoteProgram -ComputerName $_ -Property DisplayVersion,VersionMajor}
ProgramName ComputerName ----------- ------------ System Center Endpoint Protection remotecomputer Microsoft Visual J# 2.0 Redistributable Package - SE (x64) remotecomputer Mozilla Firefox 57.0.2 (x64 en-US) remotecomputer Mozilla Maintenance Service remotecomputer
答案 0 :(得分:2)
这是PowerShell输出格式的一种情况。
返回对象时,您将获得完整对象及其所有属性。
当您尝试显示没有说明的对象时,PowerShell会尽力显示它。这意味着它将决定显示哪些属性,是否将它们显示为表或列表等。
您可以使用Format-*
命令覆盖其显示的方式,但为了使用对象,所有信息都在那里。
这意味着如果你将它管道输出到Export-Csv
之类的东西,它就会使用所有属性,即使你没有在正常显示中看到它们。
如果您想特别看到它们,请使用Format-*
命令,但这些命令仅用于显示;不要将这些命令发送给其他命令。