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

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

Автор: kekeke
Дата сообщения: 19.07.2006 22:15
решил я написать скрипт для cpu detection:

Цитата:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")
For Each objItem in colItems
Select Case objItem.Family
Case 13 strCPU = "Pentium II"
Case 14 strCPU = "Pentium"
Case 15 strCPU = "Celeron"
Case 16 strCPU = "Pentium II Xeon"
Case 17 strCPU = "Pentium III"
Case 28 strCPU = "Athlon"
Case 29 strCPU = "Duron"
Case 31 strCPU = "K6"
Case 130 strCPU = "Itanium"
Case 131 strCPU = "Athlon"
Case 132 strCPU = "Opteron"
Case 176 strCPU = "Pentium III Xeon"
Case 177 strCPU = "Pentium III"
Case 178 strCPU = "Pentium 4"
Case 179 strCPU = "Xeon"
Case 179 strCPU = "Xeon MP"
Case 182 strCPU = "AthlonXP"
Case 183 strCPU = "AthlonMP"
Case 184 strCPU = "Itanium 2"
Case 185
If objItem.Manufacturer = "GenuineIntel" Then
strCPU = "Pentium M"
Else
strCPU = "Opteron"
End If
Case 190 strCPU = "K7"
Case Else
If Left(objItem.Name, 18) = "AMD Athlon(tm) 64 " Then
strCPU = "Athlon64"
ElseIf Left(objItem.Name, 32) = "Genuine Intel(R) CPU T" Then
If Mid(objItem.Name, 33, 1) = "1" Then
strCPU = "Core Solo"
Else
strCPU = "Core Duo"
End If
Else
strCPU = "Unknown " & objItem.Family
End If
End Select
WScript.Echo strCPU & Chr(10) & objItem.Name
Next

цифры взяты отсюда
на Athlon 64 говорит "Unknown" (family=2, в док-ции тоже unknown), а на Opteron сказало "Pentium M"
погуглил, но скрипта для определения типа процессора так и не нашёл. неужели придётся ручками строку Name анализировать? может, видел кто-то подобный рабочий скрипт? (:

update: выложил обновлённую версию, понимающую Opteron и Core, критикуйте. и проверьте плз кто-то на Pentium M
Автор: svkov
Дата сообщения: 19.07.2006 22:36
Подскажите, как можно прописать на локальные рабочие станции в группу админов или опытных пользователей определенных юзверей, взятых из AD. Задача, в целом, сводится к тому, чтобы при загрузке компа в локальные админы прописать хозяев компьютеров при совпадении логина юзеа и имени компа (компы именуются по фамилиям юзеров).
Автор: ali1977
Дата сообщения: 19.07.2006 23:19
подскажите пжалста какой прогой скрипт писать (обязательно с мануалом)))
ситуация такова -имеется база данных файрберд 1.5 (помощник к ней интербейз)
база SGM.GDB в ней клиенты напартачили немного - там в программе не удаляются записи которые занесены неверно - разработчик говорит что надо писать скрипты и т.д. даже прогу прилагают ScriptRunnerSGM а как пользоватся не говорят )))- боятся видимо чегото
Автор: Sk1f
Дата сообщения: 20.07.2006 08:53
kaaaa

Как у тебя excel файл построен? Пример, какой-нибудь напиши. Что в какой ячейке находится?


Do Until objExcel.Cells(intRow,1).Value = "" - это условие выполнения. Т.е. цикл работает до тех пор, пока он не встретит пустую строку.


Добавлено:
ali1977 я програмлю на PrimalScript. И всем советую, классная программа.
Автор: ali1977
Дата сообщения: 20.07.2006 09:54

Sk1f

Цитата:
я програмлю на PrimalScript.

я вот нашел данную прогу версия 3.1.437 но хотел бы перед скачиванием узнать- а инструкция к применению там есть на русском языке)))?
Автор: Sk1f
Дата сообщения: 20.07.2006 10:52
ali1977 можешь скинуть мне email свой или постучаться в icq - 274411239. Я тебе пару хороших файлов пришлю.



urel, добрый день. Есть у меня один вопрос к тебе. Я вот никак не могу разобраться в принципе, как разобраться в работе с **.txt файлами
В качестве примера. Допустим у меня есть файл (блокнот) в котором информация:

Цитата:

A
B
C
D

1. Мне нужно считать каждую из строк и потом работать с ними. Ну например, сравнить с строкой E (этой строки в файле).
2. Или полученные строки использовать в каком-то действии, например это будут уже не строки, а цифры и считав текстовый файл, сделать такое действие - A + B +D - C.

Очень прошу, напиши что знаешь




Автор: kaaaa
Дата сообщения: 20.07.2006 11:29
Sk1f
Шапка такая:
OU | CN |SAM Account name|Password|First Name|Last Name| Mail |
Значения:
test|Иванов Иван| ivanov | 123456 | Иван | Иванов | ivanov@mail.ru|
Автор: FreemanRU
Дата сообщения: 20.07.2006 12:30
Sk1f

Цитата:
1. Мне нужно считать каждую из строк и потом работать с ними. Ну например, сравнить с строкой E (этой строки в файле).
2. Или полученные строки использовать в каком-то действии, например это будут уже не строки, а цифры и считав текстовый файл, сделать такое действие - A + B +D - C.

На скрипте или cmd это надо сделать?
если первое, то в Script Center много всего написано про это.
http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx?mfr=true
Автор: Sk1f
Дата сообщения: 20.07.2006 13:07
FreemanRU, на скрипте. Угу именно эти примеры и смотрю только не понятно нифига


Добавлено:
FreemanRU, хотел бы именно пример, которые решает мои предложенные задачи. А то пока смотрю в книгу, а вижу сам знаешь что
Автор: FreemanRU
Дата сообщения: 20.07.2006 13:15
Sk1f
Спрашивай, что не понятно....
Автор: Sk1f
Дата сообщения: 20.07.2006 13:24
FreemanRU, как скрипте работать со строчками в файле?

А то я пока все через excel делал, там есть простые ф-ции, к-е вызывают нужную строчку и столбец. А вот как использовать строчку из текстового файла, этого понять до конца не могу.
Автор: FreemanRU
Дата сообщения: 20.07.2006 13:38
Sk1f
Read a Text File into an Array
Разбираем данны скрипт...
Данная строка определяет константу. Используется при открытии файла.

Цитата:
Const ForReading = 1

Создается объект для всех операций с файлами

Цитата:
Set objFSO = CreateObject("Scripting.FileSystemObject")

Открываем файл для чтения

Цитата:
Set objTextFile = objFSO.OpenTextFile("c:\scripts\servers and services.txt", ForReading)

Читаем из файла, пока не найдем конец файла

Цитата:
Do Until objTextFile.AtEndOfStream

Читаем строку

Цитата:
strNextLine = objTextFile.Readline

Разделяем строку на массив

Цитата:
arrServiceList = Split(strNextLine , ",")

Дальше думаю всё понятно..

Цитата:

Wscript.Echo "Server name: " & arrServiceList(0)
For i = 1 to Ubound(arrServiceList)
Wscript.Echo "Service: " & arrServiceList(i)
Next
Loop


Собсьвенно вот это шаблон. Между Do Until objTextFile.AtEndOfStream и Loop
надо вызывать strNextLine = objTextFile.Readline, а затем делать со строкой всё что тебе надо.
Автор: Sk1f
Дата сообщения: 20.07.2006 13:56
FreemanRU спасибо. Вот только что вышел на то что это все методы и свойства объекта TextStream. Буду разбираться

А если я хочу сравнить две строчки, тогда нужно строчку делать регулярным выражением и уже работать, как с регулярным?


Добавлено:
FreemanRU, и еще если не трудно можешь объяснить зачем ты использовал Ubound.
И работа ф-ции Split? (что значит разделяем строку на массив)


Добавлено:
И чтобы совсем уже "добить". Могут ли скрипт работать с базами данных?

Добавлено:
2kaaaa,

Цитата:

Set RootDSE = GetObject("LDAP://RootDSE")
Set DefaultDomain = GetObject("LDAP://" & RootDSE.Get("DefaultNamingContext"))
WScript.Echo DefaultDomain.distinguishedName
WScript.Echo VbCrLf
On Error Resume Next
'----------------------------------------------------------------------------------'
' Text of Program
'----------------------------------------------------------------------------------'
path_file="c:\************************.xls"
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open (path_file)_

intRow = 2 ' начальная строчка в excel где начинается список

Do Until objExcel.Cells(intRow,1).Value = ""
Set objOU = GetObject("LDAP://" & "ou=" & objExcel.Cells(intRow, 1).Value & "," _
& RootDSE.Get("DefaultNamingContext"))
Set objUser = objOU.Create _
("User", "cn=" & objExcel.Cells(intRow, 3).Value)

objUser.SetPassword "" & objExcel.Cells(intRow, 4).Value
objUser.sAMAccountName = objExcel.Cells(intRow, 3).Value
objUser.GivenName = objExcel.Cells(intRow, 5).Value
objUser.SN = objExcel.Cells(intRow, 6).Value
objUser.userPrincipalName = "" & objExcel.Cells(intRow, 3).Value & "@" & "test.com.ru"[/b]
objUser.Put "mail", "" & objExcel.Cells(intRow, 7).Value
objUser.SetInfo
intRow = intRow + 1
Loop
objExcel.Quit


Посмотри CN при создании пользователя
Посмотри строчку где начинается список пользователей
Измени имя домена в строчке - objUser.userPrincipalName



Автор: kaaaa
Дата сообщения: 20.07.2006 19:50
Sk1fспасибо огромное.
Завтра на работе попробую.
Автор: enver
Дата сообщения: 20.07.2006 23:02
Господа, здравствуйте

можно ли программно, определить включенные компьютеры в сети и загасить их?
ну или как альтернатива, логоффнуть пользователей на них
Автор: Sk1f
Дата сообщения: 21.07.2006 09:10
enver можно
Автор: kaaaa
Дата сообщения: 21.07.2006 09:43
Sk1f
Спасибо еще раз.
Все работает.
А что надо дописать в этот скрипт, чтобы он добавлял пользователей и во вложенные OU
Автор: Sk1f
Дата сообщения: 21.07.2006 09:58
kaaaa, принцип такой -
Set objOU = GetObject("LDAP://" & "ou=test2" & ",ou=test1," & "ou=test" _
& RootDSE.Get("DefaultNamingContext"))

В AD - - это так

Цитата:

test.com.ru
ou=test
ou=test1
ou=test2


Автор: enver
Дата сообщения: 21.07.2006 10:03
Sk1f, Вас не затруднит ткнуть меня в нужном напрвлении?


Добавлено:
в частности интересует процедура Logoff
Автор: FreemanRU
Дата сообщения: 21.07.2006 10:19
Sk1f
Купи/скачай книжку по VBScript или VB. Там это всё расписано ооочень подробно.
Автор: Sk1f
Дата сообщения: 21.07.2006 10:26
FreemanRU ну я пока по интернету информацию ищу. Книга будет только через недели две.

А с базами данных нужно сейчас разобраться.

Автор: FreemanRU
Дата сообщения: 21.07.2006 10:56
Sk1f
а здесь не смотрел книжки?

ПО БД н-р вот, это вставка новой записи:

Код:
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "DSN=Inventory;"
objRecordset.CursorLocation = adUseClient
objRecordset.Open "SELECT * FROM Hardware" , objConnection, _
adOpenStatic, adLockOptimistic
Set colSoundCards = GetObject("winmgmts:").ExecQuery _
("Select * from Win32_SoundDevice")
For Each objSoundCard in colSoundCards
objRecordset.AddNew
objRecordset("ComputerName") = objSoundCard.SystemName
objRecordset("Manufacturer") = objSoundCard.Manufacturer
objRecordset("ProductName") = objSoundCard.ProductName
objRecordset.Update
Next
objRecordset.Close
objConnection.Close
Автор: kaaaa
Дата сообщения: 21.07.2006 12:48
2Sk1f
Скрипт работает, только почему то он создает пользователей с пустыми паролями
Автор: Sk1f
Дата сообщения: 21.07.2006 12:54
kaaaa хммм а тебе именно нужны те пароли, что ты устанавливаешь?
Просто может проще тогда задать свойства - сменить пароль при следующей записи
и нга Домене настроить миним. длину пароля и срок действия
Автор: kaaaa
Дата сообщения: 21.07.2006 13:00
Sk1f, к сожалению, нужны именно эти пароли
Автор: Sk1f
Дата сообщения: 21.07.2006 13:23
посмотри http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx?mfr=true
Автор: kaaaa
Дата сообщения: 21.07.2006 13:25
Sk1f
вот нарыл такой скрипт:
Option Explicit
Dim objRootLDAP, objContainer, objUser, objShell
Dim objExcel, objSpread, intRow
Dim strUser, strOU, strSheet
Dim strCN, strSam, strFirst, strLast, strPWD, strdisplay, strdesc, strprinc, strinit
' -------------------------------------------------------------'
' Important change OU= and strSheet to reflect your domain
' -------------------------------------------------------------'
strOU = "OU=Accounts ," ' Note the comma
strSheet = "d:\scripts\UserSpread1.xls"
' Bind to Active Directory, Users container.
Set objRootLDAP = GetObject("LDAP://rootDSE")
Set objContainer = GetObject("LDAP://" & strOU & _
objRootLDAP.Get("defaultNamingContext"))
' Open the Excel spreadsheet
Set objExcel = CreateObject("Excel.Application")
Set objSpread = objExcel.Workbooks.Open(strSheet)
intRow = 3 'Row 1 often contains headings
' Here is the 'DO...Loop' that cycles through the cells
' Note intRow, x must correspond to the column in strSheet
Do Until objExcel.Cells(intRow,1).Value = ""
strSam = Trim(objExcel.Cells(intRow, 1).Value)
strCN = Trim(objExcel.Cells(intRow, 2).Value)
strFirst = Trim(objExcel.Cells(intRow, 4).Value)
strLast = Trim(objExcel.Cells(intRow, 3).Value)
strPWD = Trim(objExcel.Cells(intRow, 5).Value)
strdisplay = Trim(objExcel.Cells(intRow, 6).Value)
strdesc = Trim(objExcel.Cells(intRow, 7).Value)
strprinc = Trim(objExcel.Cells(intRow, 8).Value)
strinit = Trim(objExcel.Cells(intRow, 9).Value)
' Build the actual User from data in strSheet.
Set objUser = objContainer.Create("User", "cn=" & strCN)
objUser.sAMAccountName = strSam
objUser.givenName = strFirst
objUser.sn = strLast
objUser.displayName = strdisplay
objUser.description = strdesc
objUser.userPrincipalName = strprinc
objUser.initials = strinit
objUser.SetInfo
' Separate section to enable account with its password
objUser.userAccountControl = 512
objUser.pwdLastSet = 0
objUser.SetPassword strPWD
objUser.SetInfo
intRow = intRow + 1
Loop
objExcel.Quit
WScript.Quit

щас попробую
Автор: Sk1f
Дата сообщения: 24.07.2006 13:58
enver

Цитата:

'Restarts a computer.

strComputer = "atl-dc-01"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Reboot()
Next


Цитата:

'Shuts down the local computer.

Set colOperatingSystems = GetObject("winmgmts:{(Shutdown)}").ExecQuery("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Win32Shutdown(1)
Next


Цитата:

ShutDown "st0", "PowerOff"
на
ShutDown "твой_комп", "Чего_ты_там_хочешь"

варианты "Чего_ты_там_хочешь":
"logoff"
"logoff_force"
"shutdown"
"shutdown_force"
"reboot"
"reboot_force"
"poweroff"
"poweroff_force"
Надеюсь переводить не надо...
------------------
' use "." for local computer
' Use "PowerOff_Force" for a forced poweroff

On error resume next
strComputer = "st0"
ShutDown strComputer, "PowerOff"

Sub ShutDown(sNode, sAction)

Const EWX_LOGOFF = 0
Const EWX_SHUTDOWN = 1
Const EWX_REBOOT = 2
Const EWX_FORCE = 4
Const EWX_POWEROFF = 8

on Error Resume Next

Set oWMI = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate,(Shutdown)}!\\" _
& sNode & "\root\cimv2")

Set colOperatingSystems = oWMI.ExecQuery _
("Select * from Win32_OperatingSystem")
For Each obj in colOperatingSystems
Set oOS = obj : Exit For
Next

sAction = LCase(sAction)

Select Case sAction
Case "logoff"
iCmd = EWX_LOGOFF
Case "logoff_force"
iCmd = EWX_LOGOFF + EWX_FORCE
Case "shutdown"
iCmd = EWX_SHUTDOWN
Case "shutdown_force"
iCmd = EWX_SHUTDOWN + EWX_FORCE
Case "reboot"
iCmd = EWX_REBOOT
Case "reboot_force"
iCmd = EWX_REBOOT + EWX_FORCE
Case "poweroff"
iCmd = EWX_POWEROFF
Case "poweroff_force"
iCmd = EWX_POWEROFF + EWX_FORCE
Case Else
' Default value
iCmd = EWX_POWEROFF
End Select

oOS.Win32shutdown iCmd
EndSh:
End Sub
----------------

Автор: Jovanotti
Дата сообщения: 24.07.2006 15:47
ALL
Уважаемые !
Давайте облегчим себе и другим коллегам жизнь ....
Помещайте полезные на ваш взгляд скрипты в шапочку.
Под ссылку HOW-TO она ведь для этого и предназначена.
Автор: FreemanRU
Дата сообщения: 24.07.2006 16:25
Jovanotti
Они бы с радостью, да прав у них нет....
Sk1f
А не проще

Код:
shutdown -?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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