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

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

Автор: YNY
Дата сообщения: 14.09.2007 05:29

Цитата:
strizhakovs


The following code example shows how to use the ADsOpenObject function to bind to a specific server using the ADS_SERVER_BIND flag:
ADsOpenObject("LDAP://server/domain.com/DC=domain, DC=com",..., ADS_SERVER_BIND)

If you cannot specify the fully qualified DNS domain name, you can use other forms for the HostName parameter. The formats for specifying a HostName parameter are (in order of preference):

Fully Qualified Domain Name (FQDN), such as dev.myCompany.com
Fully Qualified Machine Name (FQMN), such as myComputer.dev.myCompany.com
Flat domain name, such as dev
NETBIOS computer name, such as myComputer
IP address, such as 127.0.0.1
Note If you specify a NETBIOS computer name or an IP address, you cannot perform mutual authentication.


Добавлено:
If Kerberos authentication is required for the successful completion of a specific directory request, the binding string must use either a serverless ADsPath, such as

LDAP://CN=Jeff Smith,CN=users,DC=fabrikam,DC=com,

or it must use an ADsPath with a fully-qualified DNS server name, such as

LDAP://server01.fabrikam.com/CN=Jeff Smith,CN=users,DC=fabrikam,DC=com.

Binding to the server using a flat NETBIOS name or a short DNS name, for example, using the name server01 instead of server01.fabrikam.com, is not guaranteed to yield Kerberos authentication.



Добавлено:
http://support.microsoft.com/kb/q258507/


Добавлено:
ПРИМЕР использования OpenDSObject() из MSDN {вызов OpenDSObject() "аналогичен" GetObject(), т.е. в GetObject() должны передаваться параметры так же как в примере ниже, а не как у тебя}:

Dim dso As IADsOpenDSObject
Dim obj1, obj2 As IADs
Dim szUsername As String
Dim szPassword As String

Set dso = GetObject("LDAP:")

' Insert code securely.

' Supply full credentials to initiate a server connection.

Set obj1 = dso.OpenDSObject( _
"LDAP://server1/CN=Dept1,DC=Fabrikam,DC=com", _
szUsername, _
szPassword, _
ADS_SECURE_AUTHENTICATION + ADS_SERVER_BIND)


Добавлено:
Возмона это уже лишнее но все же

LDAP://<servername>/rootDSE

ПОСМОТРИ что у тя за rootDSE, возмона там и есть твой зацикленный КД, и вообще не понятно зачем унифицировать скрипт (определять программно домен, а не прописывать его руками если от этого одни проблемы.

The <servername> is the DNS name of a server. The <servername> is optional, as shown in the following format.

LDAP://rootDSE

In this case, a default domain controller from the domain that the security context of the calling thread is in will be used. If a domain controller cannot be accessed within the site, the first domain controller that can be found will be used.

Автор: awsswaawsswa
Дата сообщения: 14.09.2007 06:45
Всё разобрался - раздать права на каталог через XCACLS.vbs

имя домена только с большими буквами "DOMAIN"

С:\>cscript xcacls.vbs "\\Server\Public\user1\" /I COPY /g "DOMAIN\user1 ":F /Q /L "\\Server\logfilez$\create_folders.txt"

другой косяк

Error -2147217405: occurred in connecting to server. (Msg#3203)
Error description: Отказано в доступе

в логах ругань - хотя галочки на правах стоят не правильно - писать в каталог даёт
Автор: YNY
Дата сообщения: 14.09.2007 08:03

Цитата:
XCACLS.vbs

а че твой домен реально имеет имя типа domain.local???
Автор: inew
Дата сообщения: 15.09.2007 07:22
Наверно кто-нибудь решал задачу создания большого количества однотипных учётных записей пользователей в домене,
например, нужно создать пользователей от gr_96_1 до gr_96_118.
ну и желательно уже с паролями (пароль – случайное число длиной 4) , пароли можно вывести в отдельный текстовый файл.
Пользователей поместить в OU Students.
Помогите со скриптом.
Автор: Shuva
Дата сообщения: 17.09.2007 11:04
Вопрос. Как в открытый для записи файл (методом ForAppending = 8) записать новую строку в определенное место (допустим 3-ей строкой) Помогите плиз. Спасибо.
Автор: pusiyjan
Дата сообщения: 17.09.2007 12:06
inew

Цитата:
Наверно кто-нибудь решал задачу создания большого количества однотипных учётных записей пользователей в домене,
например, нужно создать пользователей от gr_96_1 до gr_96_118.
ну и желательно уже с паролями (пароль – случайное число длиной 4) , пароли можно вывести в отдельный текстовый файл.
Пользователей поместить в OU Students.
Помогите со скриптом.

присоединяюсь к вопросу!
Автор: AlexStupenev
Дата сообщения: 17.09.2007 14:06
inew и pusiyjan

Взято из Script Center
Demonstration script that creates 1,000 user accounts (named UserNo1, UserNo2, UserNo3, etc.) in the Users container in Active Directory. The script is useful for test scenarios that require multiple user accounts

Set objRootDSE = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://cn=Users," & _
objRootDSE.Get("defaultNamingContext"))
For i = 1 To 1000
Set objLeaf = objContainer.Create("User", "cn=UserNo" & i)
objLeaf.Put "sAMAccountName", "UserNo" & i
objLeaf.SetInfo
Next
WScript.Echo "1000 Users created."
    
Автор: klimusu
Дата сообщения: 17.09.2007 17:29
Есть ли возможнось создавать файлы *.rdp средствами, так сказать, батничков?
Необходимы: адрес, пароль, домен, размер уд. стола, цвет. политра...
Автор: jONES1979
Дата сообщения: 17.09.2007 23:10
inew и pusiyjan пример массового создания юзеров в ad,
в качестве исходных данных - текстовый файл (можно заменить на любой массив строк)
комментарии:
1. пароль пользователю устанавливается ПОСЛЕ того как создана учетка, то есть после вызова objLeaf.SetInfo . Иначе у меня генерило ошибку.
2. тут же можно посмотреть как устанавливаются флаги на свойстве "UserAccountControl" В примере - устанавливается "неустаревающий" пароль
3. так же: Созданная учетка активируется (т.к. по умолчанию она заблокирована, locked) и добавляется в указанную группу

[more]

Код:
Option Explicit
' based on http://www.microsoft.com/technet/scriptcenter/guide/sas_ads_scsw.mspx

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000

Dim objRootDSE, objDomain, objContainer, objOU, objGroup, objLeaf
Dim i, j, xC, objArgs, objFSO, objFile, sParamFN
Dim strName, Flag, newFlag
Dim AP, sNames


Sub CreateCourseOU(iCourse) ' Создать новый OU
Set objDomain = GetObject("LDAP://ou=Students,dc=edu,dc=nt,dc=local")
Set objOU = objDomain.Create("organizationalUnit", "ou=Course"+CStr(iCourse))
objOU.SetInfo
End Sub


' процедура создания юзера
' передаваемый параметр - строка с разделителями
' 0 1 2 3 4 5 6 7
' Abashev-DG,11287,Abashev Dmitrij Gennadevich,Абашев Дмитрий Геннадьевич,20040235,224-ЭУ,2,Экономики и менеджмента
'

Sub CreatAD_User(sParam)

AP = Split(sParam, ",", -1, 1)

' WScript.Echo AP(2)

sNames = Split(AP(3), " ", -1, 1)

Set objContainer = GetObject("LDAP://ou=Course"+CStr(AP(6))+",ou=Students,dc=edu,dc=nt,dc=local")

Set objLeaf = objContainer.Create("User", "cn=" & AP(2) )
objLeaf.Put "sAMAccountName", AP(0)
objLeaf.Put "description", "Студент 2006 " & AP(5)

objLeaf.FullName = AP(3)
objLeaf.FirstName = sNames(0)
objLeaf.LastName = sNames(1)&" "& sNames(2)
objLeaf.userPrincipalName = AP(0)& "@" & "edu.nt.local"

objLeaf.SetInfo ' Записываем

objLeaf.SetPassword AP(4) ' ПАРОЛЬ. После того как юзер создан

objLeaf.Put "Title", AP(1) ' Теперь тут будет храниться код
objLeaf.Put "Division", AP(5)
objLeaf.Put "Department", "Факультет "& AP(7)


Flag = objLeaf.Get("UserAccountControl")
newFlag = Flag or ADS_UF_DONT_EXPIRE_PASSWD
objLeaf.Put "userAccountControl", newFlag

objLeaf.AccountDisabled = False

objLeaf.SetInfo

Set objGroup = GetObject("LDAP://cn=Students,ou=Students,dc=edu,dc=nt,dc=local")
objGroup.Add(objLeaf.ADsPath)
End Sub


' ========================================================
' ================== Начало скрипта ===================

Set objArgs = WScript.Arguments
If objArgs.Count = 1 Then sParamFN = objArgs(0) Else sParamFN = ".ADSI 2006 10 12.txt"

For i=1 To 6
CreateCourseOU(i)
Next

WScript.Echo "Загружается файл"
Set objFSO = CreateObject("Scripting.FileSystemObject")
If (objFSO.FileExists(sParamFN)) Then

Set objFile = objFSO.OpenTextFile (sParamFN, ForReading)
i = 0
Do Until objFile.AtEndOfStream
i = i + 1
strName = objFile.ReadLine

' WScript.Echo strName
CreatAD_User(strName)

Loop

objFile.Close
End If

WScript.Echo "Well done. "+CStr(i)+" items processed"
Автор: pusiyjan
Дата сообщения: 18.09.2007 15:52
jONES1979
спасибо за пример, теперь вопрос - если использовать русские контейнеры для пользователей т.е. например подраздел "бухгалтерия" в корне АД тогда у меня не получается скриптом вкинуть туда пользователя - выдает ошибку может это надо делать передавая данный контейнер пользователя через переменную?!
Автор: awsswaawsswa
Дата сообщения: 19.09.2007 06:15
klimusu

вот примерно то, что ты хотел
Generating RDP Files using VBSCRIPT
скрипт не проверял - возможны ошибки

On Error Resume Next
StrOU = InputBox("Please Enter in the name of the OU that you wish to query, this needs to be in the format OU=<Name>")

Set objRootDSE = GetObject("LDAP://rootDSE")
strADsPath = "LDAP://" & strOU & "," & objRootDSE.Get("defaultNamingContext")
Set objDomain = GetObject(strADsPath)
On Error Resume Next
Dim objConn, objRecordSet
Set wshNetwork = WScript.CreateObject("WScript.Network")
strDomainName = wshNetwork.userDomain

Set Filesys = CreateObject ("Scripting.FileSystemObject")
Set objCommand = CreateObject("ADODB.Command")
Set objConn = CreateObject("ADODB.Connection")
objConn.Open "Provider=ADsDSOObject;"
Set objCommand.ActiveConnection = objConn
objCommand.CommandText = "SELECT Name FROM "+"'"+strADsPath+"'"+" WHERE objectClass = 'COMPUTER'"
'MsgBox objCommand.CommandText
objCommand.Properties("searchscope") = 2
objCommand.Properties("Page Size") = 1000
Set objRecordSet = objCommand.Execute
While Not objRecordSet.EOF
strComputer = objRecordSet.Fields("Name")' ObjFile.Readline
Set objFileOut = Filesys.CreateTextFile(strComputer & ".rdp", TRUE)
objFileOut.Write "screen mode id:i:2" & vbcrlf
objFileOut.Write "desktopwidth:i:1280" & vbcrlf
objFileOut.Write "desktopheight:i:1024" & vbcrlf
objFileOut.Write "session bpp:i:32" & vbcrlf
objFileOut.Write "winposstr:s:0,1,9,302,809,923" & vbcrlf
objFileOut.Write "full address:s:" & strComputer & vbcrlf
objFileOut.Write "compression:i:1" & vbcrlf
objFileOut.Write "keyboardhook:i:2" & vbcrlf
objFileOut.Write "audiomode:i:2" & vbcrlf
objFileOut.Write "redirectprinters:i:0" & vbcrlf
objFileOut.Write "redirectcomports:i:0" & vbcrlf
objFileOut.Write "redirectsmartcards:i:1" & vbcrlf
objFileOut.Write "redirectclipboard:i:1" & vbcrlf
objFileOut.Write "redirectposdevices:i:0" & vbcrlf
objFileOut.Write "drivestoredirect:s:" & vbcrlf
objFileOut.Write "displayconnectionbar:i:1" & vbcrlf
objFileOut.Write "autoreconnection enabled:i:1" & vbcrlf
objFileOut.Write "prompt for credentials:i:0" & vbcrlf
objFileOut.Write "negotiate security layer:i:1" & vbcrlf
objFileOut.Write "remoteapplicationmode:i:0" & vbcrlf
objFileOut.Write "domain:s:" & strDomainName & vbcrlf
objFileOut.Write "alternate shell:s:" & vbcrlf
objFileOut.Write "shell working directory:s:" & vbcrlf
objFileOut.Write "disable wallpaper:i:0" & vbcrlf
objFileOut.Write "disable full window drag:i:0" & vbcrlf
objFileOut.Write "allow desktop composition:i:1" & vbcrlf
objFileOut.Write "allow font smoothing:i:1" & vbcrlf
objFileOut.Write "disable menu anims:i:0" & vbcrlf
objFileOut.Write "disable themes:i:0" & vbcrlf
objFileOut.Write "disable cursor setting:i:0" & vbcrlf
objFileOut.Write "bitmapcachepersistenable:i:1" & vbcrlf
objFileOut.Write "gatewayhostname:s:" & vbcrlf
objFileOut.Write "gatewayusagemethod:i:0" & vbcrlf
objFileOut.Write "gatewaycredentialssource:i:4" & vbcrlf
objFileOut.Write "gatewayprofileusagemethod:i:0" & vbcrlf
objFileOut.Write "EnableCredSSPSupport:i:0" & vbcrlf
objFileOut.close
Set objFileOut = nothing
objRecordSet.MoveNext
Wend
Wscript.echo "The Script has Completed - RDP File created"
Set wshNetwork = Nothing
Автор: Der Meister
Дата сообщения: 20.09.2007 00:10
1216 скриптов, извлеченных из Community-Submitted Scripts Center
Автор: SergIRBIS
Дата сообщения: 20.09.2007 08:57
Кто-нить может подсказать от чего это может быть и как избавиться от бага :
У меня есть логон скрипт который добовляет кометы рядом с имененм компа в сетевом окружении.

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

Но в действительности после включения компьютера прав на перезапуск службы нет..... я добавил политику с принудительным обновлением политики безопасности копьютера через 5 минут и о чудо если зайти под пользователем через 5 минут то есть права на перезапуск службы.....

У кого какие соображения как это исправить веть не заставишь всех ждать 5 минут да и обновление политики так часто это не есть гуд...
Автор: jONES1979
Дата сообщения: 20.09.2007 17:51
pusiyjan про русские названия - ничего не скажу... Опиши ошибку, что конкретно пишет?

Добавлено:
Der Meister Сорри, файлик скачивается до 160-220 килобайт и обрывается с ошибкой. Пробовал раз 5-8. Можешь перевыложить на рапиду? Заранее пасиба!
Автор: YNY
Дата сообщения: 21.09.2007 09:47

Цитата:
SergIRBIS

как вариант создай задачу на всех компах, которая будет запускаться от имени админа или того, кому мона перезапускать службу, закрепи за логоном на комп или через опр вр,
а вообще-то странно что дав прав ты их не видешь возмона надо просто перелогинеться после 15-30 минут и все заработает и так

Добавлено:

Цитата:
Shuva

ForAppending 8 --- Open a file and write to the end of the file (пишет только в конец, а не туда куда хочешь).
Автор: abasov
Дата сообщения: 21.09.2007 12:07
Установка портмаппинга на удаленную машину (аля ~Прокси)

Из start.vbs запускается RemoteRun.vbs (Как объеденить код????)
В RemoteRun.vbs указать свой прокси. Runas.exe - Для консперации, не доменный же светить в логах...

start.vbs :

Код:
Dim WshShell, ObjFSO, Systemroot
Set WshShell = CreateObject("WScript.Shell")
set objFSO = CreateObject("Scripting.FileSystemObject")


strComputer = "XXXXX"
appl="cmd /C wscript.exe RemoteRun.vbs"
pass="XXXXXX"
users="XXXXXX"
systemroot = WshShell.ExpandEnvironmentStrings("%Systemroot%")

Const OverwriteExisting = TRUE


objFSO.CopyFile "tcppm.exe" , "\\" & strComputer & "\admin$\tcppm.exe" , OverwriteExisting
objFSO.CopyFile "RemoteRun.vbs" , systemroot & "\system32\RemoteRun.vbs" , OverwriteExisting
Set objFSO = NOTHING

wscript.sleep(1000)


Set objWMIService = GetObject _
("winmgmts:\\.\root\cimv2:Win32_Process")
errReturn = objWMIService.Create _
("cmd.exe /c ""title RUNAS_AUTO & runas.exe /netonly /user:" & users & " """ & appl & """""", Null, Null, intProcessID)
wscript.Sleep(1000)
wshShell.AppActivate "RUNAS_AUTO"
wshShell.SendKeys pass & "{ENTER}"
Автор: Der Meister
Дата сообщения: 21.09.2007 13:01
jONES1979
На рапиду не могу - проблемы
Отсюда качается без проблем
CommunitySubmittedScripts

Обновлять буду 1 раз в неделю (Community-Submitted Scripts Center обновляют каждый понедельник)
Автор: GoodBoy
Дата сообщения: 22.09.2007 19:29
Подскажите, в каком редакторе лучше писать на VBScript, чтобы выскакивали подсказки и можно было произвести отладку программы? Сам пока использую Far.
Автор: mozers
Дата сообщения: 22.09.2007 20:15
GoodBoy
Специализированный Adersoft VB Script Editor
или универсальный SciTE. Есть, конечно и другие...
Автор: north_crow
Дата сообщения: 22.09.2007 20:44
ребята!
как с помощью vbs можно посмотреть пермишены на ветку реестра?
Автор: YNY
Дата сообщения: 23.09.2007 13:14

Цитата:
GoodBoy

в ворде есть редактор HTML и там мона писать: обрезаная визуал студия )
Автор: GoodBoy
Дата сообщения: 23.09.2007 18:57
mozers

Цитата:
Специализированный Adersoft VB Script Editor
или универсальный SciTE . Есть, конечно и другие...

Из них больше понравился VB Script Editor, т.к. в нем есть пошаговая отладка скрипта. Перехожу на него.

YNY

Цитата:
в ворде есть редактор HTML и там мона писать: обрезаная визуал студия )

Наверно ты про Microsoft Script Editor 10.0. В нем тоже есть пошаговая отладка, но нет подсказок по возможным методам и свойствам объекта.

Народ, а может есть редактор, как среда Визуал Бэйсик, чтобы и пробелы ставил красиво, и регистр в словах редактировал? Три вышеозвученных редактора этого не делают.
Автор: YNY
Дата сообщения: 24.09.2007 12:19

Цитата:
нет подсказок по возможным методам и свойствам объекта.

зато если выделить тег и нажать F1, то ты получишь справку и тем более (если просто нажмешь F1 без выделения тега или функции) там все просто написано и про св-ва и про методы, а если к примеру ты после _типа_ "document" поставишь "." то как в ВБейсике увидешь методы и прочее а ранее тут был выложен не плохой наборец файлов с пом кот мона посм все св-ва и т.п. про люб объект
Автор: awsswaawsswa
Дата сообщения: 24.09.2007 14:24
' Подключение принтеров в зависимости от параметра Location в AD
' например Бухгалтерия и Приёмка

option explicit
Dim Path, strComputerDN, objSysInfo, objComputer, Network
Dim count
Dim objWMIService,colInstalledPrinters,objPrinter
Dim PrinterName
Dim temp_bool
Dim strComputer


sub IsPrinterConnect( PrinterName,temp_bool )
on error resume next
set count=0
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
If (objPrinter.Name=PrinterName ) then count=count+1
' Wscript.Echo "Name: " & objPrinter.Name
Next
if (count >0) then temp_bool = true else temp_bool =false
end sub

sub ConnectPrinter ( PrinterName )
on error resume next
Network.AddWindowsPrinterConnection PrinterName
end sub

sub ConnectDefaultPrinter ( PrinterName )
on error resume next
Network.AddWindowsPrinterConnection PrinterName
Network.SetDefaultPrinter PrinterName
end sub

on error resume next


Set Network = CreateObject("Wscript.Network")
Path = Network.ComputerName
Set objSysInfo = CreateObject("ADSystemInfo")
strComputerDN = objSysInfo.ComputerName
Set objComputer = GetObject("LDAP://" & strComputerDN)
'Назначаем необходимый для установки сетевой принтер
'в зависимости от значения поля Location

Select Case objComputer.Get("Location")

Case "Бухгалтерия"
call IsPrinterConnect( "\\Server-1\HP1022", temp_bool)
if (temp_bool=false)then call ConnectDefaultPrinter("\\Server-1\HP1022")

' а сюда подключаем два принтера - первый по умолчанию
Case "Приёмка"
call IsPrinterConnect( "\\Server-2\HP1320", temp_bool)
if (temp_bool=false)then call ConnectPrinter( "\\Server-2\HP1320")
call IsPrinterConnect( "\\Server-3\HPLJ2300", temp_bool)
if (temp_bool=false)then call ConnectDefaultPrinter( "\\Server-3\HPLJ2300")

Case Else
WScript.Quit
End Select
Автор: jONES1979
Дата сообщения: 25.09.2007 16:53
GoodBoy PrimalScript - дюже хороший редактор
http_://enfull.com/english/Programming/%7B83FD34D0-6B29-4E63-8128-DCA25A304DDB%7D.htm

Добавлено:
awsswaawsswa пора осваивать теги, например [more] свой длинный код [/more]
Автор: rosalin
Дата сообщения: 25.09.2007 18:03
ребята есть какой нибудь скрипт для отключеня компов по сети

но только при простое допустим 2 часа

Добавлено:
просто некотрые юзеры леняться выключать свои компьютеры
Автор: yazzi
Дата сообщения: 25.09.2007 19:18

Цитата:
скрипт должен лежать на серваке в шареной папке, а запускаться на логон юзера и...
а запускать его на серваке чтоб узнать какой из админов рулит -- бред

скрипт должен смотреть какие какой юзер сидит на компьютере, на машине где стоит зр он показывает активного пользователя а на windows 2000 показывает только пользователь с админскими правами вот


Добавлено:
GoodBoy
Мне VBSEdit нравиться
Автор: VirwolfLEOne
Дата сообщения: 25.09.2007 22:10
Самый замечательный скрипт shutdown.exe. Кроме серверов, в шедулет таск, работает безотказно И воще: все гениальное - ПРОСТО
Автор: rosalin
Дата сообщения: 26.09.2007 07:31
VirwolfLEOne
да но мне это надо сделать допустим в интервале 18.00 - 9.00
Автор: Etalon
Дата сообщения: 26.09.2007 08:13
yazzi
Вот такой сценарий хорошо узнаёт какой пользователь зарегистрирован на данном компьюте

Код:
$ComputerName = "."
$ComputerSystem = Get-WMIobject -class "Win32_ComputerSystem" -namespace "root\CIMV2" -computername $ComputerName
$ComputerSystem.UserName

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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