Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования. Часть 2

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

ShriEkeR (23-05-2011 23:06): Автоматизация администрирования. Часть 3  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114

   

FreemanRU



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
 

                               Коллеги-администраторы  ....  


Часть 2я

Часть 1
Думаю каждый из вас сталкивался с необходимостью выполнять некие несложные рутинные операции, на котороые уходит много драгоценного времени.
 Например, создать определенную структуру каталогов для каждого пользователя домена, изменить некие параметры в профилях всех или части пользователей, изменить полномочия/владельца однотипных файлов в разных каталогах т.д.  
Я, как сисадмин, тоже не раз был вынужден делать все это.  Руками делать это тоскливо и муторно, как вы понимаете. Должен заметить, что по неким "религиозным" убеждениям я всегда старался избегать любых отношений с бейсиком и его производными. Еще мой отец учил меня не иметь с ним никаких дел. Буквально. А теперь я учу своего сына тому же. Но, тем не менее, полностью избежать этого, по всей видимости, невозможно, тем более, что бейсик от M$ сейчас уже далеко не та "лапша", которой он был изначально, а современный структурированный язык, нашедший множество применений. Похоже, что для меня в очередной раз настала пора выучить еще что-то. Знаете, как курильщик много раз безуспешно пытается бросить курить, так и я не раз пытался подступиться к изучению VBScript, но пока никак не одолел. Лень, знаете ли. А инструмент в делах административных был бы весьма пользительный, должен заметить, для быстрого написания всякого рода скриптов.

 
    Внимание   !  !  !  

  • Поскольку данный топ весьма не мал, не забывайте  использовать "версию для печати" для более удобного поиска по теме. А также МЕГА ПОИСКОВИК от NEPa

  • Дабы не раздувать топ,  примеры своих  скриптов  заключаем в тег  "more"

Консольные команды. Командный интерпретатор

Windows Script Host (WSH) &  VBScript  &  JScript


Вышеперечисленные буки можно  взять здесь

    ТOOLS :
  1. Autoit+readme.rus
  2. Scriptologic
  3. AutoMate
  4. KIXTART
  5. nnCron-Планировщик с поддержкой скриптового языка --  РЕКОМЕНДУЮ
  6. WGET, GREP, GETMAIL, BLAT for Windows замечательные консольные утилиты
  7. 4dos/4nt -- отличная замена стандартного коммандного интерпретатора  
  8. JudoScript - java подобный скриптовый язык с исходниками
  9. VBS2EXE - утилита для компиляции vbs и js скриптов в exe выдранная из пакета PrimalScript

    Дружественные темы :
  1. Автоматическая (unattended) установка Windows
  2. Интересные команды при работе с Linux
  3. Отличный сайт по скриптингу, и не только
  4. Использование KIX
  5. Использование WMI
  6. Программирование "удобняшек" на VBScript

 
Подробнее...
Создается по материалам данного топа

 
Надеюсь данная тема будет полезна для Вас.
 Предложения по реформированию шапки принимаю в ПМ Jovanotti

 

Всего записей: 3773 | Зарегистр. 16-07-2004 | Отправлено: 17:27 11-12-2006 | Исправлено: Smitis, 12:30 20-08-2008
el_verdugo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
Скажите пожалуйста, как лечится ошибка WMI 8004106C???
В памяти постоянно висел скрипт (временной подписки, Win32_LogicalDisk)... все было нормально... написал скрипт (постоянной подписки, Win32_Process)... после этого через некоторое время появляется вышеуказанная ошибка...
... если запустить Mirrow's Edge, то ошибка вылетит мгновенно... после перезагрузки скрипты работают некоторое время нормально... Кто знает, из-за чего данная ошибка возникает и как лечится???

Всего записей: 121 | Зарегистр. 10-02-2006 | Отправлено: 08:45 20-02-2009
YNY

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
el_verdugo

смотри ссылки
http://manageengine.adventnet.com/products/opmanager/troubleshooting-guide.html
http://manageengine.adventnet.com/products/opmanager/troubleshooting-guide.html#8004106C

Всего записей: 476 | Зарегистр. 18-05-2006 | Отправлено: 11:24 24-02-2009
bygamer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как получить свободное место диска, подключенного как NTFS папка (например c:\d\)?
Прбовал
fso.GetDrive..FreeSpace
Win32_DiskDrive
Win32_LogicalDisk
Freedisk.exe
отдают только с:

Всего записей: 62 | Зарегистр. 12-07-2006 | Отправлено: 18:02 24-02-2009
el_verdugo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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"
 

 
bygamer
попробуй так

Код:
Set oWMI = GetObject("winmgmts:\\.\root\cimv2")
Set oSelQ = oWMI.InstancesOf("Win32_LogicalDisk")
 
For Each oItem In oSelQ
If oItem.MediaType=12 Then WScript.Echo "Свободно на диске " & oItem.Caption & "  " & Left(CDbl(oItem.FreeSpace)/1073741824, 6) & " GB"
Next
 
Set oSelQ = Nothing
Set oWMI = Nothing
 

Всего записей: 121 | Зарегистр. 10-02-2006 | Отправлено: 04:04 25-02-2009 | Исправлено: el_verdugo, 08:49 25-02-2009
yazzi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, подскажите как с помощью GPO можно поставить файл что бы он выполнился один раз.

Всего записей: 98 | Зарегистр. 14-08-2007 | Отправлено: 14:59 25-02-2009
abasov



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
yazzi
может я такой трудный, но кроме gpo не понял ничего.

Всего записей: 345 | Зарегистр. 12-11-2002 | Отправлено: 19:41 25-02-2009
Vby



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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

abasov

Цитата:
может я такой трудный

Может и трудный

Всего записей: 774 | Зарегистр. 16-09-2004 | Отправлено: 23:32 25-02-2009
el_verdugo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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

Всего записей: 121 | Зарегистр. 10-02-2006 | Отправлено: 02:19 26-02-2009 | Исправлено: el_verdugo, 02:22 26-02-2009
yazzi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vby
Как вариант я рассматривал добавление ключика в реестр. Просто я думал можно в GPO поставить на однократное исполнение файла.

Всего записей: 98 | Зарегистр. 14-08-2007 | Отправлено: 09:21 26-02-2009
YNY

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Vby

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

Цитата:
el_verdugo

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

Всего записей: 476 | Зарегистр. 18-05-2006 | Отправлено: 11:25 26-02-2009 | Исправлено: YNY, 11:44 26-02-2009
abasov



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Исправляет некорректное имя автора в 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

 
рабочий вариант, спасибо за помощь script-coding dot info и лично alexii:

Код:
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
Const HKEY_CURRENT_USER = &H80000001
Set objRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv")
 
strUsername = strUsername & Chr(0)
ReDim arrValues(LenB(strUsername) - 1)
 
For i = 1 To Len(strUsername)
    intDValue      = AscW(Mid(strUsername, i, 1))
    intBigValue    = intDValue \ &HFF
    intLittleValue = (intDValue - intBigValue) Mod &HFF
     
    arrValues(i * 2 - 2) = intLittleValue
    arrValues(i * 2 - 1) = intBigValue
Next
 
errReturn = objRegistry.SetBinaryValue _
    (HKEY_CURRENT_USER, "Software\Microsoft\Office\11.0\Common\UserInfo", "UserName", arrValues)
 
Set objRegistry = Nothing

Всего записей: 345 | Зарегистр. 12-11-2002 | Отправлено: 16:42 26-02-2009 | Исправлено: abasov, 06:24 27-02-2009
el_verdugo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YNY

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

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

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

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

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

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

Всего записей: 121 | Зарегистр. 10-02-2006 | Отправлено: 02:41 27-02-2009
YNY

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
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

Всего записей: 476 | Зарегистр. 18-05-2006 | Отправлено: 13:47 27-02-2009
el_verdugo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YNY
Спасибо за ссылки, конкретно по этой ошибке на сайте microsoft я ничего не нашел...
по трассировке процессов там написано не шибко понятно и на C#, которого я не знаю... по конфигурации WMI посмотрю...

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

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

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

с PowerShell не работал, не знаю что за зверь... да и сначала нужно одно освоить, потом за другое приниматься, имхо...

Всего записей: 121 | Зарегистр. 10-02-2006 | Отправлено: 02:58 02-03-2009
YNY

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
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.
 

Всего записей: 476 | Зарегистр. 18-05-2006 | Отправлено: 08:04 02-03-2009
el_verdugo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
YNY
Спасибо за инфу, буду пытаться что-нибудь сделать из этого...

Всего записей: 121 | Зарегистр. 10-02-2006 | Отправлено: 08:15 02-03-2009
YNY

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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

Всего записей: 476 | Зарегистр. 18-05-2006 | Отправлено: 08:21 02-03-2009
yazzi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте, подскажите плиз, как записать двоичный ключ в реестр.  
Записываю следующим образом выдает ошибку  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)
 


Всего записей: 98 | Зарегистр. 14-08-2007 | Отправлено: 14:42 03-03-2009
el_verdugo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yazzi
Примерно так

Код:
Set sh = CreateObject("WScript.Shell")
sh.RegWrite "HKLM\SOFTWARE\!MyKey\Value", &h78563412, "REG_BINARY"
Set sh = Nothing

На выходе будем иметь параметр Value типа REG_BINARY с шестнадцатеричным значением 12345678 в созданном ключе !MyKey

Всего записей: 121 | Зарегистр. 10-02-2006 | Отправлено: 04:42 04-03-2009
yazzi

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
el_verdugo
Спасибо не знаю почему, но каким то чудесным образом все заработало

Всего записей: 98 | Зарегистр. 14-08-2007 | Отправлено: 09:26 04-03-2009
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования. Часть 2
ShriEkeR (23-05-2011 23:06): Автоматизация администрирования. Часть 3


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.Board
© Ru.Board 2000-2020

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru

Рейтинг.ru