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

» Автоматизация администрирования

Автор: AlexSSS
Дата сообщения: 17.11.2005 15:16
>вой пример также выдает постоянно одно и тоже - Found.
естественно, такой OU есть в AD
поставь
Set objou = GetObject("LDAP://ou=FigVam,dc=dom1,dc=dom2")
и он скажет, что такого OU нет
Автор: alecsandrb
Дата сообщения: 17.11.2005 15:19
Похоже я решил свою проблему как хотел при помощи следующей конструкции:
CurStrFullOU = "OU=Sample1"
DomainStr = "DC=dom1,DC=dom2"
DotStr = "'"

On Error Resume Next
Set objConnection = CreateObject("ADODB.Connection")
objConnection.provider = "ADsDSOObject"
objConnection.Open ("Active Directory Provider")
CommandText = "Select name"
CommandText = CommandText + " from 'LDAP://" & CurStrFullOU & DomainStr & DotStr
CommandText = CommandText + " where objectClass='organizationalUnit'"
Set objRecordset = CreateObject("ADODB.Recordset")
objRecordset.Open CommandText, objConnection

If objRecordset.EOF Then
MsgBox (Not Found)
Else
MsgBox (Found)
End If

Привожу свой вариант может кому пригодиться.
Всем спасибо за помощь
Автор: AlexSSS
Дата сообщения: 17.11.2005 15:20
alecsandrb, что еще советую поставить на сервак, так это Windows 2000/2003 Support Tools, там есть ADSI Edit, с ее помощью можно в посмотреть всю структуру домена, кто куда входит и у кого какие свойства есть и чему они равны.
Но пока не разберешься, что к чему, сам ничего в ней не изменяй!!!
Автор: alecsandrb
Дата сообщения: 17.11.2005 15:21
AlexSSS

Может и оффтоп но я проверял твой вариант на существуещем OU
и таком которого еще нет в AD.
Автор: AlexSSS
Дата сообщения: 17.11.2005 15:23
alecsandrb, странно. я тоже проверил код перед опубликованием, все работает правильно
попробуй отменить игнорирование ошибок после выполнения запроса.
Возможно у тебя есть ошибка в условии IF, тогда действительно строка с IF игнорируется и выводится Found

On Error Resume Next
Set objou = GetObject("LDAP://.....")
On Error GoTo 0
...
Автор: alecsandrb
Дата сообщения: 17.11.2005 15:46
Оно конечно странно но у меня тот же результат на все варианты
(существует или нет OU в AD) Found.
У меня только одно предположение - я все свои варианты выполнял из-под Excel
может он не понимает данной конструкции.
Автор: Nello
Дата сообщения: 18.11.2005 11:05
felixroot

Цитата:
Что то ругается на эту строчку Set objRS = objComm.Execute( )

А ты strbase под себя поправил?
Автор: Spartac
Дата сообщения: 20.11.2005 06:31
Всем привет. Кто-нибудь юзает checkcfg ?
Меня интересует софт, которым можно анализировать результаты работы checkcfg, желательно сервисом и с настраиваемыми алертами
Автор: AlexSSS
Дата сообщения: 20.11.2005 12:01
alecsandrb
в экселе убери все On Error
в GetObject("LDAP://.....") установи существующий OU
GetObject пройдет без ошибок, а вот на следующей строке скорее всего ошибка выскочит. Если так, то разберись, почему выскакивает ошибка
Автор: AlexSSS
Дата сообщения: 06.12.2005 16:09
есть сеть с кучей управляемых свичей. Можно ли скриптами собрать с них какую-то инфу через SNMP? Для начала самую простую - Name, IP, MAC, Location, версию Firmware

если не скриптами, то как это удобнее сделать?
Автор: Jovanotti
Дата сообщения: 06.12.2005 17:19
Можно и скриптами.
К примеру берешь PERL + его модули для SNMP
и пишешь скрипт. Можно готовые поискать.


Цитата:
кучей управляемых свичей

Какие именно ? Если одного производителя то вендор поставляет
как правило спец софт. К примеру для оборудования ДЛИНКА
прога D-View
Автор: AlexSSS
Дата сообщения: 06.12.2005 19:26
похоже получится и без перла, на обычном VBS.
Вначале установить на XP через контрол панель SNMP Protocol и WMI SNMP Provider.
А дальше можно работать через WMI. Проверил - работает, наименование свича и MAC уже получил, надо изучать наименования остальных свойств.

> Какие именно ?
Allied Telesyn
Имеющийся софт или доступ через WEB не очень удобны - надо перебирать все свичи.
Я же хочу сделать отчет, в котором будет вся интересующая меня инфа по всем свичам. Конкретно сейчас меня интересует версия FirmWare, которая установлена на разных устройствам, чтобы обновить ее, если стоит не последняя.
Понятно, что первый раз гораздо быстрее пройтись по всем свичам (через WEB) и снять инфу с каждого из них. Но на будущее разобраться со снятием инфы через SNMP - весьма полезно
Автор: ShafMAN
Дата сообщения: 06.12.2005 22:41
Подскажите на такой простецкий вопрос. Как разобраться с пробелами в путях в методе Run.
Например

Код: WshShell.Run("D:\\Program Files\\Folder\\file", x);
Автор: TNR
Дата сообщения: 07.12.2005 10:17
Народ как написать скриптик для поиска и удаления найденых файлов ?
Или где такой скачать ?
Автор: AlexSSS
Дата сообщения: 07.12.2005 10:34
у Юры Шутенко есть класная статья по использованию FileSystem Object
http://kodu.neti.ee/~juri4/vfpplus/vbs_fso_01_ru.htm

рекомендую. Единственное, примеры переведены на VFP, на VBS их придется перевести самому.
Либо найти другую документацию на FileSystem Object, где все на VBS
Автор: FreemanRU
Дата сообщения: 07.12.2005 13:12
ShafMAN
WshShell.Run("\"D:\\Program Files\\Folder\\file\"", x);
По идеи так....
Автор: Breaker
Дата сообщения: 08.12.2005 14:04
FreemanRU
Спасибо, получилось

Добавлено:
А можно каким-то образом не меняя фонового рисунка, на рабочем столе сообщения всем нарисовать?
Автор: Uriu
Дата сообщения: 09.12.2005 07:35
TNR
В "Личный ящик" пишите что нужно искать и удалять, попробую Вам помочь.
Автор: Ernie
Дата сообщения: 09.12.2005 14:14
Мой скрипт входа для пользователей домена. Может кому пригодится.

Код:
Const LOCAL_SETTINGS_TEMP_INET_FILES = &H20&
Const LOCAL_SETTINGS_RECENT_FILES = &H8&

strComputer = "."

On Error Resume Next

' опредление OU
Set objADSystemInfo = CreateObject("ADSystemInfo")
strUserDN = objADSystemInfo.UserName

Set objUser = GetObject("LDAP://" & strUserDN)
arrPath = Split(objUser.Parent, ",")
intPathLength = Len(arrPath(1))
strOU = Right(arrPath(1), intPathLength-3)
'Wscript.Echo "OU = " & strOU


' определение Username
Set objNetwork = Wscript.CreateObject("WScript.Network")
Do While objNetwork.UserName = ""
WScript.Sleep 100
Loop
strUser = objNetwork.UserName
'Wscript.Echo "Username = " & strUser

' отключение существующих сетевых дисков
objNetwork.RemoveNetworkDrive "Y:"
objNetwork.RemoveNetworkDrive "Z:"

' подключение сетевого диска с личными папками
netPath = "\\main\personal$\" & strOU & "\" & strUser
'Wscript.Echo "Personal Folder Path = " & netPath
objNetwork.MapNetworkDrive "Y:", netPath

' подключение сетевого диска с временными папками
netTempPath = "\\main\public$"
objNetwork.MapNetworkDrive "Z:", netTempPath

' подключение сетевого принтера
objNetwork.AddWindowsPrinterConnection "\\sys\hp"
objNetwork.SetDefaultPrinter "\\sys\hp"

' удаление Temporary Internet Files
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(LOCAL_SETTINGS_TEMP_INET_FILES)
Set objFolderItem = objFolder.Self
strInetTempFiles = objFolderItem.Path
'Wscript.Echo "strInetTempFiles - " & strInetTempFiles
DelFiles(strInetTempFiles)

' удаление Recent Files History
Set objShell = CreateObject("Shell.Application")
Set objFolder = objShell.Namespace(LOCAL_SETTINGS_RECENT_FILES)
Set objFolderItem = objFolder.Self
strRecentFiles = objFolderItem.Path
'Wscript.Echo "strRecentFiles - " & strRecentFiles
DelFiles(strRecentFiles)

' Очистка папки User TEMP
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_BootConfiguration")
For Each objItem in colItems
strUserTempDir = objItem.TempDirectory
'Wscript.Echo "User Temp Directory: " & strUserTempDir
Next
DelFiles(strUserTempDir)

' Очистка папки System TEMP
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_Environment WHERE (Name = 'TMP' or Name = 'TEMP') and SystemVariable = True")

For Each objItem in colItems
strSystemTempDir = objItem.VariableValue
'Wscript.Echo "System Temp Directory: " & strSystemTempDir
Next
DelFiles(strSystemTempDir)

Function DelFiles(strSourceDir)
    Dim lfsObject
    Dim lFileList
    Dim lFolder
    Dim lFile

    'Is this a valid call?
    If strSourceDir > "" Then
        On Error Resume Next
        Set lfsObject = CreateObject("Scripting.FileSystemObject")
        Set lFolder = lfsObject.GetFolder(strSourceDir)
        'Wscript.Echo "lFolder - " & lFolder

        'Process contained files first
        Set lFileList = lFolder.Files
        'Wscript.Echo "lFileList - " & lFileList
        For Each lFile in lFileList
            'Wscript.Echo "lFile - " & lFile
            lFile.Delete
        Next

        'Process subdirectories
        Set lSubFolders = lFolder.SubFolders

        For Each lSubFolder in lSubFolders
            NewSource = strSourceDir & "\" & lSubFolder.Name
            'Wscript.Echo "NewSource - " & NewSource
            'Recursive call to delete all subdirectories
            DelFiles NewSource
            'Delete this directory
            lSubFolder.Delete
        Next

        'Cleanup
        Set lfsObject = Nothing
        Set lFileList = Nothing
        Set lFolder = Nothing
        Set lFile = Nothing
    End If
End Function
Автор: IronWarrior
Дата сообщения: 09.12.2005 16:23
зачем все так сложно , в автоекзек прописать пару строчек и при загрузки комп сам будет чистить тмпешки
Автор: mozers
Дата сообщения: 10.12.2005 20:03
Классический скрипт запуска прог на удаленной машине через WMI:
Код: On Error Resume Next
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
CompName = "BOSS" 'имя компьютера
UserName = "Admin" 'имя пользователя
Pass = "abcd" 'пароль пользователя
Set objServices = objSWbemLocator.ConnectServer(CompName, "root\CIMV2", UserName, Pass, Null, Null, 0)
If Err.Number <> 0 Then
    WScript.Echo Err.Number & ": " & Err.Description
    WScript.Quit
End If
Set objClass = objServices.Get("Win32_Process")
Res = objClass.Create("C:\TEMP\sysinfo.exe", Null, Null, PID)
If Res <> 0 Then
    WScript.Echo "Код ошибки: " & Res
End If
Автор: Uriu
Дата сообщения: 11.12.2005 07:30
mozers
Может нужно попробовать вот так:

Set objServices = objSWbemLocator.ConnectServer(CompName, "root\CIMV2", Domain\UserName, Pass) "Null, Null, 0"- для чего это?
Domain-имя домена если есть.

При подсоединении с помощью SWbemLocator , если указывать имя и пароль, производится подсоединение от имени заданной в сценарии учетной записи. На локальном всегда от имени текущей .

Если запускать от текущей учетной записи (в сценарии не нужно задавать имя и пароль) то для подключения к пространству имен лучше пользоваться моникером:

Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & CompName & "\root\cimv2")

Попробуйте моникером.

Автор: mozers
Дата сообщения: 11.12.2005 12:19
Uriu
Увы, но твой вариант - хуже. (Ща все попробовал, протыкал...)
Я могу запускать скрипт из любого профиля (лишь бы права были), указывая в скрипте имя/пасс админа.
В твоем случае, скрипт сработает только если он будет запущен из админского профиля (или из профиля того пользователя, что хозяйничает на компутере-жертве).
Что касаемо запуска прог, то оба варианта ведут себя, увы, идеентично
Локальные пути - без проблем.
Сетевые - хрен на глаз... "Отказано в доступе"
Автор: Alan Mon
Дата сообщения: 12.12.2005 09:33
mozers
Я думаю дело в правах пользователя SYSTEM. Твой скрипт коннектится к машине с определенным логином и паролем, но потом начинает работать WMI, который запущен от имени SYSTEM той машины. А пользователю SYSTEM по умолчанию доступ в сеть запрещен.
Автор: mozers
Дата сообщения: 12.12.2005 21:36
Alan Mon
Посмотрел повнимательнее... Нет. Процесс стартует от имени той учетной записи, что задана в скрипте.
Была мысль,что проблема в том, что процесс стартует скрытым. Нашел скрипт который запускает интерактивный вариант (через ScheduledJob). Один хрен - понимает только локальный путь Ставлю сетевой - все то же "Отказано в доступе"
Вообще ничего не понимаю
Автор: MNT
Дата сообщения: 13.12.2005 10:52
Вопрос по штатной админской утилите (для Active directory) dsquery.exe.

Как с ее помощью (или с помощью других средств) можно получить внутреннее (сокращенное) имя пользователя домена, если известно полное имя пользователя?
Автор: Uriu
Дата сообщения: 14.12.2005 05:18
mozers,Alan Mon


Если открыть wmimgmt.msc -свойства-безопастность, пользователя SYSTEM там нет.
Интересно почему так сделанно?

Автор: pav
Дата сообщения: 14.12.2005 07:24
Здравствуйте, знатоки VBS. В силу непреодолимых обстоятельств предстоит смена адресного пространства в локальной сети. Машин уже порядка двухсот и бегать и делать вс ручками - муторно. DHCP в сети не используется и этот факт изменить нельзя. Можно ли при помощи скриптов vbs [more=смены ip-адреса и шлюза]

Код:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
strIPAddress = Array("192.168.1.141")
strSubnetMask = Array("255.255.255.0")
strGateway = Array("192.168.1.100")
strGatewayMetric = Array(1)

For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
If errEnable = 0 Then
WScript.Echo "The IP address has been changed."
Else
WScript.Echo "The IP address could not be changed."
End If
Next

Автор: finderknowledge
Дата сообщения: 14.12.2005 11:40
MNT
dsquery user -name [имя] -o samid

Breaker

Цитата:
А можно каким-то образом не меняя фонового рисунка, на рабочем столе сообщения всем нарисовать?

есть такая программка Bginfo, хотя можно наверно поискать и что-нибудь более специализированное, или самому что-нибудь написать
Автор: earner
Дата сообщения: 14.12.2005 15:14

Цитата:
Классический скрипт запуска прог на удаленной машине через WMI:
...
Работает отлично только если запускаемая прога находится в локальном каталоге..

Даже программные пакеты солидных производителей предварительно копируют необходимые файлы на удаленный компьютер.. Наверное, это не спроста..
Может и в данной ситуации стоит также поступить.. дополнить скрипт функцией копирования содержимого какой-нибудь папки на локальном компьютере во временную папку на удалённом.. а потом, если надо, с удалённого всё стереть..

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Зеркалирование дисков Win2000


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