Я пытаюсь получить версию файла dll удаленно, используя Powershell на нескольких серверах, и мне нужно записать имя сервера, версию dll и местоположение файла dll в отчет csv или html. Подвох в том, что некоторые серверы - это Win 2003 и Win 2008. Таким образом, файл может находиться, например, в C: \ Program Files \ WinZip \ WZCAB.DLL или C: \ Program Files (x86) \ WinZip \ WZCAB.DLL. Сценарий проверит одно местоположение и, если он не существует, проверит другое, а затем запишет его. Кто-нибудь может мне помочь?
Всего несколько вещей. Этот сценарий будет использоваться для доступа к более чем 200 серверам или виртуальным машинам как в 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
}
}