|
Компьютерный форум OSzone.net » Серверные продукты Microsoft » Microsoft Windows NT/2000/2003 » Скрипт для изменения свойств компьютера в AD |
|
Скрипт для изменения свойств компьютера в AD
|
![]() Ветеран Сообщения: 1190 |
Добрый.
Я хочу с помощью скрипта изменять поле Location у каждого компа в АД при его загрузке. Нашел на мелкасофте пример скрипта Цитата:
Вопрос: можно ли в этот скрипт вписать некое регулярное выражение, чтоб при загрузке компа вместо comp1 было вписано имя текущей машины? Если да, то пример кода пожалуста набросайте. |
||
------- Отправлено: 09:50, 16-11-2007 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать ну если контейнер/домен вычислять не надо то можно просто восстановить значение переменной окружения:
|
Отправлено: 11:23, 16-11-2007 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
![]() Ветеран Сообщения: 1190
|
Профиль | Отправить PM | Цитировать amel27, спасибо, попробую твой скрипт, но я решил проблему по другому.
Итак, день мучений привел меня к такому вот результату Set WshNetwork = CreateObject("WScript.Network") On Error Resume Next Path = WSHNetwork.ComputerName Set objSysInfo = CreateObject("ADSystemInfo") strComputerDN = objSysInfo.ComputerName Set objComputer = GetObject("LDAP://" & strComputerDN) objComputer.Put "Location" , "Building 37, Floor 2, Room 2133" objComputer.SetInfo Цитата amel27:
(пробовал всевозможными вариантами, в том числе и с "" и без и по всякому). Но все равно спасибо. |
|
------- Отправлено: 11:40, 16-11-2007 | #3 |
![]() Ветеран Сообщения: 1190
|
Профиль | Отправить PM | Цитировать В общем я разочаровался немного в своем скрипте, ибо у него много ограничений и минусов....
Решил обозначить задачу с другой стороны: Как мне пробежать по OU и для каждого компа изменить свойство Location? Я хочу запустить скрипт один раз(либо ооочень редко раз), чтобы он совершил нужные мне действия. Собственно сама проблема заключается в том как мне получить список объектов компьютеров из OU. |
------- Отправлено: 12:17, 16-11-2007 | #4 |
Ветеран Сообщения: 788
|
Профиль | Отправить PM | Цитировать |
|
------- Последний раз редактировалось HLT, 16-11-2007 в 13:12. Причина: ошибся с URLами немного. fixed =) Отправлено: 13:01, 16-11-2007 | #5 |
![]() Ветеран Сообщения: 1190
|
Профиль | Отправить PM | Цитировать HLT, спасибо, это то что надо. Работает на ура!
![]() |
------- Отправлено: 15:37, 16-11-2007 | #6 |
![]() Ветеран Сообщения: 1190
|
Профиль | Отправить PM | Цитировать Решив проблему изменения свойств компьютера в АД, я решил и другую очень мне необходимую задачу - автоматический переезд принтеров на новый принт-сервер. Хочу поделиться накопленным опытом, мож кому пригодится.
Итак, список задач, которые я решал: 1. Заполнение свойства Location компьютера в АД 2. Удаление принтеров, подключенных со старого принт-сервера 3. Автоматическое подключение ближайшего принтера с нового принт-сервера при залогинивании пользователя 4. Все это в максимально автоматическом режиме, с помощью скриптов и групповых политик На сайте http://networkdoc.ru существует вот эта статья, примерно описывающая мою задачу. Но в ней есть некоторые моменты, которые у меня не заработали, поэтому пришлось колхозить самому. В итоге я избавился от старого принт-сервера, а новые принтеры сами появляются у пользователя при залогинивании и дефолтным выставляется ближайший. Че еще добавить не знаю, поэтому просто опишу очередность работы скриптов. Во-первых нам для географического отделения компьютеров потребуется заполнить поле Location, скрипт, которые это делает ниже Он был описан выше, за что автору очередной респект! Фактически мы пробегаем по всему организационному подразделению и у всех компов меняем поле Location. скрипт запускается один раз с рабочего места админа, я его загнал в батник. Дальше, я завел на новом принт-сервере принтеры, заполнил и их поле Location(оно потребуется для определения одинаковых принтеров) Во-вторых, чтобы у пользователя удалились принтеры со старого принт-сервера, я составил следующий скрипт Set objFS = CreateObject("Scripting.FileSystemObject") Set objShell = CreateObject("WScript.Shell") Set objNetwork = WScript.CreateObject("WScript.Network") 'Выполняем выбор всех установленных принтеров strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") Set colInstalledPrinters = objWMIService.ExecQuery _ ("Select * from Win32_Printer") 'Строка регулярного выражения для удаления принтера strRegExp = "\\OLD_PRINT_SERVER" 'В цикле пробегаем по каждому найденому принтеру For Each objPrinter in colInstalledPrinters strStringToMatch = objPrinter.Name Set objRE = New RegExp objRE.Global = False objRE.IgnoreCase = True objRE.Pattern = strRegExp 'Если строка рег выражения входит в название принтера, то его удаляем If objRE.Test(strStringToMatch)=True Then objNetwork.RemovePrinterConnection strStringToMatch Else End If Next В-третьих, из замечательной вышеуказанной статьи я взял скрипт, который автоматически ставит и проверяет установку ближайшего принтера. Еще раз приведу его здесь. 'Определяем контекст комьютера Option Explicit Dim WSHNetwork, Computer, Path, strComputerDN, objSysInfo, objComputer, sPrintPath, PrintLocation Dim objWMIService, colInstalledPrinters, objPrinter Set WSHNetwork = CreateObject("WScript.Network") On Error Resume Next Path = WSHNetwork.ComputerName Set objSysInfo = CreateObject("ADSystemInfo") strComputerDN = objSysInfo.ComputerName Set objComputer = GetObject("LDAP://" & strComputerDN) 'Назначаем необходимый для установки сетевой принтер 'в зависимости от значения поля Location Select Case objComputer.Get("Location") Case "Отдел 1" sPrintPath = "\\server1\HPLaserJ" PrintLocation = "Принтер в Отделе 1" Case "Отдел 2" sPrintPath = "\\server2\HP1100" PrintLocation = "Принтер HP1100 Отдел 2" Case Else MsgBox("Для установки принтера обратитесь к системному администратору.") :WScript.Quit End Select 'Выполняем проверку установленных принтеров Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2") Set colInstalledPrinters = objWMIService.ExecQuery _ ("Select * from Win32_Printer") For Each objPrinter in colInstalledPrinters If PrintLocation = objPrinter.Location Then WScript.Quit End If Next 'Подключаем принтер и делаем его принтером по умолчанию WSHNetwork.AddWindowsPrinterConnection sPrintPath WSHNetwork.SetDefaultPrinter sPrintPath В-четвертых, осталось самое простое - все это дело собрать вместе и автоматизировать. Для этого я написал батник простого содержания Теперь батник я помещаю в групповую политику на пользователя (в статье даже с картинками это описано), а рядом с батником помещаю 2 vbs файла. Дальше тесты. У меня все заработало без проблем. ![]() |
------- Отправлено: 12:58, 26-11-2007 | #7 |
Новый участник Сообщения: 1
|
Профиль | Сайт | Отправить PM | Цитировать Цитата madmax24:
Как можно массово выполнить операцию по изменению данных в AD? |
|
Отправлено: 16:38, 14-10-2013 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Какой файл отвечает за окошко Свойств компьютера | ProgrammerPC | Автоматическая установка Windows 2000/XP/2003 | 2 | 24-10-2009 22:20 | |
Доступ - [решено] Запрет для изменения имя компьютера | hhh8484 | Microsoft Windows 2000/XP | 10 | 26-04-2009 14:44 | |
Интерфейс - Глюки с панелью управления и контекстным меню свойств компьютера | Kreng87 | Microsoft Windows Vista | 1 | 11-11-2008 09:32 | |
VBS/WHS/JS - Скрипт для настройки свойств обозревателя | KillHunter | Программирование и базы данных | 1 | 14-07-2008 08:40 | |
JS методы для изменения свойств CSS | karlison | Вебмастеру | 2 | 20-08-2003 12:11 |
|