Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.79/29: Рейтинг темы: голосов - 29, средняя оценка - 4.79
1 / 1 / 0
Регистрация: 26.04.2020
Сообщений: 36
VBS

Доработка VBS скрипта по массовой установке шрифтов средствами GPO

26.04.2020, 21:15. Показов 6401. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день!

Прошу помочь доработать данный скрипт по установке шрифтов.
У меня есть рабочий скрипт по установке шрифтов, ниже его код.
Ему нужно лишь указать папку со шрифтами.
Распространить могу через logon/logoff групповой политикой в домене.
Но проблема в том, что нужно срочно задействовать массовую установку шрифта на большое кол-во компов (Windows 10).
При использовании данного способа и при, например, повторном logon/logoff, на компьютере снова начинает отрабатывать данный скрипт из политики и не устанавливает (так как он уже есть), а выдает окна об этом на экран.
Возможно ли в данном скрипте доработать проверку наличия конкретного шрифта среди установленных в системе и если он уже есть, то не производить установку?
Сам не могу справиться - не силен в скриптах.
Прошу помочь.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Set objShellApp = CreateObject("Shell.Application")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Const FONTS = &H14&
Set objFolder = objShellApp.Namespace(FONTS)
strNewFontsFolder = "Путь к папке со шрифтами"
If objFSO.FolderExists(strNewFontsFolder) = True Then
    For Each objFile In objFSO.GetFolder(strNewFontsFolder).Files
        If Right(LCase(objFile.Name), 4) = ".ttf" Then
            If objFSO.FileExists(objFolder.Self.Path & "" & objFile.Name) = False Then objFolder.CopyHere objFile.Path
        End If
    Next
Else
    MsgBox "Unable to find " & strWindowsFonts
End If
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.04.2020, 21:15
Ответы с готовыми решениями:

GPO и VBS
Доброго времени суток, начал изучать vbs, столкнулся со странной проблемой. Имеется: 1) Домен на win srv 2012r2 2) пользователь...

Организация массовой рассылки средствами PHPMailer на обычном хостинге
Здравствуйте! Есть задача организовать массовую рассылку, среди всех подписавшихся на неё пользователей. Нужно именно свою, а не на разных...

Создание ярлыка средствами GPO
Сделал два ярлыка, но иконка отображается только у URL и так у всех пользователей! Причем если "Установка принтера" сделать...

26
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
27.04.2020, 23:43
Студворк — интернет-сервис помощи студентам
s_bor, через PsExec, например. Либо через разовый запуск из планировщика от системы.
Не верю, что первый скрипт работает без повышения. Там тот же метод.
0
1 / 1 / 0
Регистрация: 26.04.2020
Сообщений: 36
28.04.2020, 20:48  [ТС]
FlasherX, проверил разовым запуском из планировщика системы из-под доменного админа, ничего не получилось.
1) создал задачу в планировщике на запуск Вашего скрипта. В поле запуск от имени вписал доменного админа. Выбрал "Выполнять вне зависимости от регистрации пользователя" и "Выполнить с наивысшими правами".
2) Проверил - шрифта в системе нет.
3) Запустил задание планировщика - ничего не произошло.
Первый скрипт (из моего поста) просто кликаю по нему без повышения прав и в 7 и в 10 и в доменной и не доменной, везде работает.
Еще раз спрошу у Вас - можете ли Вы подсказать, как добавить в мой первый скрипт алгоритм анализа наличия шрифта в системе, который есть в Вашем скрипте.
Вероятно тогда поучиться решить мой вопрос.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
28.04.2020, 21:17
Цитата Сообщение от s_bor Посмотреть сообщение
Первый скрипт (из моего поста) просто кликаю по нему без повышения прав и в 7 и в 10 и в доменной и не доменной, везде работает.
Не верю. Давайте простой тест. Убедитесь, что при включённом UAC на неадминской учётке процесс, из под которого будет выполняться данный код, не был запущен с повышением:
Visual Basic
1
CreateObject("Shell.Application").NameSpace(20).CopyHere "C:\Font\GOST_A.TTF"
Появится окно с вводом пароля?
0
1 / 1 / 0
Регистрация: 26.04.2020
Сообщений: 36
28.04.2020, 22:02  [ТС]
FlasherX, Конечно он может и избыточен, зато он запускается на любой системе и без повышения прав. Передо мной стоит задача просто развернуть один шрифт на много компьютеров. В принципе этот скрипт позволяет решить эту проблему (при все своей избыточности), но он не может выполнить проверку наличия шрифта уже в системе. И естественно при способе реализации через GPO будут ошибки при повторной отработке его. Будут окна о том, что такой шрифт уже есть в системе, и избавиться от них, как я понял нельзя.
Поэтому я предположил, что возможно доработать существующий под мои задачи и все.
Или взять другой скрипт, который решит мою проблему.
Вы предложили работающий скрипт, он вроде бы решает проблему, но (как оказалось) есть проблема или с повышением прав или еще с чем-то, и он не работает в условиях применения его в домене.
Как Вы считаете, возможно ли все таки добиться его работы в моих условиях или не стоит тратить уже время и пытаться решить проблему другими способами?

Добавлено через 3 минуты
FlasherX, Включил UAC на своей недоменной машине, запустил Ваш код и процесс установки пошел без всяких запросов

Добавлено через 5 минут
FlasherX, Проверил эту строчку на доменном, нет запроса пароля - идет установка. Правда UAC не включен, а после включения похоже требуется перезагрузка.
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
28.04.2020, 22:20
s_bor, повторять по сути то же самое не требуется. Вы концептуально неверно рассматриваете проблему. Вы пишите, что дело в выборе скрипта, а я вам объясняю, что дело в конкретном применяемом методе и получателе. Этот метод называется CopyHere. Получателем является виртуальная папка шрифтов, отмеченная индексом 20 (в коде первого поста его шестнадцатиричный аналог — &H14). Больше тут знать нечего. Не может в одном скрипте этот метод отрабатывать без повышения, а в другом — нет. Это нонсенс. Вы явно что-то упускаете при тестах (тип учётки, родительский процесс). Я могу сказать совершенно точно, что при запуске из под обычного пользователя будет появляться окно с повышением прав. А там, где требуется повышение, нужны специальные решения.
0
1 / 1 / 0
Регистрация: 26.04.2020
Сообщений: 36
29.04.2020, 12:45  [ТС]
FlasherX, Да вы правы. Я упустил кое-какие моменты.
Проверил сейчас более детально, у простого пользователя ошибка в работе скрипта, явно не хватает прав и в моем скрипте и в Вашем во всяком случае при применении на Logon пользователя.
Видимо нужно применять какие-то обходные пути, либо PsExec, либо как-то по другому.
До этого тестировал применение моего скрипта и он отработал, но похоже на 7 и скрипт работал на Logon компьютера, проблем не возникало. С 10 все сложнее.
Буду решать в этом направлении.
Благодарю за Вашу помощь.

Добавлено через 1 час 35 минут
FlasherX, "через PsExec, например. Либо через разовый запуск из планировщика от системы."
С использованием PsExec тоже все не однозначно, пробовал сейчас запускать. По планировщику, пробовал. К сожалению до 10 все отлично работает, можно политиками залить задание на компы с однократным запуском данного скрипта, но с 10 MS это дело пофиксила. Было исправление (вроде 14 года), которое запрещает сохранять пароли в планировщике помимо прочего, соответственно задание на 10 прилетает политикой, но запуск не происходит опять же ввиду отсутствия прав у локального пользователя. Возможно использовать только пользователя Netlogon\System , но при этом задание так же не работает к сожалению. На той же 7 все работает.
Можете мне подсказать как добавить использование PsExec в моем случае?
Нашел такой вариант, но не могу заставить его работать со скриптом:

Bash
1
psexec.exe \\computer -u user -p pass c:\windows\system32\cscript.exe script.vbs
0
7690 / 2887 / 1110
Регистрация: 06.06.2017
Сообщений: 9,816
29.04.2020, 15:27
Цитата Сообщение от s_bor Посмотреть сообщение
но похоже на 7 и скрипт работал на Logon компьютера
Что похоже на 7? Что значит "на Logon компьютера"?

Цитата Сообщение от s_bor Посмотреть сообщение
Либо через разовый запуск из планировщика от системы.
но при этом задание так же не работает к сожалению
После запуска такого батника с повышением и верным указанием пути к vbs шрифт в системной папке не появляется?
Windows Batch file
1
2
3
>nul schtasks /create /ru "" /f /sc once /st 00:00:00 /tn InstallFont /tr "wscript.exe C:\Path\2\InstallFont.vbs"
>nul schtasks /run /tn InstallFont
>nul schtasks /delete /tn InstallFont
Цитата Сообщение от s_bor Посмотреть сообщение
которое запрещает сохранять пароли в планировщике помимо прочего
Так я и не предлагал PsExec пихать в планировщик. Смысл? Решения проблем с этой утилитой описаны здесь.
Цитата Сообщение от s_bor Посмотреть сообщение
Нашел такой вариант
По идее так:
Windows Batch file
1
psexec \\compname -s -i -d wscript.exe \\Share\script.vbs
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.04.2020, 15:27

Удаление программы средствами GPO
Доброго дня! Существует следующая проблема. Необходимо удалить qip со всех машин в определенной ou. Сделал батник: if exist...

Запуск скрипта через GPO
Добрый день! Я хотел бы запустить скрипт через GPO, скрипт устанавливает программу через групповые политики, а теперь у меня выходит ошибка...

Как запустить VBS- или JS-скрипт через Task Sheduler или GPO?
Уважаемые профессионалы! Крайне необходимы Ваши рекомендации, по части решения следующей, и казалось бы простой задачи..... Для...

Как средствами GPO запретить завершение некоторых процессов на всех компьютерах домена?
Как можно запретить завершение некоторых процессов во всех компьютерах домена. Чтобы нельзя было закрыть не с помощью Диспетчера задач, ни...

Как централизованно установить SP3_ru_XP на все ПК в сети средствами GPO WIN2003standart edition ?
Как централизованно установить SP3_ru_XP на все ПК в сети средствами GPO WIN2003standart edition ?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru