我正在尝试在多台服务器上使用 Powershell 远程获取 dll 的文件版本,并将服务器名称、dll 版本和 dll 文件位置写入 csv 或 html 报告。问题是一些服务器是 Win 2003 和 Win 2008。因此该文件可能驻留在例如 C:\Program Files\WinZip\WZCAB.DLL 或 C:\Program Files (x86)\WinZip\WZCAB.DLL 中。该脚本将检查一个位置,如果它不存在,它将检查另一个位置,然后将其写出。谁能帮我吗?
只是几件事 - 此脚本将用于访问 200 多台服务器或 VM 的 2003 和 2008。在 2003 上它需要 Powershell 2.0 和 2008 将及时启用远程处理。我在想也许我需要使用 WMI。我还有两个利用 WMI 获取补丁和重启时间的脚本。我确实尝试了 Ravikanth 脚本(再次感谢您)并在传递服务器的 txt 文件时收到以下错误 - 一个或多个计算机名称无效。如果您尝试传递 Uri,请使用 -ConnectionUri 参数或传递 Uri 对象而不是字符串。再次,因为我不会在每台服务器上启用远程处理,还有其他方法吗?我修改了 Ravikanth 脚本(如下)并在本地尝试过,效果很好。当我远程尝试时,它没有。有什么想法吗?
$servers = "D:\scripts\winzip\servers.txt"
$x86Path = 'C:\Program Files (x86)\WinZip\WZCAB.DLL'
$x64Path = 'C:\Program Files\WinZip\WZCAB.DLL'
foreach ($computername in $servers){
if (Test-Path $x86Path) {
(Get-Item $x86Path | Select -ExpandProperty VersionInfo).FileVersion
} elseif (Test-Path $x64Path) {
(Get-Item $x64Path | Select -ExpandProperty VersionInfo).FileVersion
}
}