При управлении большим количеством серверов и рабочих станций, удобно, когда на рабочем столе системы показывается базовая информация о компьютере. Например, имя компьютера, имя домена, IP и MAC адрес, версия Windows, тип CPU, количество RAM, свободное место, контакты техподдержки и т.д. С помощью утилиты BgInfo от Microsoft можно получить любую системную информацию и вывести ее на рабочий стол поверх обоев.
Подготовка шаблона текста рабочего стола в Bginfo
Сначала вам нужно сформировать шаблон, который будет использоваться Bginfo для вывода информации на рабочий стол Windows.
- Скачайте утилиту Bginfo (https://docs.microsoft.com/en-us/sysinternals/downloads/bginfo) и запустите исполняемый файл bginfo.exe;
- В окне конфигуратора Bginfo нужно настроить информацию, которую вы хотите показывать на рабочем столе пользователя.
- Окно Bginfo представляет собой простой текстовый редактор, в котором можно добавить, удалить или отредактировать любое из выводимых значений, изменить цвет или размер шрифта, расположение данных на экране, добавить ваше лого и т.д.;
- Список доступных системных значений, которые Bginfo может получить из операционной системы содержится в правом списке Fileds. Динамические переменные, значения которых должны быть получены из системы, указываются в угловых скобках. Например,
<Host name>
; - Я подготовил простой шаблон с базовой информацией о компьютере, добавил лого компании и контакты техподдержки:
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
[email protected] - Чтобы понять, как будет выглядеть информация из Bginfo на рабочем столе, нажмите кнопку Preview.
- Сохраните данную конфигурацию в файл bg_config.bgi
Применить настройки Bginfo к компьютерам через GPO
С помощью групповых политик можно применить конфигурационный файл Bginfo ко всем компьютерам в домене Active Directory.
Создайте на котроллере домена в каталоге NETLOGON (
C:\WINDOWS\SYSVOL\sysvol\winitpro.local\SCRIPTS
) папку Bginfo и скопируйте в него файлы bg_config.bgi и Bginfo.exe.
Создайте в этом же каталоге bat скрипт apply_bginfo.bat для применения настроек Bginfo к компьютеру:
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
- Откройте редактор доменных GPO (gpmc.msc), создайте новую политику bgInfoGPO и назначьте ее на нужные OU;
- Отредактируйте GPO;
- Перейдите в GPO раздел User Configuration -> Policies -> Windows Settings -> Scripts (Logon/Logoff) -> Logon -> Scripts -> Add и укажите UNC путь к вашему скрипту (например,
\\resource.loc\NETLOGON\Bginfo\apply_bginfo.bat
); - Включите режим замыкания GPO, чтобы политика применялась для пользователей если вы назначили ее на OU с компьютерами: Computer Configuration –> Administrative Templates -> System -> Group Policy -> Configure user Group Policy loopback processing mode = Enabled (Merge);
- Чтобы обновить настройки групповой политики на клиенте, перезайдите на компьютер под пользователем. Проверьте что на рабочем столе теперь отображается системная информация, которую вы настроили.
Утилита BGInfo копирует фон рабочего стола в
%Temp%\BGInfo.bmp
и накладывает на него текст. Затем этот файл устанавливается в качестве обоев рабочего стола. Если вы задаете обои рабочего стола пользователям отдельной политикой, убедитесь что политика с настройками Bginfo применяться после вашей политики wallpaper. Измените порядок применения политик, если нужно.
Вывод системной информации через скрипты в Bginfo
В Bginfo есть набор предустановленных переменных, значения которых можно вывести на рабочий стол. Если вы хотите вывести какую-то другую информацию о системе, можено получить произвольные данные с компьютера с помощью WMI запроса, напрямую из реестра или из VBS скрипта.
Для добавления собственных значений в Bginfo нужно нажать на кнопку Custom -> New.
Утилита позволяет вывести:
- Значение переменной окружения;
- Значение параметра реестра;
- Результаты WMI запроса;
- Версию файла;
- Содержимое файла;
- Выполнить VBS скрипт.
Например, следующий WMI запрос позволит вывести на рабочий стол билд операционной системы (особо актуально для Windows 10 и 11):
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
Обратите внимание, что значение которое вы хотите увидеть в Bginfo скрипт vbs должен возвращать через
Echo
.
Bginfo напрямую не позволяет использовать команды или скрипты PowerShell для получения информации. Поэтому если вы хотите вывести в Bginfo информацию, полученную с помощью PowerShell, придется создать обертку в виде кода VBScript. Например, следующий VBS файл выполнит PowerShell команду, которая получит дату последней установки обновлений в 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
Вывести системную информацию на экран блокировки Windows
Чтобы применить текущий фоновый рисунок рабочего стола к экрану блокировки Windows, можно запустить такой VBS скрипт через Bginfo.
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-адресу добавляем фильтр SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=True
К ОС добавляем разрядность Select AddressWidth from Win32_Processor
И емейлы не кликабельны, я бы не стал вводить пользователя в искушение.
Добрый день! «cmd.exe не поддерживает пути unc. по умолчанию выбрана системная папка windows».
Сообщение при выводе строки %logonserver%\NETLOGON\Bginfo\Bginfo.exe %logonserver%\NETLOGON\Bginfo\bg_config.bgi /silent /TIMER:00 /nolicprompt Как можно исправить?
Интереснее использоваться софтину DesktopInfo. Также гибко настраивается и обновляет выводимые данные в реальном времени.
Добрый день! Можно ли будет вывести данный фон рабочего с информацией о пк на экран блокировки windows 10 до входа в систему ?
В теории — да, вам нужно. BGinfo содает файл изображения и сохраняет его в C:\users\username\appdata\local\temp\BGInfo.BMP.
Вам нужно logon скриптом вытащить этот файл, сохранить его кудато на диске в другой каталог и задачь через GPO в качестве изображения экрана блокировки
Computer Configuration\Administrative Templates\Control Panel\Personalization\Force a specific default lock screen image
Добрый день!
В первый раз столкнулся с WSUS. Задача стоит установить пользователям kb447419.msu
Дело в том, что WSUS на сервере — в локальной сети.
+ есть пк, которые не отображаются в WSUS
Нужно разобраться со WSUS, его политиками,, проапрувить обновление и дождаься установки.
Если компьютеры не отображаются во wsus, смотрите настройки политик wsus, файерфолов. Нюансов очень много.
Начинайте с:
https://winitpro.ru/index.php/2013/04/11/ustanovka-wsus-na-windows-server-2012/
https://winitpro.ru/index.php/2014/01/22/nastrojka-gruppovyx-politik-wsus/
https://winitpro.ru/index.php/2019/02/08/odobrenie-obnovlenij-wsus-windows-server/
Решил развернуть такую штуку в организации. В первые пару часов получил кучу недовольных пользователей, у которых вместо заставки черный фон с информацией итд. В общем, работает это лишь в том случае, если пользователи не ставят на рабочий стол любимых собачек из ватсапа в шакальном качестве. Статья мне понравилась, узнал кое-что новое, но захотел предупредить остальных о возможных последствиях))
По началу тоже были и меняли обои, но потом устали это ежедневно делать и через полгода перестали)
P.S. нашел в статье ошибку — папку «bginfo» нужно создавать не в самом SYSVOL, а в SYSVOL\domain\scripts, тогда корректно отработает логон скрипт, так как в нем указан путь %logonserver%\NETLOGON\bginfo\, а NETLOGON — это имя расшаренной SYSVOL\domain\scripts.
Подскажите пожалуйста как развернуть эту утилиту с помощью SCCM?
Не обязательно локально копировать файлы Bginfo.exe и bg_config.bgi .
Можно просто через SCCM запустить скрипт, который применит настройки Bginfo из сетевой папки ( по UNC пути)
Если хочется именно скопировать, нужно cделать advertisement, который запускает BAT файл, который копирует файлы Bginfo.exe и bg_config.bgi на компьютер пользователя с DP (xcopy)и запускает команду установки фона:
reg add HKEY_CURRENT_USER\Software\Sysinternals\BGInfo /v EulaAccepted /t REG_DWORD /d 1 /f
Локальный путь\Bginfo\Bginfo.exe Локальный путь\Bginfo\bg_config.bgi /silent /TIMER:00 /nolicprompt
Автор, спасибо за ответ! Но честно не понятно, если ты вообще ноль в SCCM, а задача стоит. Кажется статья готовая подошла. Было бы круто, если запили эту тему. В интернете везде полазил нет конкретного ответа. Все через GPO
Добрый день. А не подскажите как сделать разные цвета. как у вас на скриншотах?
Прямо в редакторе bginfo можно настроить цвет и размер шрифтов.
У меня не получается.. Картинку я нашел в папке C:\users\username\appdata\local\temp\BGInfo.BMP на компьютере пользователя. Значит политика работает. Но не применяет на рабочий стол.. Почему? Порядок политик стоит правильно.. Помогите(
Аналогичная проблема! Уже полдня пытаюсь понять. Причём под Windows 10 нормально всё работает, а под Windows 11 — нет. И в реестре всё прописывается и файл создаётся с фоном и надписями (то есть политика применяется), но на рабочий стол не ставится.
У меня выходит none в IP и в DNS. как решить проблему в IP в инете нашел а вот с DNS не нашел. есть решение этого?
Подскажите можно вместе с рисунком экрана блокировки выводить имя компьютера в домене?
Можно реализовать вывод технической информации о компьютере на картинку с помощью bginfo (https://winitpro.ru/index.php/2021/06/10/vyvod-sysinfo-na-desktop-bginfo/). И совместить картинку на выходе bginfo с рисунком экрана блокировки как описано тут.
Спасибо попробую
Доброе время суток, подскажите, есть ли у bginfo возможность , работать с powershell script ? Что нужно указать в Replace identifier with: (скрип выводи время до смены пароля пользака )
Не нашел, как напрямую в bginfo выводить данные от PowerShell. Как вариани, можно запускать VBS код который выполняет уже ваш powershell скрипт.
Вот так https://nyukers.blogspot.com/2022/09/bginfo-powershell.html
В шаблоне BGInfo указываем вызов VB-скрипта, например файл 11.vbs, в котором и вызываем Powershell:
On Error Resume Next
Set objShell = CreateObject("Wscript.Shell")
Status = objShell.Exec("powershell.exe -ExecutionPolicy Bypass –Noprofile -Windowstyle Hidden -File test.ps1").StdOut.ReadAll()
Echo Status
Не забываем прочитать результат Powershell через ReadAll(), и передать его через эхо в саму BGInfo.
А вот скрипт Powershell test.ps1 должен возвращать максимально простой однострочный ответ, например такой:
$PSVersionTable.PSVersion.Major
Спасибо, буду пробовать что и как.