多台计算机上的多个文件版本检查

时间:2015-06-17 05:56:28

标签: powershell

我正在尝试创建一个执行以下操作的Powershell脚本: 1)从txt文件中读取文件列表。 txt文件将包含文件的路径和名称,例如:\ Program Files(x86)\ AppName \ application.exe 在读取文件列表后,Powershell然后从另一个txt文件中读取并导入计算机列表,例如

pc-001
pc-002
pc-003
...

在检查每台计算机的文件版本后,它会以下列格式将数据输出到txt文件:

PC-001
\Program Files (x86)\AppName\application.exe - version details
\Program Files (x86)\AppName\anotherfile.dll - version details

PC-002
\Program Files (x86)\AppName\application.exe - version details
\Program Files (x86)\AppName\anotherfile.dll - version details

PC-002
\Program Files (x86)\AppName\application.exe - version details
\Program Files (x86)\AppName\anotherfile.dll - version details

到目前为止,我已经想出了这个:

$filename = "\Program Files (x86)\application\application.exe" 

$obj = New-Object System.Collections.ArrayList 

$computernames = Get-Content C:\Computer.csv 
foreach ($server in $computernames) { 
  $filepath = Test-Path "\\$server\c$\$filename" 

  if ($filepath -eq "True") { 
    $file = Get-Item "\\$server\c$\$filename" 

    $obj += New-Object psObject -Property @{
              'Computer'       = $server;
              'FileVersion'    = $file.VersionInfo|Select FileVersion;
              'LastAccessTime' = $file.LastWriteTime
            } 
  } 
} 

$obj | select computer, FileVersion, lastaccesstime |
  Export-Csv -Path 'c:\File_Results.csv' -NoTypeInformation

有谁知道如何修改文件以获得上面列出的格式所需的信息?

1 个答案:

答案 0 :(得分:0)

您应该使用双点限定符将FileVersionInfo对象的嵌套字段添加到$obj中,如下所示:

$obj += New-Object psObject -Property @{'Computer'=$server;'FileVersion'=$file.VersionInfo.FileVersion;'LastAccessTime'=$file.LastWriteTime} 

此外,虽然New-Object个对象中没有更多字段,但不需要脚本最后一行中的间歇select

相关问题