Итак, нам нужно создать объект групповой политики, который позволяет нашим пользователям использовать только определенные программы.Заполнение GPO из текстового файла с помощью VBScript или другого
GPO Адрес:
- Конфигурация пользователя
- Политика
- Административные шаблоны [...]
- Система
- Выполнить только указанные приложения для Windows
- Система
- Административные шаблоны [...]
- Политика
Затем установка GPO к включен и нажав на кнопку Список разрешенных приложений -> Показать ...
Я создал таблицу Excel, содержащий имена всех программ и связанных с ними исполняемых файлов с другой соответствующей информацией, чтобы мы могли легко организовывать, добавлять, удалять и т. д. исполняемые файлы, которые мы должны разрешать нашим пользователям.
Затем эта таблица сбрасывает все исполняемые файлы в текстовый файл.
Вот пример того, что текстовый файл выглядит следующим образом:
Acrobat.exe
chrome.exe
calc.exe
.
.
.
Есть много записей, и они, вероятно, могут быть изменены. То, что я пытаюсь сделать, это создать скрипт, который будет принимать этот текстовый файл и автоматически заполнить объект групповой политики. Мне все равно, нужно ли открывать окно, а затем запускать его, его не нужно запускать из планировщика задач (хотя это было бы удивительно, если бы у кого-то был этот код готов). Нам просто нужно заполнить это смехотворное количество исполняемых имен файлов в полях.
Вот код, который я нашел (VBScript), который при запуске должен заполнять поля автоматически, однако я не могу заставить его работать в редакторе управления групповыми политиками (вместо этого он запускается в окне проводника Windows и заканчивается поиском некоторых файлов)
' Open the text file, located in the same path as the script
Set objFSO = CreateObject("Scripting.FileSystemObject")
strPath = Mid(Wscript.ScriptFullName, 1, InStrRev(Wscript.ScriptFullName, wscript.ScriptName) -1)
Set objFile = objFSO.OpenTextFile(strPath & "appList.txt")
' Activate the "Show Contents" window with the "List of allowed applications".
' Note the window must be opened already and we should have selected where in
' the list we want to enter the data before running the script
set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Sleep 1000
WshShell.AppActivate "Show Contents"
' Read the file line by line
Do While objFile.AtEndOfStream <> True
' Each line contains one EXE name
exeName = objFile.ReadLine
' Escape forbidden chars { } [ ] () +^% ~
exeName = Replace(exeName, "[", "{[}")
exeName = Replace(exeName, "]", "{]}")
exeName = Replace(exeName, "(", "{(}")
exeName = Replace(exeName, ")", "{)}")
exeName = Replace(exeName, "+", "{+}")
exeName = Replace(exeName, "^", "{^}")
exeName = Replace(exeName, "%", "{%}")
exeName = Replace(exeName, "~", "{~}")
' Send the EXE name to the window
WScript.Sleep 100
WshShell.SendKeys exeName
' Move to the next one
WshShell.SendKeys "{TAB}"
Loop
objFile.Close
[Соответствует] (http://serverfault.com/q/434365). –