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

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

Автор: YNY
Дата сообщения: 13.02.2009 08:21
вторую где set, т.к. обычно везде в другую сторону слеши
если интересуют как на яз высокого уровня производится мониторинг, то см функцию FindFirstChangeNotification

Добавлено:

Цитата:
В том то и дело что на всех станциях

а кокой сервиспак на 2к стоит?

Добавлено:
на крайняк, если быстро надо, то тут ранее был вопрос про то как известить пользователей о том, что идет процесс обновления и как вариант было предложено отображать готовую веб страницу в эт время (см стр-ы ранее)
Автор: WSQ2
Дата сообщения: 16.02.2009 00:02
кто подскажет, как определить режим работы сетевой карты параметры speed и duplex.

Просмотрел всё что нашел в WMI - нет такого параметра.
Автор: abasov
Дата сообщения: 16.02.2009 10:08

Цитата:
кто подскажет, как определить режим работы сетевой карты параметры speed и duplex

WSQ2

Дело в том что различные адаптеры этот параметр определяют по разному. Т.е. непроходимо адаптировать под свои условия.
для примера:


Код: Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")

' This is the base registry key for NICs

strKeyPath = "SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}\00"
strValueName = "DriverDesc"

'Set up a couter for at least 30 different entries in the key
for strcount=0 to 30

if strcount<10 then
strcount="0"&strcount
end if

'Read the value of the nic description

oReg.GetstringValue HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
'objfile.WriteLine "Device description: " & strValue

'compare to identified string values and set value accordingly.

if instr(strvalue,"Intel")> 0 And InStr(strValue,"Wireless")<=0 then
strValueName = "SpeedDuplex"
'oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strNICSpeed
WScript.Echo strNICSpeed
Select Case strSpeed
Case 0:
WScript.Echo "Intel NIC with Auto Detect settings"
Case 1:
WScript.Echo "Intel NIC with 10Mbps/Half Duplex settings"
Case 2:
WScript.Echo "Intel NIC with 10Mbps/Full Duplex settings"
Case 3:
WScript.Echo "Intel NIC with 100Mbps/Half Duplex settings"
Case 4:
WScript.Echo "Intel NIC with 100Mbps/Full Duplex settings"
Case 5:
WScript.Echo "Intel NIC with Auto Negotiate 1000Mbps settings"
Case Else
WScript.Echo "Intel NIC with Unknown Setting"
End Select
end If

'You might need to change the below as per the above select cases.

if instr(strvalue,"Broadcom") then
strValueName = "RequestedMediaType"
''strvalue="0" 'set auto
strValue = "6" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if

if strvalue = "3Com EtherLink XL 10/100 PCI TX NIC (3C905B-TX)" then
strValueName = "Duplexmode"
''strvalue="Hardware Default" 'set auto
strValue = "Full Duplex" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
strValueName = "MediaSelect"
''strvalue="Auto Select" 'set auto
strValue = "100BaseTx" 'set full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if


if strvalue = "3Com EtherLink 10/100 PCI For Complete PC Management NIC (3C905C-TX)" then
strValueName = "media_type"
''strvalue="Autoselect" 'set auto
strValue = "100FULL" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if


if strvalue = "3Com EtherLink XL 10/100 PCI For Complete PC Management NIC (3C905C-TX)" then
strValueName = "Duplexmode"
''strvalue="Hardware Default" 'set auto
strValue = "Full Duplex" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
strValueName = "MediaSelect"
''strvalue="Auto Select" 'set auto
strValue = "100BaseTx" 'set full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if

if strvalue = "3Com 3C918 Integrated Fast Ethernet Controller (3C905B-TX Compatible)" then
strValueName = "Duplexmode"
''strvalue="Hardware Default" 'set auto
strValue = "Full Duplex" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
strValueName = "MediaSelect"
''strvalue="Auto Select" 'set auto
strValue = "100BaseTx" 'set full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if

if strvalue = "Accton EN1207D-TX PCI Fast Ethernet Adapter" then
strValueName = "DuplexMode"
''strvalue="1" 'set auto
strValue = "5" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if

if strvalue = "Accton EN1207F Series PCI Fast Ethernet Adapter" then
strValueName = "MediaType"
''strvalue="0" 'set auto
strValue = "4" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if

if strvalue = "Compaq NC3123 Fast Ethernet NIC" then
strValueName = "SpeedDuplex"
''strvalue="0" 'set auto
strValue = "4" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if

if instr(strvalue,"FE57") then
strValueName = "LinkSelection"
''strvalue="0200" 'set auto
strValue = "0100" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if

if instr(strvalue,"Realtek RTL8139") then
strValueName = "Duplex Mode"
''strvalue="1" 'set auto
strValue = "5" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if

if strvalue = "Realtek RTL8139/810x Family Fast Ethernet NIC" then
strValueName = "Duplex Mode"
''strvalue="1" 'set auto
strValue = "5" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if


if instr(strvalue,"VIA") then
strValueName = "ConnectionType"
''strvalue="0" 'set auto
strValue = "2" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if

if strvalue = "Xircom Ethernet Adapter 10/100" then
strValueName = "LineMode"
''strvalue="0" 'set auto
strValue = "2" 'set 100 full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
strValueName = "LineSpeed"
''strvalue="0" 'set auto
strValue = "2" 'set full
oReg.SetStringValue
HKEY_LOCAL_MACHINE,strKeyPath&strcount,strValueName,strValue
end if


next
Автор: YNY
Дата сообщения: 16.02.2009 11:31
Никак [more=смртри инфу по Win32_NetworkAdapter]
The Win32_NetworkAdapter WMI class represents a network adapter on a Windows operating system.

The following syntax is simplified from Managed Object Format (MOF) code and includes all inherited properties

MaxSpeed
Data type: uint64
Access type: Read-only

Maximum speed, in bits per second, for the network adapter. This property is inherited from CIM_NetworkAdapter.

This property has not been implemented yet. It returns a NULL value by default.

For information on using uint64 values in scripts, see Scripting in WMI.

[/more]





Добавлено:
-- в WMI я имел ввиду
Автор: YURETS777
Дата сообщения: 16.02.2009 15:04
SP4

А банер-веб-страница грузится после MSI
Мне нужно ее прикрутить к MSI либо сделать так, чтобы MSI ставился после стартапа, но как это сделать пока никто не знает.


Цитата:
а кокой сервиспак на 2к стоит?

Автор: YNY
Дата сообщения: 17.02.2009 10:52

Цитата:
YURETS777

я часть твоего скрипта с 50 стр поставил на автозапуск (на комп) через ммс (т.к. ща нет сервера под рукой) и страничка появилась до приглашения ввести пароль правда слип в 200 - слишком много, а вот если на логон юзера, то хз что вперед, но тож отображается, посмотри что у тя в boot.ini, в реестре есть возмоность

Не показывать сообщения при запуске и выходе из системы
(XP) [ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System ].

Создайте здесь параметр «DisableStatusMessages» (dword) и присвойте ему значение «1», чтобы не показывать сообщения при запуске и выходе из системы (сохранение параметров, загрузка личных параметров, запуск Windows и т.д.), или значение «0», чтобы показывать сообщения.
______________

Показывать выполняемые команды при запуске и выходе из системы
(XP) [ HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System ].

Создайте в этом ключе параметр с именем «verbosestatus» (dword), или модифицируйте существующий, чтобы показывать выполняемые команды при запуске и выходе из системы. Поможет быстро выяснить, на запуск чего система тратит много времени и если возможно, отключить не нужные сервисы. Значения:

«1» — показывать,
«0» — стандартная загрузка.


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

Добавлено:
DisableStatusMessages реально блокирует сообщения (сохранение параметров, загрузка личных параметров, запуск Windows, установка... и т.д.) сам проверил в 2000!
Автор: testir
Дата сообщения: 17.02.2009 15:04
Помогите разобраться .. Нужно в cmd скрипте по маске *.jpg *.mp3 искать файлы на диске и удалять, при этом имеется некий список каталогов, которые трогать нельзя, т.е. ничего в них не удалять а пропускать.. напишите кто знает как сделать такое,
заранее спасибо!
Автор: abasov
Дата сообщения: 17.02.2009 19:31
testir
было уже не раз, ищите. и задача тривиальна
на vbs не подойдет?


Код: Option Explicit
'err.raise 1, "Achtung!", "для запуска закоментировать строку генерации ошибки"
'1) Задать папки для поиска в массив aFolders, например "C:\","E:\"
'2) задать расширения файлов в массив aExtensions, например "mp3","avi","wma"
'3) задать путь и файл для логирования LogFileName1 , например "d:\temp\i.txt"
'см. дальше по тексту...


'Сценарий сканирует указанные каталоги и удаляет в нем файлы с указанными расширениями
'9 дек 2004
'
Dim LogFileName1
'dim NameFileOfMessage    
dim TextOfMessage

Dim aFolders    'массив каталогов
Dim aExtensions    'массив расширений файлов

dim file1
dim FileOfMessage

'1) Задать папки для поиска в массив aFolders, например aFolders = Array("C:\","E:\")
aFolders = Array("D:\")

'2) задать расширения файлов в массив aExtensions, например aExtensions = Array( "mp3","avi","wma")
aExtensions = Array( "id","nsf")

Dim fso


'3) задать путь и файл для логирования LogFileName1 , например LogFileName1 = CStr("d:\temp\i.txt")
LogFileName1 = CStr("c:\Log_Delete_Incoming.txt")

'
'4) пункт убран
'

'5)текст сообщения, которое будет в файле в папке где был удалён файл
TextOfMessage = CStr("Администрация предупреждает: ")


Set fso = CreateObject("Scripting.FileSystemObject")
Set file1 = fso.OpenTextFile(LogFileName1,8,true)

Dim i
file1.WriteLine "----------- начало поиска --------------" & cstr(Date()) & "|" & cstr(Time())
For i = 0 To UBound(aFolders)
If fso.FolderExists(aFolders(i)) Then
on error resume next
Err.Clear

Dim folder
Set folder = fso.GetFolder(aFolders(i))
Dim file
For Each file In folder.Files
if Err then
file1.WriteLine "---> " & cstr(Date()) & "|" & cstr(Time()) &"!!! ->!Ошибка при доступе к папке!<- " &folder
exit for
End If
If IsKnowExtensions(file) Then

Set FileOfMessage = fso.OpenTextFile(folder+"\"+file.name+".txt",8,true)
FileOfMessage.WriteLine (TextOfMessage)
FileOfMessage.WriteLine ("файл '"& file.name & "' изъят до выяснения обстоятельств...")
FileOfMessage.close
file.Delete True
end if


Next
dim subFolder
For Each subFolder In folder.SubFolders
if Err then
exit for
end if
ScanSubFolder subFolder
Next


end if
Next
file1.WriteLine "----------- конец поиска --------------" & cstr(Date()) & "|" & cstr(Time())
file1.close


Function IsKnowExtensions(file)
    Dim strExtensions
    strExtensions = fso.GetExtensionName(file.Path)
    Dim i
    For i = 0 To UBound(aExtensions) '- 1
        If ucase(strExtensions) = ucase(aExtensions(i)) Then
            'msgbox "!"
            file1.WriteLine (cstr(Date()) & "|" & cstr(Time()) &" был Удалён : " & file.Path )

            IsKnowExtensions = True
            Exit Function
        End If
    Next
    IsKnowExtensions = False
End Function


Sub ScanSubFolder(folder)

Dim file
on error resume next
Err.Clear
For Each file In folder.Files
if Err then
file1.WriteLine "---> " & cstr(Date()) & "|" & cstr(Time()) &"!!! ->!Ошибка при доступе к папке!<- " &folder
Err.Clear
exit sub
end if    
If IsKnowExtensions(file) Then

Set FileOfMessage = fso.OpenTextFile(folder+"\"+file.name+".txt",8,true)
FileOfMessage.WriteLine (TextOfMessage)
FileOfMessage.WriteLine ("файл '"& file.name & "' изъят до выяснения обстоятельств...")
FileOfMessage.close
file.Delete true
end if
Next
Dim subFolder
For Each subFolder In folder.SubFolders
ScanSubFolder subFolder
Next
End Sub
Автор: testir
Дата сообщения: 18.02.2009 09:22
abasov
На vbs тоже можно, нужно чтобы поиск был и по вложенным каталогам, и самое главное условие, есть каталоги, которые трогать нельзя и их нужно пропускать.
т.е. задали c:\temp делаем поиск в нем и по всем вложенным каталогам, в нем находятся каталоги, которые нужно пропускать..
В приведенном Вами скрипте нет такого исключения...
поиском уже искал ничего похожего не нашлось (
единственное что нашел
[more]
set source_dir=c:\temp
set ext_list=ext.txt
for /f %%e in (%ext_list%) do (
for /f %%i in ('dir /s /b %source_dir%\*%%e') do (
del "%%i"
)
)
[/more]
но тут есть проблема, не видятся файлы с пробелами в названии файлов, и даже файлы без пробелов не удаляются(
Автор: abasov
Дата сообщения: 18.02.2009 17:37
testir


Код: strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery _
("SELECT * FROM CIM_DataFile WHERE Extension = 'log' and drive = 'u:' and path <> '\\любимая папка\\' ") 'и через WQL и с коленки / или: and not path like '\\%любим%\\'
For Each objFile in colFiles
'objFile.Delete

wscript.Echo objFile.name
Next
Автор: el_verdugo
Дата сообщения: 20.02.2009 07:45
Здравствуйте!
Скажите пожалуйста, как лечится ошибка WMI 8004106C???
В памяти постоянно висел скрипт (временной подписки, Win32_LogicalDisk)... все было нормально... написал скрипт (постоянной подписки, Win32_Process)... после этого через некоторое время появляется вышеуказанная ошибка...
... если запустить Mirrow's Edge, то ошибка вылетит мгновенно... после перезагрузки скрипты работают некоторое время нормально... Кто знает, из-за чего данная ошибка возникает и как лечится???
Автор: YNY
Дата сообщения: 24.02.2009 10:24

Цитата:
el_verdugo

смотри ссылки
http://manageengine.adventnet.com/products/opmanager/troubleshooting-guide.html
http://manageengine.adventnet.com/products/opmanager/troubleshooting-guide.html#8004106C
Автор: bygamer
Дата сообщения: 24.02.2009 17:02
Как получить свободное место диска, подключенного как NTFS папка (например c:\d\)?
Прбовал
fso.GetDrive..FreeSpace
Win32_DiskDrive
Win32_LogicalDisk
Freedisk.exe
отдают только с:
Автор: el_verdugo
Дата сообщения: 25.02.2009 03:04
YNY
Спасибо за ссылки, а можно определить, в каком месте скрипта WMI использует слишком много памяти?

Код: Set oWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

If WScript.Arguments.Count > 0 Then

oWMI.Get("__EventFilter.Name='myProcMonFilter'").Delete_
oWMI.Get("ActiveScriptEventConsumer.Name='myProcMonConsumer'").Delete_
WScript.Echo "ProcMon Was Deleted"
WScript.Quit

End If

Set oSelQ = oWMI.ExecQuery("SELECT * FROM Win32_Process WHERE CommandLine Like '%script.exe%' And CommandLine Like '%" & WScript.ScriptName & "%'")

If oSelQ.Count > 1 Then WScript.Quit

strQueryFilter = "SELECT * FROM __InstanceOperationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'"

Set oFilterClass = oWMI.Get("__EventFilter")
Set oFilter = oFilterClass.SpawnInstance_
oFilter.Name = "myProcMonFilter"
oFilter.QueryLanguage = "wql"
oFilter.Query = strQueryFilter
oFilter.Put_()


Set oConsumerClass = oWMI.Get("ActiveScriptEventConsumer")
Set oConsumer = oConsumerClass.SpawnInstance_()
oConsumer.Name = "myProcMonConsumer"
oConsumer.ScriptingEngine = "VBScript"
oConsumer.ScriptText = _
"Select Case TargetEvent.Path_.Class : " &_
"Case ""__InstanceCreationEvent"" : " &_
"strOperation = ""Запуск"" : strInclude=1 : " &_
"Case ""__InstanceDeletionEvent"" : " &_
"strOperation = ""Завершение"" : strInclude=1 : " &_
"Case ""__InstanceModificationEvent"" : " &_
"strOperation = ""Изменение"" : strInclude=0 : " &_
"End Select : " &_
"strExclude = LCase(Right(RTrim(TargetEvent.TargetInstance.ExecutablePath), 11)) : " &_
"If strExclude = ""scrcons.exe"" Then : " &_
"strInclude = 0 : " &_
"End If : " &_
"If strInclude Then : " &_
"strEvent = ""Процесс: "" & TargetEvent.TargetInstance.CommandLine & Chr(13)" &_
     "& ""Путь: "" & TargetEvent.TargetInstance.ExecutablePath & Chr(13)" &_
     "& ""Действие: "" & strOperation & Chr(13)" &_
     "& ""Дата/Время: "" & Now & Chr(13)" &_
     "& ""ProcessID: "" & TargetEvent.TargetInstance.ProcessID : " &_
"Set sh = CreateObject(""WScript.Shell"") : " &_
"sh.LogEvent 4, strEvent : " &_
"End If"

oConsumer.Put_()

Set oBinderClass = oWMI.Get("__FilterToConsumerBinding")
Set oBinder = oBinderClass.SpawnInstance_()
oBinder.Filter = "__EventFilter.Name=""myProcMonFilter"""
oBinder.Consumer = "ActiveScriptEventConsumer.Name=""myProcMonConsumer"""
oBinder.Put_()
WScript.Echo "ProcMon Was Installed"
Автор: yazzi
Дата сообщения: 25.02.2009 13:59
Здравствуйте, подскажите как с помощью GPO можно поставить файл что бы он выполнился один раз.
Автор: abasov
Дата сообщения: 25.02.2009 18:41
yazzi
может я такой трудный, но кроме gpo не понял ничего.
Автор: Vby
Дата сообщения: 25.02.2009 22:32
yazzi
как вариант создать батник вида

Код: @echo off
SET FLAG=%TEMP%\Flag.txt
'Копируем файл при первом запуске
xcopy \\server\Flag.txt %TEMP%\Flag.txt /y
'Проверяем наличие файла
IF EXIST %FLAG% GOTO END
'Если файл отсутствует выполняем команду
DEL %WINDIR%\Delete.dll > %FLAG%
:END
Автор: el_verdugo
Дата сообщения: 26.02.2009 01:19
Vby
Приведенный код не выполнится ни разу, т.к. файл сначала копируется, а потом проверяется условие... твой код надо немного изменить... примерно так


Код: @echo off
SET FLAG=%TEMP%\Flag.txt
rem Проверяем наличие файла
IF EXIST %FLAG% GOTO END
rem Если файл отсутствует выполняем команду
DEL %WINDIR%\Delete.dll > %FLAG%
rem Копируем файл при первом запуске
rem строчка ниже не нужна в данном батнике вообще
rem xcopy \\server\Flag.txt %TEMP%\Flag.txt /y
:END
Автор: yazzi
Дата сообщения: 26.02.2009 08:21
Vby
Как вариант я рассматривал добавление ключика в реестр. Просто я думал можно в GPO поставить на однократное исполнение файла.
Автор: YNY
Дата сообщения: 26.02.2009 10:25

Цитата:
Vby

GPO обычно применяется для многократного применения политик при логоне/стартапе компов в домене. Однократное выполнение посредством GPO не самый мудрый ход, но как вариант цепляйте либо скрипт с проверкой на кол-во запусков, либо 2, причем 2-й будет убивать первый и себя из политик))

если в эт ключ реестра (HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce)
добавить запуск приложения или файла, то он выполнится после перезагр и логона данного юзера, а если в HKEY_LOCAL_MACHINE\..., то для компа (эстлив не обшибаюсь) + значение само удалится из реестра, а о том, как писать в реестр смотри страницы ранее.

Добавлено:

Цитата:
el_verdugo

Дело в том, что при загрузке системы идет интенсивная загрузка различных процессов, а т.к. WMI не быстр, то это может вызывать зависание и ошибку, мона попробовать увеличить либо оперативку, либо файл подкачки. Для отлова ошибок ON ERROR GTOTO... ск всего не помогет, но мона попробовать эт скрипт запускать из другова и отслеживать ошибки.
Автор: abasov
Дата сообщения: 26.02.2009 15:42
Исправляет некорректное имя автора в Office 2003 на ФИО (displayName) из AD.
Собственно баг в кодировке при добавлении в реестр. Коллеги как исправить?
(видимо ldap utf > реестр 1251)


Код: Set fs = CreateObject("Scripting.FileSystemObject")
set WshShell = WScript.CreateObject("WScript.Shell")
' get UserName
strName = WshShell.ExpandEnvironmentStrings("%USERNAME%")

On Error Resume Next

' Constants for the NameTranslate object.
Const ADS_NAME_INITTYPE_DOMAIN = 1
Const ADS_NAME_TYPE_NT4 = 3
Const ADS_NAME_TYPE_1179 = 1

Set objNetwork = CreateObject("Wscript.Network")

' Determine DNS domain name from RootDSE object.
Set objRootDSE = GetObject("LDAP://RootDSE")
If Err.Number <> 0 Then
Wscript.Quit
End If
strDNSDomain = objRootDSE.Get("defaultNamingContext")

' Use the NameTranslate object to find the NetBIOS domain name from the
' DNS domain name.
Set objTrans = CreateObject("NameTranslate")
objTrans.Init ADS_NAME_TYPE_NT4, strDNSDomain
objTrans.Set ADS_NAME_TYPE_1179, strDNSDomain
strNetBIOSDomain = objTrans.Get(ADS_NAME_TYPE_NT4)
' Remove trailing backslash.
strNetBIOSDomain = Left(strNetBIOSDomain, Len(strNetBIOSDomain) - 1)

' Use the NameTranslate object to convert the NT user name to the
' Distinguished Name required for the LDAP provider.
objTrans.Init ADS_NAME_INITTYPE_DOMAIN, strNetBIOSDomain
objTrans.Set ADS_NAME_TYPE_NT4, strNetBIOSDomain & "\" & strName
strUserDN = objTrans.Get(ADS_NAME_TYPE_1179)

' Bind to the user object in Active Directory with the LDAP provider.
Set objUser = GetObject("LDAP://" & strUserDN)

'Get Common name
strUsername=objUser.Get("displayName") & ", " & objUser.Get("telephoneNumber")
'strUsername= objUser.cn
'WScript.Echo strUsername
'Convert Initials to HEX
For i = 1 to Len(strName)
strInitialsHex = strInitialsHex & "," & Hex(Asc(Mid(strName, i, 1))) & ",00"
Next
strInitialsHex = Right(strInitialsHex , Len(strInitialsHex ) -1)
strInitialsHex = strInitialsHex & ",00,00"

'Convert Username to HEX
For i = 1 to Len(strUsername)
strUsernameHex = strUsernameHex & "," & Hex(Asc(Mid(strUsername, i, 1))) & ",00"
Next
strUsernameHex = Right(strUsernameHex, Len(strUsernameHex) -1)
strUsernameHex = strUsernameHex & ",00,00"

' Create temporary registry file
Const OverwriteIfExist = -1
Const FailIfExist = 0
Const OpenAsASCII = 0
Const OpenAsUnicode = -1
Const OpenAsDefault = -2
sTmpFile = WshShell.ExpandEnvironmentStrings("%TEMP%") & "\UserInfo.reg"
Set fFile = fs.CreateTextFile(sTmpFile, OverwriteIfExist, OpenAsASCII)


' Write to the temporary registry file
fFile.WriteLine "Windows Registry Editor Version 5.00"
fFile.WriteLine
fFile.WriteLine "[HKEY_CURRENT_USER\Software\Microsoft\Office\11.0\Common\UserInfo]"
fFile.WriteLine """UserName""=hex:" & strUsernameHex
fFile.WriteLine """UserInitials""=hex:" & strInitialsHex
fFile.Close

' Import the registry file
WshShell.Run "regedit /s " & sTmpFile, 0, True

' Delete the temporary registry file
fs.DeleteFile sTmpFile
Автор: el_verdugo
Дата сообщения: 27.02.2009 01:41
YNY

Цитата:
Дело в том, что при загрузке системы идет интенсивная загрузка различных процессов, а т.к. WMI не быстр, то это может вызывать зависание и ошибку, мона попробовать увеличить либо оперативку, либо файл подкачки.

Оперативки - для ХР'шки максимум...
файл подкачки - отсутствует...

Цитата:
Для отлова ошибок ON ERROR GTOTO... ск всего не помогет,

инструкция On Error ... в данном случае не поможет

Цитата:
но мона попробовать эт скрипт запускать из другова и отслеживать ошибки.

и каким образом это сделать, если это постоянный подписчик? Ему даже перезапуск системы ничем не грозит, так как он сам после перезагрузки запустится (только не совсем понятно чем и откуда?)...
Автор: YNY
Дата сообщения: 27.02.2009 12:47

Цитата:
el_verdugo

тогда используйте проги для оптимизации процесса загрузки памяти.
из приведенного примера не видно, что вы подписались на диск, а видно на процессы, ск всего решения в WMI нет пробуйте в PoverShell

Добавлено:
может поможет вот эта инфа
http://msdn.microsoft.com/en-us/library/aa363692(VS.85).aspx
http://search.microsoft.com/results.aspx?mkt=en-US&setlang=en-US&q=error+event+Subscription

Добавлено:
http://social.msdn.microsoft.com/Search/en-US/?Query=%d0%ba%d0%b0%d0%ba+%d0%bf%d0%be%d0%b4%d0%bf%d0%b8%d1%81%d0%b0%d1%82%d1%8c%d1%81%d1%8f+%d0%bd%d0%b0+%d1%81%d0%be%d0%b1%d1%8b%d1%82%d0%b8%d1%8f&resultsLang=ru-RU

Добавлено:
http://msdn.microsoft.com/en-us/library/aa363690(VS.85).aspx
Автор: el_verdugo
Дата сообщения: 02.03.2009 01:58
YNY
Спасибо за ссылки, конкретно по этой ошибке на сайте microsoft я ничего не нашел...
по трассировке процессов там написано не шибко понятно и на C#, которого я не знаю... по конфигурации WMI посмотрю...

Цитата:
из приведенного примера не видно, что вы подписались на диск

Подписку на диск я не приводил, так как она в течение продолжительного времени работала без сбоев (может потому, что это событие возникает редко?)... суть той подписки заключается в отлавливании события присоединения флэхи и убийстве авторана (или замене своим)... если надо, то могу выложить...

Цитата:
ск всего решения в WMI нет пробуйте в PoverShell

с PowerShell не работал, не знаю что за зверь... да и сначала нужно одно освоить, потом за другое приниматься, имхо...
Автор: YNY
Дата сообщения: 02.03.2009 07:04

Цитата:
el_verdugo


Более подхлдящая инфа
__ConsumerFailureEvent Notifies a consumer when some other event is dropped due to a failure on the part of an event consumer.
__EventDroppedEvent Notifies a consumer when some other event is dropped instead of delivered to the requesting event consumer.
__EventQueueOverflowEvent Notifies a consumer when an event is dropped as a result of delivery queue overflow.

With synchronous notification, WMI delivers the notification on the same thread that the event provider used to deliver the event to WMI. In this case, when an event provider sends a notification, the event provider is blocked by WMI until WMI delivers the notification. Only if your consumer is extremely fast and can process an event in 100 microseconds or less should you consider supporting synchronous notification. Synchronous consumers that take too long to process events can seriously slow the delivery of events to all other consumers. Furthermore, they can inadvertently block the provider. For more information , see Binding an Event Filter with a Logical Consumer.

Добавлено:
Semisynchronous Mode
Semisynchronous mode is similar to asynchronous mode in that the program or script continues to run after calling the method. In semisynchronous mode, WMI retrieves the objects in the background as your script or program continues to run. WMI returns each object returned to the calling method right after the object is created.

Because WMI manages the object, semisynchronous mode is more secure than asynchronous mode. However, if you use semisynchronous mode with more than 1,000 instances, instance retrieval can monopolize the available resources, which can degrade the performance of the program or script and the computer using the program or script. Each object takes up the necessary resources until the memory is released.

Автор: el_verdugo
Дата сообщения: 02.03.2009 07:15
YNY
Спасибо за инфу, буду пытаться что-нибудь сделать из этого...
Автор: YNY
Дата сообщения: 02.03.2009 07:21
To work around this condition, you can call the method with the iFlags parameter set with the wbemFlagForwardOnly and wbemFlagReturnImmediately flags to tell WMI to return a forward-only SWbemObjectSet. A forward-only SWbemObjectSet eliminates the performance problem caused by a large data set by releasing the memory after the object is enumerated.

Any SWbemServices method that cannot be called in either synchronous or asynchronous mode is called in semisynchronous mode.


Добавлено:
wbemFlagReturnImmediately = 16
wbemFlagForwardOnly = 32
IFlags = wbemFlagReturnImmediately + wbemFlagForwardOnly
wscript.echo semisynchronousflags
set objWMIService = GetObject("winmgmts:root\cimv2")
' Query for all the Win32_Process objects on the
' local machine and use forward-only enumerator
set colProcesses = objWMIService.ExecQuery_
("SELECT Name FROM Win32_Process",,IFlags)
' Receive each object as it arrives
For Each objProcess in colProcesses
WScript.Echo objProcess.name
Next
Автор: yazzi
Дата сообщения: 03.03.2009 13:42
Здравствуйте, подскажите плиз, как записать двоичный ключ в реестр.
Записываю следующим образом выдает ошибку Error: Неправильный параметр

Код:
ReDim MyArray(Len(Mail))
For i = 0 To (Len(Mail)-1)
MyArray(i) = Asc(Mid(Mail,i+1,1))
Next
intRes = ObjReg.SetBinaryValue(HKEY_CURRENT_USER, Path,Param,MyArray)
Автор: el_verdugo
Дата сообщения: 04.03.2009 03:42
yazzi
Примерно так

Код: Set sh = CreateObject("WScript.Shell")
sh.RegWrite "HKLM\SOFTWARE\!MyKey\Value", &h78563412, "REG_BINARY"
Set sh = Nothing
Автор: yazzi
Дата сообщения: 04.03.2009 08:26
el_verdugo
Спасибо не знаю почему, но каким то чудесным образом все заработало

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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