Ru-Board.club
← Вернуться в раздел «В помощь системному администратору»

» Автоматизация администрирования. Часть 2

Автор: DalayLamer
Дата сообщения: 24.09.2009 12:25
pazdak
внимательно читаем шапку, ну и Scriptomatic вам в помощь!
брать тут:
hххp://www.microsoft.com/downloads/details.aspx?FamilyID=09dfc342-648b-4119-b7eb-783b0f7d1178&displaylang=en
Автор: mischael
Дата сообщения: 24.09.2009 12:44
Друзья, выручайте.
Наш админ ленивый, как ***** и никогда не возмется за эту задачу (он не знает как её решить, а искать решение не будет), а мне, как инженеру, надоело сотне пользователей настраивать принтеры при каждом новом наборе персонала. Они еще все на разных компах должны иметь тот же набор принтеров.

Задача такая. Есть набор расшареных принтеров. Около пяти. Как сделать так, чтобы группе пользователей (группа безопасности в АД) при входе в систему подключались эти самые принтеры из известного списка?

Спасибо.
Автор: DalayLamer
Дата сообщения: 24.09.2009 13:16
пиши скрипт такого вида: [more]
On Error Resume Next
Set WshNetwork = CreateObject("WScript.Network")
Set Printers = WshNetwork.EnumPrinterConnections
NetPrn = "\\server\printer1"
WshNetwork.AddWindowsPrinterConnection (NetPrn)
'NetPrn1 = "\\server\printer2"
'WshNetwork.AddWindowsPrinterConnection (NetPrn1)
NetPrn2 = "\\server\printer3"
WshNetwork.AddWindowsPrinterConnection (NetPrn2)
' при необходимости можно установить принтер по умолчанию
'WshNetwork.SetDefaultPrinter (NetPrn)
Set Printers = Nothing
Set WshNetwork = Nothing
WScript.Quit
[/more]
положи его в \\domain\netlogon
тут на выбор: или через автозапуск на компах клиентов (не очень правильное решение), или поставить в остнастке ADUC тем пользователям кому надо в logon script, или через logon script в политике, применяемой к тем пользователям, кому надо подключать принтеры.
Автор: niichavo
Дата сообщения: 24.09.2009 15:33
mischael

Цитата:
Задача такая. Есть набор расшареных принтеров. Около пяти. Как сделать так, чтобы группе пользователей (группа безопасности в АД) при входе в систему подключались эти самые принтеры из известного списка?

решение для ленивых админов :

Используется административная оснастка "Управление печатью". Выбирается принтер, правая кнопка мышА "развернуть с помощью групповой политики". Далее выбирается нужная политика, выбирается для кого (компьютер или пользователь). Всё.

пс. если пользователи разбросаны по разным организационным единицам, можно создать специальную групповую политику с фильтром только для определённой группы пользователей (Security Filtering).
Автор: bredonosec
Дата сообщения: 24.09.2009 15:50
вопрос нарисовался.
у юзеров проблемы под своей админской учеткой решаю, они потом забывают свои логины и парят мне мозг, что их не пускает. Ищется решение, чтоб по дефолту на входе выставлялись их логины вне зависимости от того, кто последний входил в систему.

Мысли:
http://www.vkontakte.ru/fave.php
HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionWinlogon
DefaultUserName

В этой строке содержится имя последнего пользователя, входившего в систему. Оно будет отображаться в диалоговом окне только в том случае, если записи DontDisplayLastUserName нет или для нее задано значение 0.
- данное значение меняется когда? на входе? или на выходе? Можно ли где-то сохранить имя предыдущего юзера, чтоб его вытянуть оттуда батником и вставить в вышеуказанную ветку при моём выходе (напр, скрипт выключения, или как еще при выходе задание чтоб выполнял)
Автор: niichavo
Дата сообщения: 24.09.2009 16:29
bredonosec

Цитата:
Ищется решение, чтоб по дефолту на входе выставлялись их логины

Решение может существовать только в том случае, если имеется возможность однозначно определить соответствие между пользователем и его компьютером.

Например, заполнить поля managedBy или description объекта "компьютер" в AD именем учётки "владельца" компьютера (для поля managedBy нужно distinguishedName имя того, кто управляет компом). И уже на основании таких записей при выключении компа забивать нужную инфу в реестр.
Автор: Attid
Дата сообщения: 24.09.2009 17:40

Цитата:
- данное значение меняется когда? на входе? или на выходе?

при удачном входе. так что можно менять. но батником врятли получится, лучше программку накидать. все об этом думаю, и все лень =(
Автор: pazdak
Дата сообщения: 25.09.2009 08:21
DalayLamer

Цитата:
внимательно читаем шапку, ну и Scriptomatic вам в помощь!
брать тут:
hххp://www.microsoft.com/downloads/details.aspx?FamilyID=09dfc342-648b-4119-b7eb-783b0f7d1178&displaylang=en

Спасибо, за ответ.
Думал, что может кто встречал уже готовое решение, поиска по значениям атрибутов экземпляров WMI
Задача одноразового характера.
Автор: sirDaemon
Дата сообщения: 25.09.2009 13:42
Добрый день ! подскажите как в Вин2003 сервер при создании фильтра указать пространство имен (по умолчанию root\cimv2, а надо root\directory\ldap) в инструкции с сайта майкрософт говорится по некий namespace box а у меня такого нет, есть поле для запроса, есть для названия фильтра и описания и все, других нет, что делать ?
Автор: yazzi
Дата сообщения: 25.09.2009 13:53
Спасибо тем кто ответил буду пробовать. У меня еще один вопросик если я делаю бекап системного раздела то System State тоже туда входит?
Автор: DalayLamer
Дата сообщения: 25.09.2009 16:43
sirDaemon
а на прошлой странице ответа YNY было недостаточно?
специальный ман по созданию WMI-фильтров в картинках :
http://pic.ipicture.ru/uploads/090925/x4qDTSqqjC.jpg
Автор: sirDaemon
Дата сообщения: 28.09.2009 08:26
DalayLamer
GPMC - это то что приведено на рисунке, не ставится на х64 системы, а у меня х64, впрочем проблема решается тем что можно модернизировать (на свой страх и риск - но у меня лично все заработало) установочный файл GPMC.msi и установить, или же (но так я не проверял) прямо в поле запроса перед самим запросом вписать пространство имен, например так
root\directory\ldap;select * from ds_user where ds_profilepath is not null, есть довольно достоверные сведения что так тоже все работает. спасибо всем кто отвечал - именно ваши ответы навели на мысль как все это сделать.
Автор: YNY
Дата сообщения: 28.09.2009 10:08

Цитата:
yazzi
если я делаю бекап системного раздела
--смотря какой прогой ты это делаешь

Автор: yazzi
Дата сообщения: 28.09.2009 14:09
Стандартной виндовской ntbackup
Автор: YNY
Дата сообщения: 30.09.2009 10:51

Цитата:
Стандартной виндовской ntbackup

если полное, то да, иначе нет!
Автор: bredonosec
Дата сообщения: 30.09.2009 12:10
niichavo

Цитата:
Например, заполнить поля managedBy или description объекта "компьютер" в AD именем учётки "владельца" компьютера (для поля managedBy нужно distinguishedName имя того, кто управляет компом). И уже на основании таких записей при выключении компа забивать нужную инфу в реестр.

погоди, distinguishedName - это имя его учетки? Или которое?

И как его выцеплять оттуда? Это ж как-то локально наверн придется, нет?
Автор: sirDaemon
Дата сообщения: 30.09.2009 13:53
select * from ds_user where ds_profilepath is not null в wbemtest-е этот запрос выдает список юзеров с перемещаемым типом аккаунта, то есть то что от него и требуется, но wmi фильтр на этом запросе и с пространством имен root\directory\ldap - не работает, политика применяется ко всем пользователям, что может быть ? ведь все вроде бы правильно ?gppolicy result говорит что фильтр выдает true для всех, и для тех кому он должен был бы выдать false.
P.S. а может это потому что режим работы домена - вин 2000(смешанный) режим работы леса - вин 2000 ?
Автор: niichavo
Дата сообщения: 30.09.2009 15:34
bredonosec

Цитата:
погоди, distinguishedName - это имя его учетки? Или которое?

distinguishedName - это имя пользователя вида "CN=Пупкин Василий,OU=Подразделение юзверей с короткой памятью,OU=Компания Икс,DC=domain,DC=local".

Цитата:
И как его выцеплять оттуда? Это ж как-то локально наверн придется, нет?

Зачем? Всё делается с помощью "скрипта завершения работы компа". Единственное, что нужно предварительно сделать, это вручную через оснастку ADUC заполнить Вкладку "Управляется/Managed By" (или придумать скрипт) для заполнения этого поля. Вот готовый скрипт, который проверяет это поле учётки "компьютер" чтобы добыть логин пользователя "владельца компа", затем устанавливает в реестре "имя последнего пользователя, входившего в систему" в соответствии с полем "Управляется" данного компьютера:

[more=Скрипт]
Код: On Error Resume Next

strComputer = "."

Const ADS_SCOPE_SUBTREE = 2
Const HKEY_LOCAL_MACHINE = &H80000002

Set objNetwork = CreateObject("WScript.NetWork")
strCurrentComp = objNetwork.ComputerName

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection

objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE

objCommand.CommandText = _
"SELECT managedBy FROM 'LDAP://dc=yourdomain,dc=local' " & _
"WHERE objectCategory='computer' " & _
"AND cn='" & strCurrentComp & "'"
Set objRecordSet = objCommand.Execute

objRecordSet.MoveFirst

Do Until objRecordSet.EOF
strManagedBy = objRecordSet.Fields("managedBy").Value

Set ObjCompOwner = GetObject("LDAP://" & strManagedBy)
strOwnerName = ObjCompOwner.Get("sAMAccountName")     
    
    Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
    
    strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon"
    strValueName = "DefaultUserName"
    
    objRegistry.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strOwnerName    

objRecordSet.MoveNext
Loop
Автор: YNY
Дата сообщения: 01.10.2009 06:42

Цитата:
sirDaemon

"...true для всех, и для тех кому он должен был бы выдать false..."

может стоит не с Null сравнивать, а с пустой строкой?



Добавлено:
или прямо = true
Автор: sirDaemon
Дата сообщения: 01.10.2009 09:45
YNY
С пустой строкой запрос ничего не возвращает(в wbemtest) с = null возвращает список профайлов локальных, a is not null - перемещаемых, сам запрос - правильный, не работает видимо фильтр и я пока не могу понять почему
Автор: YNY
Дата сообщения: 01.10.2009 10:48

Цитата:
sirDaemon

возмона не канает конструкция типа is not т.к. в примерах есть <>

Добавлено:
есть еще вариант: запрос правельный и фильтр работает, но ведь порядок политик тоже влияет на конечный результат

Добавлено:
а как ты узнал, что политика применяется ваще для всех, че всем были назначены лимиты размера на профиль?
Автор: sirDaemon
Дата сообщения: 01.10.2009 12:04
YNY
конструкция is not - канает, запрос ведь выполняется в wbemtest, <> тоже в wbemtest и тоже не раб. в фильтре,
политика одна - она всем ограничивает размер профайла - именно всем, а надо только перемещаемые ограничить, они на сервере хранятся и занимают уж слишком много места, отслежена интересная особенность при создании фильтра (Select * from Win32_OperatingSystem where Caption = "Microsoft Windows XP Professional") под пользователем user1 (domain administrator) фильтр работает, система не ХР и политика не применяется, когда вхожу в домен ( на контроллер домена) другим пользователем фильтр выдает true хотя система вин2к3 сервер х64 R2
Автор: YNY
Дата сообщения: 02.10.2009 07:45

Цитата:
sirDaemon

<> тоже в wbemtest и тоже не раб.
у меня в ХР <> в wbemtest -- работает
Э, а после того как политика применилась на всех и не правильно, ты конечно же отменил ее и попробовал с нова?
Вообще, то нет никакой разницы кем ты входишь на КД, есть лишь разница кто ты, когда применяешь или создаешь политику! Если на W2k3 у тебя канает типа Win32_OperatingSystem = "Microsoft Windows XP Professional", то поматри че у тя в реестре, возмона ранее на компе был XP, а затем систему обновили до серверной или же есть вариант с лицензированием, но т.к. филтр написан корректно, то все ост вопросы в ветку по администрированию !!!

Автор: sirDaemon
Дата сообщения: 02.10.2009 09:24
YNY
беда в том что запросы - когда я ввожу их в вбемтесте - работают, все правильно возвращают, но когда я помещаю запрос в политику - начинается ерунда, политики создаю и применяю администратором домена - специально создал несколько таких юзеров для проверки
Автор: north_crow
Дата сообщения: 02.10.2009 10:04
както возникла необходимость создать скрипт который бы распространялся на компьютеры пользователей и при его запуске показывал бы кое какие данные о компьютере и пользователе.
VBS был был написан быстро и всем устраивал, но например некоторые пользователи немогли правильно из выводимого окна переписать свой емаил а окно выводимое скриптом не позволяет копировать в буфер выводимую информацию. пришлось это скрпт запихать в HTA чтобы вся выводимая информация могла выделиться и копироваться в буфер обмена.
HTA писал впервый раз - так что не судите строго
сам скрипт VBS вешается в startup комьютера. он при запуске создает на компьютере пользователя в профиле All users в папке Главное меню\Программы\Стандартные\ файл с именем !ИНФОРМАЦИЯ О СИСТЕМЕ!.hta
приемущество создания этого файла в all users в том что, пользователь не сможет его удалить
при запуске этого HTA выводится информация о имени компьютера, имени залогиневшегося пользователя, его емаил в эксчендже, и IP адреса

Код:
'==========================================================================
'
' Создание на компьютере пользователя скрипта для вывода инфомации
'
'==========================================================================
On Error Resume Next
Const ForWriting = 2
Set WshShell = WScript.CreateObject("WScript.Shell")
' определяем путь к профилю All Users
allusersprofile = WshShell.ExpandEnvironmentStrings("%ALLUSERSPROFILE%")
Set objFSO = CreateObject("Scripting.FileSystemObject")
' создаем файл !ИНФОРМАЦИЯ О СИСТЕМЕ!.vbs
Set objHTAFile = objFSO.OpenTextFile(allusersprofile & "\Главное меню\Программы\Стандартные\!ИНФОРМАЦИЯ О СИСТЕМЕ!.hta", ForWriting, True)
' записываем в файл строки
objHTAFile.Write "<html>" & VbCrLf
objHTAFile.Write "<head>" & VbCrLf
objHTAFile.Write "<meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1251"">" & VbCrLf
objHTAFile.Write "<title>Информация о компьютере</title>" & VbCrLf
objHTAFile.Write "<hta:application>" & VbCrLf
objHTAFile.Write "</head>" & VbCrLf
objHTAFile.Write "<body>" & VbCrLf
objHTAFile.Write "<script language=""vbscript"">" & VbCrLf
objHTAFile.Write "On Error Resume Next" & VbCrLf
objHTAFile.Write "Set objNetwork = createobject(""wscript.network"") " & VbCrLf
objHTAFile.Write "Set objSysInfo = CreateObject(""ADSystemInfo"")" & VbCrLf
objHTAFile.Write "strUserDN = objSysInfo.UserName" & VbCrLf
objHTAFile.Write "Set objUser = GetObject(""LDAP://"" & strUserDN)" & VbCrLf
objHTAFile.Write "document.write ""</b><font color = 'Blue'>"" & ""Имя компьютера: "" & ""<font color = 'Green'><b>"" & objNetwork.ComputerName & ""<br>""" & VbCrLf
objHTAFile.Write "document.write ""</b><font color = 'Blue'>"" & ""Имя пользователя: "" & ""<font color = 'Green'><b>"" & objNetwork.Username & ""<br>""" & VbCrLf
objHTAFile.Write "document.write ""</b><font color = 'Blue'>"" & ""E-mail: "" & ""<font color = 'Green'><b>"" & objUser.mail & ""<br>""" & VbCrLf
objHTAFile.Write "document.write ""</b><font color = 'Blue'>"" & ""IP: "" & ""<font color = 'Green'><b>""" & VbCrLf
objHTAFile.Write "strComputer = "".""" & VbCrLf
objHTAFile.Write "Set objWMIService = GetObject(""winmgmts:{impersonationLevel=impersonate}!\\"" & strComputer & ""\root\cimv2"")" & VbCrLf
objHTAFile.Write "Set IPConfigSet = objWMIService.ExecQuery (""Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE"")" & VbCrLf
objHTAFile.Write "IPTable = """"" & VbCrLf
objHTAFile.Write "n = 0" & VbCrLf
objHTAFile.Write "For Each IPConfig In IPConfigSet" & VbCrLf
objHTAFile.Write "If Not IsNull(IPConfig.IPAddress) Then " & VbCrLf
objHTAFile.Write "For i=LBound(IPConfig.IPAddress) To UBound(IPConfig.IPAddress)" & VbCrLf
objHTAFile.Write "document.write IPConfig.IPAddress(i) & ""<br>""" & VbCrLf
objHTAFile.Write "n = n + 1" & VbCrLf
objHTAFile.Write "Next" & VbCrLf
objHTAFile.Write "End If" & VbCrLf
objHTAFile.Write "Next" & VbCrLf
objHTAFile.Write "</script>" & VbCrLf
objHTAFile.Write "</body>" & VbCrLf
objHTAFile.Write "</html>" & VbCrLf
' закрываем файл
objHTAFile.Close
Автор: YNY
Дата сообщения: 02.10.2009 12:24

Цитата:
north_crow

и в чем вопрос?

Добавлено:

Цитата:
sirDaemon

хоть и офтоп но мож помогет

Добавлено:

Цитата:
north_crow

вообще-то ты мог бы результат запихать в обычную вебстраницу с которой мона все нормально скопировать ), хотя ваще не понятно зачем пользователю такая инфа
Автор: azkii
Дата сообщения: 02.10.2009 14:07
Здравствуйте.

Есть скрипт (echo logon %username% %computername% %date% %time% >>\\сервер\шара\%username%.txt) записывающий в файл время логона каждого пользователя пользователя и скрипт записывающий туда же время логофа (по аналогии).
Необходимо еще записывать время между логоном и логофом пользователя в отдельный файл, как это можно реализовать?
Автор: YURETS777
Дата сообщения: 05.10.2009 21:43
Можно ли с помощью vbs дать пермишены на каталоги на сервере пользователям домена.

допустим на D:\MAIL\user0 дать DOMAIN\user0 полный доступ а DOMAIN\user1 только чтение

Автор: DalayLamer
Дата сообщения: 05.10.2009 22:37
YURETS777
посмотри тут:
http://support.microsoft.com/default.aspx?scid=kb;en-us;825751
подробно, с примерами.
Автор: niichavo
Дата сообщения: 05.10.2009 22:51
YURETS777
Cacls, Xcacls, SetACL

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

Предыдущая тема: BackUp Win2003Serer


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.