我正在尝试创建一个执行以下操作的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
有谁知道如何修改文件以获得上面列出的格式所需的信息?
答案 0 :(得分:0)
您应该使用双点限定符将FileVersionInfo
对象的嵌套字段添加到$obj
中,如下所示:
$obj += New-Object psObject -Property @{'Computer'=$server;'FileVersion'=$file.VersionInfo.FileVersion;'LastAccessTime'=$file.LastWriteTime}
此外,虽然New-Object
个对象中没有更多字段,但不需要脚本最后一行中的间歇select
。