Управление множеством серверов и рабочих станций требует быстрого доступа к системной информации, такой как имя компьютера, IP-адрес, объем оперативной памяти, версия Windows или контакты техподдержки. Утилита BgInfo от Microsoft позволяет выводить эту информацию непосредственно на рабочий стол, накладывая данные поверх обоев. В статье мы разберем, как настроить BgInfo, создать шаблон, автоматизировать применение через групповые политики (GPO) и расширить функциональность с помощью скриптов и WMI-запросов.
1. Настройка шаблона BgInfo
Для начала необходимо создать шаблон, определяющий, какая информация будет отображаться на рабочем столе.
Шаги настройки
1. Скачайте утилиту BgInfo с официального сайта: Sysinternals BgInfo.
2. Запустите файл bginfo.exe.
3. В окне конфигуратора настройте отображаемые данные:
– Выберите переменные из списка Fields (например, Host Name, IP Address, Free Space).
– Настройте шрифт, цвет текста, положение информации и добавьте логотип компании.
4. Пример шаблона:
Systeminfo:
Host Name:
Logon Domain:
User Name:
OS Version:
Boot Time:
IP Address:
MAC Address:
CPU:
Memory:
Free Space:
___________________________________
LOGO IMG
HelpDesk: +7 (495) 555-44-33
helpdesk@company.com
5. Нажмите Preview, чтобы оценить, как информация будет выглядеть на рабочем столе.
6. Сохраните конфигурацию в файл, например, bg_config.bgi.
2. Автоматизация через групповые политики (GPO)
Для применения настроек BgInfo на все компьютеры в домене Active Directory используйте групповые политики.
Подготовка файлов
1. На контроллере домена создайте папку Bginfo в каталоге NETLOGON:
C:\WINDOWS\SYSVOL\sysvol\yourdomain.local\SCRIPTS\Bginfo
2. Скопируйте файлы bg_config.bgi и bginfo.exe в эту папку.
3. Создайте BAT-скрипт apply_bginfo.bat в той же папке:
reg add HKEY_CURRENT_USER\Software\Sysinternals\BGInfo /v EulaAccepted /t REG_DWORD /d 1 /f
%logonserver%\NETLOGON\Bginfo\Bginfo.exe %logonserver%\NETLOGON\Bginfo\bg_config.bgi /silent /TIMER:00 /nolicprompt
Этот скрипт принимает лицензионное соглашение и применяет конфигурацию BgInfo без запросов.
Настройка GPO
1. Откройте редактор групповых политик (gpmc.msc).
2. Создайте новую политику, например, bgInfoGPO, и свяжите ее с нужной OU.
3. Отредактируйте политику:
– Перейдите в User Configuration → Policies → Windows Settings → Scripts (Logon/Logoff) → Logon.
– Нажмите Add и укажите UNC-путь к скрипту:
\\resource.loc\NETLOGON\Bginfo\apply_bginfo.bat
4. Включите режим замыкания (loopback processing) для применения политики к пользователям в OU с компьютерами:
– Computer Configuration → Administrative Templates → System → Group Policy.
– Установите Configure user Group Policy loopback processing mode в Enabled (Merge).
Проверка применения
1. Перезайдите на клиентский компьютер под пользователем.
2. Убедитесь, что на рабочем столе отображается системная информация.
3. Если настройки не применились, выполните диагностику с помощью команды:
gpresult /r
Примечание
BgInfo создает файл %Temp%\BGInfo.bmp, комбинируя обои и текст, и устанавливает его как фон рабочего стола. Если обои задаются другой GPO, убедитесь, что политика BgInfo применяется после нее. Измените порядок политик в gpmc.msc, если необходимо.
3. Расширение функциональности с помощью скриптов
BgInfo поддерживает предустановленные переменные, но вы можете добавлять пользовательские данные через WMI-запросы, реестр или VBS-скрипты.
Добавление пользовательских полей
1. В окне BgInfo нажмите Custom → New.
2. Выберите источник данных:
– Переменная окружения.
– Параметр реестра.
– WMI-запрос.
– Версия файла.
– Содержимое файла.
– VBS-скрипт.
Пример WMI-запроса
Для вывода номера сборки Windows используйте:
SELECT BuildNumber FROM Win32_OperatingSystem
Пример VBS-скрипта
Для отображения модели компьютера:
winmgt = "winmgmts:{impersonationLevel=impersonate}!//"
Set oWMI_Qeury_Result = GetObject(winmgt).InstancesOf("Win32_ComputerSystem")
For Each oItem In oWMI_Qeury_Result
Set oComputer = oItem
Next
If IsNull(oComputer.Model) Then
sComputerModel = "*no-name* model"
Else
If LCase(oComputer.Model) = "system product name" Then
sComputerModel = "Custom-built PC"
Else
sComputerModel = oComputer.Model
End If
End If
sComputer = Trim(sComputerModel)
Echo sComputer
Обратите внимание: VBS-скрипт должен возвращать значение через Echo.
Интеграция с PowerShell
BgInfo не поддерживает PowerShell напрямую, но вы можете использовать VBS-обертку. Пример для вывода даты последнего обновления Windows:
On Error Resume Next
Set objShell = CreateObject("Wscript.Shell")
Status = objShell.Exec("powershell.exe -Command (Get-HotFix | Sort-Object InstalledOn -Descending | Select-Object -First 1).InstalledOn").StdOut.ReadAll()
Echo Status
4. Вывод информации на экран блокировки
Чтобы отобразить системную информацию на экране блокировки, настройте BgInfo для применения фона рабочего стола к экрану блокировки с помощью VBS-скрипта:
Set objShell = CreateObject("WScript.Shell")
strTempPath = objShell.ExpandEnvironmentStrings("%TEMP%")
strImagePath = strTempPath & "\BGInfo.bmp"
objShell.Run "REG ADD ""HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Personalization"" /V ""LockScreenImage"" /T REG_SZ /D """ & strImagePath & """ /F", 0, True
objShell.Run "REG ADD ""HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP"" /V ""LockScreenImageStatus"" /T REG_DWORD /D ""00000001"" /F", 0, True
objShell.Run "REG ADD ""HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP"" /V ""LockScreenImagePath"" /T REG_SZ /D """ & strImagePath & """ /F", 0, True
objShell.Run "REG ADD ""HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\PersonalizationCSP"" /V ""LockScreenImageUrl"" /T REG_SZ /D """ & strImagePath & """ /F", 0, True
Утилита BgInfo упрощает управление парком компьютеров, отображая ключевую системную информацию (IP, RAM, CPU, контакты техподдержки) на рабочем столе и экране блокировки. Настройте шаблон, автоматизируйте развертывание через GPO и расширьте функциональность с помощью WMI и VBS-скриптов. Правильная конфигурация и диагностика с gpresult обеспечивают стабильное отображение данных на всех устройствах в домене.