Как удаленно проверить версию библиотеки dll с помощью PowerShell

Обновлено 30.05.2024

powershell проверка версии dll

Добрый день! Уважаемые читатели и гости IT блога Pyatilistnik. В прошлый раз мы с вами устранили уязвимости CVE-2021-3712, CVE-2021-23840, CVE-2021-23840, CVE-2019-1543, CVE-2018-0732, CVE-2017-3731 и CVE-2021-3711 связанные с библиотекой libssl-1_1-x64.dll. Сегодня я хочу немного дополнить эту стать. и научить вас удаленно получать версию библиотеки, особенно это будет актуально для массы серверов, когда вы скриптом сделали замену, и хотите проверить результат вашей работы. В целом уверен, что данный сценарий вы сможете применить в разных ситуациях. Если будут еще какие-то предложения по модификации, то жду вас в комментариях.

Узнаем версию библиотеки dll на массе серверов через PowerShell скрипт

У меня есть RDS ферма состоящая из 50 RDSH хостов на базе Windows Server 2022. Все они являются членами инфраструктуры Active Directory. Мне необходимо проверить версию библиотеки ICSharpCode.SharpZipLib.dll по пути:

C:\Program Files (x86)\Apps\Workspace Desktop Edition\

Интересны два параметра FileVersion и ProductVersion. Так же для выполнения скрипта вам потребуется создать текстовый файл в котором нужно поместить имена серверов, каждый с новой строки и без пробелов.

Файл со списком серверов

Запустите PowerShell ISE в режиме администратора от имени той учетной записи у которой есть права на этих серверах.

# Чтение списка компьютеров из текстового файла
$computers = Get-Content -Path "C:\Temp\RDS\servers.txt"

# Создание пустого массива для хранения результатов
$results = @()

# Перебор каждого компьютера из списка
foreach ($computer in $computers) {
$fileVersion = $null
$productVersion = $null

# Попытка получить версию файла dll на удаленном компьютере
try {
$fileVersion = (Get-Item "\\$computer\C$\Program Files (x86)\Apps\Workspace Desktop Edition\ICSharpCode.SharpZipLib.dll").VersionInfo.FileVersion
$productVersion = (Get-Item "\\$computer\C$\Program Files (x86)\Apps\Workspace Desktop Edition\ICSharpCode.SharpZipLib.dll").VersionInfo.ProductVersion
} catch {
Write-Host "Не удалось получить информацию о файле на компьютере $computer"
}

# Добавление результатов в массив
$results += [PSCustomObject]@{
"Имя компьютера" = $computer
"FileVersion" = $fileVersion
"ProductVersion" = $productVersion
}
}

# Вывод результатов в виде таблицы
$results | Format-Table -AutoSize

Получение версии dll в powershell

Как видите выше я сделал первичную выгрузку и вижу, что у библиотеки ICSharpCode.SharpZipLib.dll FileVersion и ProductVersion версия 0.86.0. После ее обновления картина поменялась, и версия стала 1.4.2+33f64eb0f28cdd2b084cb822fcc224c7c5aba553, тем самым я смог устранить уязвимость CVE-2018-1002208.

Получение версии dll в powershell-2

Как видите все оказалось очень простым, теперь у вас всегда будет под рукой PowerShell скрипт, главное актуализировать список серверов. На этом у меня все, с вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.org.

Автор - Сёмин Иван

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *