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

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

Автор: Master_Alex
Дата сообщения: 27.03.2006 14:57
ура заработало
RootFolderY = RootFolder & ThisYear & "\"

FreemanRU
спасибо
Автор: VelDmi
Дата сообщения: 27.03.2006 18:32
Каким образом можно сменить имя компьютера (vbs, cmd)?
Автор: Master_Alex
Дата сообщения: 27.03.2006 22:57
VelDmi
Ну а на скрипт центр заглянуть или погуглить?
Вот - гугл выдал:
[more]'Change computername.vbs
' Created by CrazyMatt
' The script changes both the local name and the name in AD
' netdom.exe must be in the same dir as the script (found on win2k3 srv resourcekit)
' The script uses "changename.xls" (in the same dir as script) where the old name is in Column 1 and the new in Colum 2
' Row 1 is used for description and shouldnt have any computernames

' The script first checks if the computer is reachable and then changes the name and reboots the computer.
'
' Last it writes to either Sucess.txt or Error.txt

sAdminName = InputBox("Is used to change the computername" & vbNewLine & vbNewLine & _
"Even if you have to specify an adminaccount here" & vbNewLine & _
"its important you are running the script with admin rights!!!" & vbNewLine & vbNewLine & _
"Enter an adminaccount with AD rights" & vbNewLine & "EG: user-adm",sAdminName)
If sAdminName = "" Then Wscript.Quit(1)
sAdminPwd = InputBox("Specify password" & vbNewLine & "", sAdminPwd)
If sAdminPwd = "" Then Wscript.Quit(1)
sReboot = MsgBox("Do you want the computer(s) to be restarted after the namechange?" &_
vbNewLine & "", vbYesNo)
sWaitTime = InputBox("Specify seconds to wait before scripts starts" & vbNewLine & "Default is 0", sWaitTime)
If sWaitTime = "" Then  sWaitTime = 0
sSleepTime = sWaitTime * 1000
Const ForAppending = 8
Set oShell = CreateObject("WScript.Shell")
Set oNetwork = CreateObject("WScript.Network")
sSkriptPath=left(wscript.scriptfullname,len(wscript.scriptfullname)-len(wscript.scriptname))
Set oOldName = CreateObject("Scripting.Dictionary")
Set oNewName = CreateObject("Scripting.Dictionary")
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open _
  (sSkriptPath & "changename.xls")
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set oSucessTextFile = oFSO.OpenTextFile _
  (sSkriptPath & "sucess.txt", ForAppending, True)
Set oErrorTextFile = oFSO.OpenTextFile _
  (sSkriptPath & "error.txt", ForAppending, True)
WScript.Sleep(sSleepTime)
'WScript.Echo "Waited for " & sWaitTime & " seconds. And " & sSleepTime  'Debugkod
'WScript.Echo sReboot & sPcRegKey           'Debugkod
i = 1
intRow = 2
on error resume next
Do Until objExcel.Cells(intRow,1).Value = ""
'wscript.echo introw
Set oOldName = objExcel.Cells(intRow,1)
Set oNewName = objExcel.Cells(intRow,2)
'wscript.echo oOldName & " will change name to " & oNewName    'Debugcode
WScript.Sleep(2000)   'Wits 2 sec for avoiding errors
'Checks if the computer is alive
Set oScriptExec = oShell.Exec("ping -n 2 -w 1000 " & oOldName)
strPingStdOut = LCase(oScriptExec.StdOut.ReadAll)

' Old pingstyle (for compability with pre win2k machines) could be be switched to win32 style ping if wanted
If InStr(strPingStdOut, "reply fr")  Then
LoggedIn
Else
'  WScript.Echo oOldName & ": Host unreachable"      'Debugkod
WriteError
End If


intRow = intRow + 1
Loop
objExcel.Quit
'==== Function Logged in check
'Checks if anyone is logged in to the puter (for deciding wich way the computer should be rebooted in)
Function Loggedin

on error resume next
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _ 
&  oOldName & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery _
  ("Select * from Win32_ComputerSystem")

For Each objComputer in colComputer
IF IsNull(objComputer.UserName) then
' Wscript.Echo oOldName & " is alive and noone logged in!"   'Debugkod
RenameComp
RebootComp
WriteSucess
else
'   Wscript.Echo oOldName & " is alive and " & objComputer.UserName & " is logged in." 'Debugkod
 RenameComp
If sReboot = 6 Then
Set oScriptExec = oShell.Exec("shutdown -r -m \\" & oOldName & " -t 600 -f -c " & Chr(34) & "Your computer will now be restarted for a namechange, plz close all open files and save them"& Chr(34) )
End If
WriteSucess
end if
next

End Function
'============

'==== Function Write Sucess
function WriteSucess
oSucessTextFile.WriteLine(oOldName & " was sucessfully renamed to " & oNewName)
End Function
'============
'==== Function Write Error
function WriteError
oErrorTextFile.WriteLine(oOldName & " was not renamed to "  & oNewName)
End Function
'============

'==== Function RenameComp
function RenameComp
'WScript.Echo "ReNameing.."   'Debugkod

Set oScriptExec = oShell.Exec("netdom renamecomputer " & oOldName & " /NewName:" & oNewName & " /UserD:<domain>\" & sAdminName & " /PasswordD:" & sAdminPwd & " /UserO:<domain>\" & sAdminName & " /PasswordO:" & sAdminPwd & " /Force")
' WScript.Echo "netdom renamecomputer " & oOldName & " /NewName:" & oNewName & " /UserD:<domain>\" & sAdminName & " /PasswordD:" & sAdminPwd & " /UserO:<domain>\" & sAdminName & " /PasswordO:" & sAdminPwd & " /Force" 

End Function
'============

'==== Function RebootComp
function RebootComp
on error resume Next

If sReboot = 6 Then
WScript.Sleep(10000)

Set objWMIService = GetObject("winmgmts:" _
  & "{impersonationLevel=impersonate,(Shutdown)}!\\" & _
      oOldName & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
  ("Select * from Win32_OperatingSystem")
'err.clear ' Debugcode
For Each objOperatingSystem in colOperatingSystems
  objOperatingSystem.Reboot()
Next
End If
End Function
'============

objTextFile.Close
set i = Nothing
wscript.echo "Done!"[/more]
Автор: VelDmi
Дата сообщения: 28.03.2006 03:36
Master_Alex
Пасибы. Думал как то попроще, например как смена IP при помощи netsh...
В скриптах особо не шарю, буду разбираться...
Автор: Master_Alex
Дата сообщения: 28.03.2006 08:52
Надо писать что тебе попроще сразу
Попроще - это
netdom RENAMECOMPUTER /?
Автор: squid
Дата сообщения: 30.03.2006 18:53
подскажите как можно изменить пароль локального админа на всех компах сети
есть домен на 2003
нашел информацию, но там пароль хранится в открытом виде
не хотелось бы чтобы его было видно
Автор: Uriu
Дата сообщения: 31.03.2006 06:21
squid
Скрипт можно зашифровать. Свободно можно скачать програмку для шифрования:
Microsoft Script Encoder. Это не очень надежное средство. Программка просто преобразовывает текс сценария в кодировку непригодную для чтения.

В Win XP\2003 имеется объект ScriptPW. Позволяет выполнять ввод текста с клавиатуры в консольном режиме без дублирования на экране. Пароль можно занести в переменную.
При запуске сценария, организовать диалог с пользователем, типа "введите пароль", вводим, заносим в переменную. Значение переменной подставляется в Ваш сценарий. Пример:

'Создаем объект ScriptPW
Set objPassw = CreateObject("ScriptPW.Password")
' Выводим подсказку для ввода пароля
WScript.StdOut.Write "Введите пароль: "
'Вводим пароль
strPassw = objPassw.GetPassword()

' Дальше просто пример:

'Создаем объект SWbemLocator
Set objLocator = CreateObject("WbemScripting.SWbemLocator")
'Соединяемся с пространством имен WMI от имени заданной учетной записи
Set objService = objLocator.ConnectServer(strComputer, strNamespace, strUser, strPassw)

strPassw подставьте в Вашем сценарии в нужное место.
Автор: VelDmi
Дата сообщения: 31.03.2006 11:19
Master_Alex
Скинь пожалуйста netdom на мыло. Не хочу весь кит качать. У меня Win XP Pro.
Научился изменять ИП с помощью netsh interface ip set address name="Подключение по локальной сети" source=static addr=192.168.100.77 mask=255.255.255.0 gateway=none.
Но при частой смене сетевых появляются Подключение по локальной сети 2, Подключение по локальной сети 3 и т.д. Как можно менять ИП у активного в данный момент подключения?
Нашел скриптик, но не могу разобраться в нем.
[more]
Вот скрипт для смены ip адреса.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & 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
[/more]
Давайте я обрисую задачу.
Мне необходимо, чтобы при загрузке компьютера (после клонирования) считывалась информация об ИП и имени компьютера из файла и если они не совпадают с текущими изменить их. Считывать информацию из файла я уже умею с помощью AutoIt. Сменить ИП могу при помощи netsh, но при этом должен знать заранее имя подключения.
Для смены имени компа нагуглил:
[more]
strComputer = "СтароеИмя"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colComputers = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer in colComputers
errReturn = ObjComputer.Rename("НовоеИмя")
WScript.Echo "Computer name is now " & objComputer.Name
Next
[/more]
но возможно netdom лучше.
Просьба подсказать оптимальный способ решения поставленной задачи.
Автор: RussianNeuroMancer
Дата сообщения: 01.04.2006 04:32
Может стоит менять адрес и имя в зависимости от мака? Меньше заморочек с файлами, более высокий уровень автоматизации. Только вопрос где взять мак?
Автор: squid
Дата сообщения: 01.04.2006 07:07
RussianNeuroMancer
echo %computername% > %username%.log
ipconfig /all | find "Физический адрес" >> %username%.log
вот батник с помощью которого можно взять мак, правда надо еще попрактиковаться, чтобы там сам мак был
Автор: VladimirKvach
Дата сообщения: 03.04.2006 05:56
Добрый день!

Пробовал тут вчера сделать, чтобы Aida формировала отчет не чаще раза в месяц. Не месяц спустя после прошлого запуска, а вначале месяца (первого числа или позже если выходной или праздник). Прововал назначенными заданиями рулить, но не дает сделать вместе "При входе в windows" и "По первым понедельникам месяца"

Вобщем плюнул на это дело и добавил "месячную" функциональность в свою старую пристарую утилиту. Если кому еще понадобится, то вот: www.iftoday.narod.ru

Удачи!
Владимир

Автор: urel
Дата сообщения: 03.04.2006 11:13
RussianNeuroMancer

ping computername/ip
arp -a [ip]

там будет ip - mac
Автор: Reznikoff
Дата сообщения: 03.04.2006 11:19
Товарищи, как переименовать сетевой диск в вин2000 не ручным способом (т.е. любым скриптом?
К примеру так не работает
Set shel = CreateObject("Shell.Application")
shel.NameSpace("W:")Self.Name = "Preved"


Ошибка: Требуется объект: 'shel.NameSpace(...)'
Код: 800A01A8
Источник: Ошибка выполнения Microsoft VBScript

Автор: Isia
Дата сообщения: 04.04.2006 11:57
Нашёл очень неплохой справочник по WMI
http://nukz.net/reference/wmi/index.html

Считаю, что нужно добавить в шапку.
---
Автор: Sk1f
Дата сообщения: 04.04.2006 14:38
Есть небольшой вопрос - в jscripte используется try ... catch. Какой естm аналог по функциональности в VBS.


Автор: RDV1984
Дата сообщения: 04.04.2006 18:56

Цитата:
WSH поддерживает языки сценариев VBScript и JScript, а также имеет возможность подключения любых других языков, например, таких, как Perl или Python

Как можно подключить например Perl ?
Автор: ptaha
Дата сообщения: 05.04.2006 01:07
RDV1984

Партизанский вариант. Идейно-правильный. Заюзать CPAN модуль для доступа к WMI. и юзать чистый перл
Автор: finderknowledge
Дата сообщения: 05.04.2006 11:18
RDV1984

Цитата:
Как можно подключить например Perl ?

необходимо использовать расширение файла wsf и соглашение XML по форматированию:
<Job ID="Perl in WSH">
    <script language=PerlScript>
        $WScript->Echo("Hello from Perl!");
    </script>
</Job>

Автор: Isia
Дата сообщения: 06.04.2006 18:32
Помогите мне запустить интерактивно (для начала) блокнот на удалённой машине. Перекопал кучу сэмплов, учудил даже такое - и всё на смарку:


Цитата:
Const HIDDEN_WINDOW = 1
strComputer = "buch"
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = HIDDEN_WINDOW
Set objProcess = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
result = objProcess.Create ("notepad.exe",null,objConfig,processid)


а эффекта ровно никакого.
Кто-то говорил, что можно запустить с использованием ScheduledJob, но я так нигде и не надыбал с его использованием ни одного примера.

Помогите пожалуйста.
Автор: aleksiom
Дата сообщения: 06.04.2006 23:19
Isia

Цитата:
Помогите мне запустить интерактивно (для начала) блокнот на удалённой машине.


Пример с microsoft -

strComputer = "RemoteComputer"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2:Win32_Process")
Error = objWMIService.Create("notepad.exe", Null, Null, intProcessID)
If Error = 0 Then
Wscript.Echo "Notepad was started with a process ID of " & intProcessID & "."
Else
Wscript.Echo "Notepad could not be started due to error " & Error & "."
End If

работает с win 2003, xp
Автор: inew
Дата сообщения: 07.04.2006 08:30
Для добавления пользователя в домен использую следующий скрипт:

Set objOU = GetObject("LDAP://OU=Интернет пользователи,dc=vstorg-int,dc=com")
Set objUser = objOU.Create("User", "cn=NewUser")
objUser.Put "sAMAccountName", "NewUser"
objUser.SetInfo
objUser.SetPassword "1234"
objUser.AccountDisabled=False
objUser.AccountExpirationDate = "01/01/1970"
objUser.SetInfo

Пользователь добавляется, но при просмотре в mmc оснастке (ad users and computers) у добавленного пользователя во вкладке “Учетная запись” поле “Имя входа пользователя” пустое, а поле “Имя входа пользователя (пред-windows 2000)” какое надо(“NewUser”).
И как поставить галочки “Запретить смену пароля пользователем” и “Срок действия пароля не ограничен”.


Добавлено:
С полем “Имя входа пользователя” разобрался, нужно добавить
objUser.Put "userPrincipalName", "NewUser"

Добавлено:
Срок действия пароля не ограничен:
Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000
objUser.Put "userAccountControl", ADS_UF_DONT_EXPIRE_PASSWD

Добавлено:
Осталось разобраться как поставить галочку:
“Запретить смену пароля пользователем”
Автор: Refugee
Дата сообщения: 07.04.2006 10:44
inew

Цитата:
“Запретить смену пароля пользователем”

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/adsi/adsi/user_cannot_change_password.asp
Автор: inew
Дата сообщения: 10.04.2006 03:00
Вот код для “Запретить смену пароля пользователем”

Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6
Const ADS_ACEFLAG_OBJECT_TYPE_PRESENT = &H1
Const CHANGE_PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}"
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100
Set objUser = GetObject("LDAP://cn=NewUser,OU=Интернет пользователи,dc=torg-int,dc=com")
Set objSD = objUser.Get("ntSecurityDescriptor")
Set objDACL = objSD.DiscretionaryAcl
arrTrustees = array("nt authority\self", "EVERYONE")
For Each strTrustee in arrTrustees
Set objACE = CreateObject("AccessControlEntry")
objACE.Trustee = strTrustee
objACE.AceFlags = 0
objACE.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT
objACE.Flags = ADS_ACEFLAG_OBJECT_TYPE_PRESENT
objACE.ObjectType = CHANGE_PASSWORD_GUID
objACE.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
objDACL.AddAce objACE
Next
objSD.DiscretionaryAcl = objDACL
objUser.Put "nTSecurityDescriptor", objSD
objUser. SetInfo

Выдается ошибка:
Строка 5
Символ 1
Ошибка: такой объект на сервере отсутствует
Автор: niichavo
Дата сообщения: 10.04.2006 13:06
inew

Цитата:
Осталось разобраться как поставить галочку:
“Запретить смену пароля пользователем”

Ваще-то это можно сделать через групповую политику...
Автор: VelDmi
Дата сообщения: 10.04.2006 16:37
пришлите пожалуйста утилитку NETDOM на мыло. (veldmi (собака) yandex.ru)
Автор: VelDmi
Дата сообщения: 11.04.2006 09:54
netdom нашел, пишет не найден домен. У меня домена нет, значит эта утилита не подходит?
Автор: stanru1
Дата сообщения: 11.04.2006 09:57
VelDmi
а зачем вам нетдом, если не секрет? ))
Автор: VelDmi
Дата сообщения: 11.04.2006 11:10
stanru1
Писал выше. Мне нужно переименовать компьютер из комстроки. ИП уже научился менять, а имя компьютера пока нет. Нашел скрипт, но в нем не разобрался. Может привести его сдесь?
Автор: urel
Дата сообщения: 11.04.2006 15:00
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colComputers = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")

For Each objComputer in colComputers
err = objComputer.Rename("WebServer")
Next
    
после - ребут

Добавлено:
покури TechNet Script Center Sample Scripts из шапки - там много есть
Автор: Prening
Дата сообщения: 13.04.2006 13:50
Добрый день!

Кто-нибудь знает как реализовать на vbs скрипте такую вещь:
Необходимо записывать в файл (желательно Excel) время входа залогиневшегося пользователя, с какого компьютера, какие сетевые диски и принтеры ему подключены.

Скрипт будет выполняться в момент входа пользователя на компьютер через групповую политику.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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