При управлении большим количеством серверов и рабочих станций, удобно, когда на рабочем столе системы показывается базовая информация о компьютере. Например, имя компьютера, имя домена, 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 на компьютере пользователя. Значит политика работает. Но не применяет на рабочий стол.. Почему? Порядок политик стоит правильно.. Помогите(
У меня выходит 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
Спасибо, буду пробовать что и как.