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

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

Автор: vSoul
Дата сообщения: 04.05.2009 22:17
Решил свою проблему, вот листинг скрипта (правда, помимо решения описанной в предыдущем посте задачи, решены и другие):
Удаление Tortoise SVN и Visual SVN любой версии (установленных только как MSI пакеты)

[more]
Dim strValue
Dim strNewValue
Dim strA
strA = 2

Const HKEY_LOCAL_MACHINE = &H80000002
Public WShell

WScript.Echo "Перед удалением Tortoise SVN и Visual SVN закройте, пожалуйста, все программы."

strComputer = "."
Set WShell = Wscript.CreateObject("Wscript.Shell")
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys

For Each subkey In arrSubKeys
strValueName = "DisplayName"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "\" & subkey , strValueName, strValue
If Left(strValue,11) = "TortoiseSVN" Then
strValueName = "UninstallString"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "\" & subkey , strValueName, strValue
strNewValue = Mid(strValue,15,200)
End If
Next

Set WshShell = CreateObject("WScript.Shell")
Return = WshShell.Run ("%windir%\system32\msiexec.exe /qb /norestart /x" & strNewValue, 1, True)
If Return = 3010 OR Return = 1641 OR Return = 0 Then
Return = WshShell.Run ("cmd /k RD /S /Q ""%USERPROFILE%\Application Data\Subversion\"" & Exit", 1, True)
Return = WshShell.Run ("cmd /k RD /S /Q ""%USERPROFILE%\Application Data\TortoiseSVN\"" & Exit")
Return = WshShell.Run ("cmd /k RD /S /Q ""%USERPROFILE%\Local Settings\Application Data\TSVNCache\"" & Exit", 1, True)
Return = WshShell.Run ("cmd /k RD /S /Q ""%ALLUSERSPROFILE%\Application Data\Subversion\"" & Exit", 1, True)
Return = WshShell.Run ("cmd /k RD /S /Q ""%ProgramFiles%\TortoiseSVN\"" & Exit", 1, True)
Else
strA = (strA - 1)
Call ExitWithErrorTortoise
End If

For Each subkey In arrSubKeys
strValueName = "DisplayName"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "\" & subkey , strValueName, strValue
If Left(strValue,9) = "VisualSVN" Then
strValueName = "UninstallString"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath & "\" & subkey , strValueName, strValue
strNewValue = Mid(strValue,15,200)
End If
Next

Set WshShell = CreateObject("WScript.Shell")
Return = WshShell.Run ("%windir%\system32\msiexec.exe /qb /norestart /x" & strNewValue, 1, True)
If Return = 3010 OR Return = 1641 OR Return = 0 Then
Return = WshShell.Run ("cmd /k RD /S /Q ""%ProgramFiles%\VisualSVN\"" & Exit", 1, True)
Else
strA = (strA - 1)
Call ExitWithErrorVisual
End If

If strA > 0 Then
areYousure = MsgBox("Пожалуйста, перезагрузитесь. Перезагрузить компьютер?", vbYesNo + vbQuestion,"Перезагрузка")
If areYouSure = "7" Then
Call SQuit
Else
strComputer = "."
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
End If
Else call SQuit
End If

sub SQuit
Wscript.quit
End Sub

sub ExitWithErrorTortoise
Wscript.Echo "Ошибка при удалении Tortoise SVN. Удалите Tortoise SVN вручную. Переход к удалению Visual SVN."
End Sub

sub ExitWithErrorVisual
Wscript.Echo "Ошибка при удалении Visual SVN. Удалите Visual SVN вручную. Завершение работы скрипта."
Call SQuit
End Sub
[/more]
Автор: YNY
Дата сообщения: 05.05.2009 08:05

Цитата:
VladKor

скажи а на кой тебе массив в котором только одно значение "." -- указывает на комп, на котором запущен скрипт???
[more=просмотр АД только из компа в домене]When connecting remotely to an Active Directory server other than the one in your current domain, you must specify the name of a computer that is already a member of the domain belonging to the Active Directory you want. For example:

\\RemoteComputer\root\directory\LDAP
[/more]

Добавлено:

Цитата:
vSoul
Решил свою проблему, в ...
на самом деле ты просто пошарил в одной ветке, а не по всему реестру
Автор: yazzi
Дата сообщения: 05.05.2009 14:15
Добрый день, подскажите плиз, как с помощью скрипта можно определить зашел пользователь в домен или локально на машину?
Автор: Attid
Дата сообщения: 05.05.2009 15:25
выполни в консоле SET и сравни результат
Автор: yazzi
Дата сообщения: 06.05.2009 08:06
Это мне не подходит надо чтобы это автоматически делалось а глазками смотреть.
Автор: Attid
Дата сообщения: 06.05.2009 09:35
ну и проверяешь нужную переменную среды. а потом хоть письма пиши хоть пиликай злобно.
Автор: yazzi
Дата сообщения: 06.05.2009 10:39
мне надо на vbs
Автор: astashov
Дата сообщения: 06.05.2009 19:40
День добрый ребяты.

Вопрос у меня вот какой. Мне надо у созданного(через батник используя net user) пользователя установить признак "Потребовать смену пароля при следующем входе в систему". Но никак не могу найти как именно это сделать.
Помоги кто словом, кто скриптом.
Спасибо.
Автор: Oldster
Дата сообщения: 06.05.2009 20:20
yazzi
напиши простой скрипт типа:
echo %username% logon %computername% >> log.txt
и поставь на logon пользователя в политике домена, если запись в log.txt появилась, значит юзер зашел в домен, если нет - знаит локально или не вошел вообще.
Автор: naPmu3aH
Дата сообщения: 06.05.2009 21:34
astashov

Код:
strUserDN = "<UserDN>" ' e.g. cn=manager1,ou=Sales,dc=greatcorp,dc=com

set objUser = GetObject("LDAP://"; & strUserDN)
objUser.Put "pwdLastSet", 0
objUser.SetInfo
Автор: yazzi
Дата сообщения: 07.05.2009 11:06
Oldster
у меня 600 пользователей и каждый будет читать лог. не надо на vbs так как уже написан сервис на vbs для ограничения одновременных сессий и начальник хочет чтобы еще запретили локальный вход на комп.
Должен же существовать легкий способ просмотра как пользователь вошел
Автор: YURETS777
Дата сообщения: 07.05.2009 13:31
Можно ли при помощи VBS сбэкапить эвенты с очисткой ?
Автор: YNY
Дата сообщения: 08.05.2009 05:04

Цитата:
yazzi
начальник хочет а ключей от комнаты где деньги лежат он не хочет???



Добавлено:
если хочешь запретить локальный вход, то отключи, удали "все" локальные учетные записи, кроме админа (из папки C:\Documents and Settings\*****), зачем голову греть еще чем-то еще??? СПЕЦИАЛЬНО для извращенцев можно и так: читаешь эвентлог безопасности и вылавливаешь там логон юзера,.......

Добавлено:

Цитата:
YURETS777

тут ранее я видел прикольный пример, в котором отсылались нажатия клавишь, можно попробовать с его помощью автоматизировать последовательность ручного метода, а за одно и юзеров попугать )))))))))))))))))

Добавлено:

Цитата:
yazzi

вот еще вариант: цепляешь на логон юзера в комп [more=вот это]
strComputer = "." ' или идешь по списку "RemoteComputer" со своего компа
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")

For Each objComputer in colComputer
Wscript.Echo objComputer.UserName
Next
'(скрипт показывает текущего залогиневшегося юзера)

[/more] и если домен совпадает с именем компа-значит логинется локальный юзер
Автор: yazzi
Дата сообщения: 08.05.2009 07:16
Все спасибо буду пробывать
Автор: 5555555
Дата сообщения: 08.05.2009 09:29
Периодически возникает необходимость передавать заказчику определенные обьемы информации. Сейчас это - фтп. Вроде бы и ничего особо плохого, но хотелось бы примерно следующее:
юзер сам размещает информацию в определенное место на сервере для передачи, а нечто публикует эту информацию для заказчика, при этом автоматически генерируя реквизиты доступа (в виде логина, пароля, время доступа) к данной информации и отправляя эти реквизиты на почту юзера для передачи заказчику.
Вообщем-то не так уж и не реально, но может есть у кого готовое решение?
Автор: vicwanderer
Дата сообщения: 08.05.2009 14:19
помогите написать скрипт, а то командные файлы пути UNC не поддерживают.
Хочу логон скрипт, который проверял бы наличие файла на компьютере пользователя. Если файл отсутствует, то выполняется файл с общедоступной шары

Что-то типа такого
IF EXIST (C:\Program Files\Common Files\Microsoft Shared\OFFICE12\1033\xlsrvintl.dll)
exit
else
\\...\Office_Compatibillity_Pack\O12Conv.msi
endif
Автор: astashov
Дата сообщения: 08.05.2009 17:37
to naPmu3aH

Цитата:

Код:

strUserDN = "<UserDN>" ' e.g. cn=manager1,ou=Sales,dc=greatcorp,dc=com

set objUser = GetObject("LDAP://"; & strUserDN)
objUser.Put "pwdLastSet", 0
objUser.SetInfo


Я немного не силен в этом, можно немного поподробнее. Или где про это прочитать? Мне это вообще-то надо для инсталлятора. В нем с помощью net user создается пользователь с правами администратора, НО! мне необходимо чтоб у него стоял флажок об изменении пароля при первом входе в систему. Инсталлятор Inni Setup(ну это так, для информации).
Автор: vicwanderer
Дата сообщения: 12.05.2009 06:45
Задача видоизменилась
IF not EXIST (C:\Program Files\Common Files\Microsoft Shared\OFFICE12\1033\xlsrvintl.dll)
net use m: \\..\...\Office_Compatibillity_Pack\
m:\O12Conv.msi
else
exit
endif

Как запустить O12Conv.msi с правами доменного админа?
И как отсоеденить диск m: , чтобы пользователи им не пользовались? Может через 600 сек? Тогда какая команда в командных файлах отвечает за задержку?
Автор: north_crow
Дата сообщения: 12.05.2009 08:52
а не проще твой msi распространить вот таким образом???
GPO - Конфигурация компьютера - Конфигурация программ - Установка программ

и тогда всем у кого этого не установлено - само установится и без прав админа!
Автор: vicwanderer
Дата сообщения: 12.05.2009 14:41
north_crow, не проще. В сети установлен office 2003 и 0ffice 2007. Если установить так как ты сказал, то на с 0ffice 2007 тоже поставится данный пакет и насколько стабильно будут работать компьютеры с 0ffice 2007 и пакетом совместимости.
Автор: Lamerok
Дата сообщения: 12.05.2009 16:07
vicwanderer
если ты будешь ставить один и тот же релиз, что у тебя уже установлен на рабочих станциях, то проблем не будет. Проверено. После того как накатываешь таким образом софт, он удаляется через GPO без проблем.
Автор: Attid
Дата сообщения: 13.05.2009 13:18
vicwanderer для этого можно копьютеры в разные ветки засовывать, а там для каждого свое.
Автор: 5555555
Дата сообщения: 13.05.2009 13:51

Цитата:
копьютеры в разные ветки засовывать, а там для каждого свое.
только так и надо делать
Автор: yazzi
Дата сообщения: 13.05.2009 13:57
5555555
Создаешь разные подразделения в GPO например 2003 и 2007 и раздаешь каждому свое
Автор: 5555555
Дата сообщения: 13.05.2009 14:07
yazzi

Цитата:
Создаешь разные подразделения в GPO например 2003 и 2007 и раздаешь каждому свое
к чему ты это написал? так все давно и делают, как я и написал...
Автор: yazzi
Дата сообщения: 13.05.2009 15:25
что то просто затупил
Автор: histrio
Дата сообщения: 18.05.2009 08:56
Скрипт http://www.microsoft.com/technet/scriptcenter/scripts/network/client/list/nwlsvb01.mspx был переписан на JScript следующим образом:


Код:
var objWMIService = GetObject("winMgmts:");
var IPConfigSet = new Enumerator(objWMIService.ExecQuery ("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE"));
while (!IPConfigSet.atEnd())
{
IPConfig = IPConfigSet.item();
if (IPConfig.IPAddress!=undefined)
{
WScript.Echo(IPConfig.MACAddress)
for (var i in IPConfig.IPAddress)
WScript.Echo(IPConfig.IPAddress[i])
}
IPConfigSet.moveNext()
}
Автор: Real Root
Дата сообщения: 18.05.2009 10:06
Коллеги! Рад вас всех видеть, давненько меня тут не было.
Подскажите пожалуста есть ли возможно с помощью скрипта удалить Default Gateway? Можно через WMI, можно через любую стороннюю утилиту - главное чтоб работало быстро.
А суть проблемы такова: Имеется скрипт, который в зависимости от параметров, меняет значение Default Gateway (перенастройка на другой модем и т.д.). Все бы хорошо, но почемуто, если уже был до этого пробит другой Gateway, то его смена на новый занимет больше минуты (может около 2-х). Причем скрипт отрабатывает мгновенно, в свойствах сетевого подключения тоже виден наш новый gateway, а вот по ipconfig /all видны сразу два гетвея - старый (идет первым) и новый. Так вот, старый Gateway уничтожается лишь через минуту или более, тем самымй все это время сеть не работает.

Вобще скрпит для компьютерного клуба - в зависимости от тарифного плана использщуется разный gAteway для ограничений скорости, или же наоборот для высокой скорости к локальным ресурсам провайдера.
Автор: niichavo
Дата сообщения: 18.05.2009 16:11
Real Root
Если есть скрипт, меняющий Gateway, то попробуй ему подсунуть не что-то типа "192.168.0.1", а "". Для смены WINS через скрипт такое у мя работало вроде.
Автор: attaattaatta
Дата сообщения: 18.05.2009 16:51
Real Root

Returning IP Configuration Data
WMI script that returns configuration data similar to that returned by IpConfig.

[more]
Цитата:

' Returning IP Configuration Data
' WMI script that returns configuration data similar to that returned by IpConfig.

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & & strComputer & "\root\cimv2")
Set colAdapters = objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = True")

n = 1
WScript.Echo

For Each objAdapter in colAdapters

WScript.Echo "Network Adapter " & n
WScript.Echo "================="
WScript.Echo " Description: " & objAdapter.Description
WScript.Echo " Physical (MAC) address: " & objAdapter.MACAddress
WScript.Echo " Host name: " & objAdapter.DNSHostName

If Not IsNull(objAdapter.IPAddress) Then
For i = 0 To UBound(objAdapter.IPAddress)
WScript.Echo " IP address: " & objAdapter.IPAddress(i)
Next
End If

If Not IsNull(objAdapter.IPSubnet) Then
For i = 0 To UBound(objAdapter.IPSubnet)
WScript.Echo " Subnet: " & objAdapter.IPSubnet(i)
Next
End If

If Not IsNull(objAdapter.DefaultIPGateway) Then
For i = 0 To UBound(objAdapter.DefaultIPGateway)
WScript.Echo " Default gateway: " & objAdapter.DefaultIPGateway(i)
Next
End If

WScript.Echo
WScript.Echo " DNS"
WScript.Echo " ---"
WScript.Echo " DNS servers in search order:"

If Not IsNull(objAdapter.DNSServerSearchOrder) Then
For i = 0 To UBound(objAdapter.DNSServerSearchOrder)
WScript.Echo " " & objAdapter.DNSServerSearchOrder(i)
Next
End If

WScript.Echo " DNS domain: " & objAdapter.DNSDomain

If Not IsNull(objAdapter.DNSDomainSuffixSearchOrder) Then
For i = 0 To UBound(objAdapter.DNSDomainSuffixSearchOrder)
WScript.Echo " DNS suffix search list: " & objAdapter.DNSDomainSuffixSearchOrder(i)
Next
End If

WScript.Echo
WScript.Echo " DHCP"
WScript.Echo " ----"
WScript.Echo " DHCP enabled: " & objAdapter.DHCPEnabled
WScript.Echo " DHCP server: " & objAdapter.DHCPServer

If Not IsNull(objAdapter.DHCPLeaseObtained) Then
utcLeaseObtained = objAdapter.DHCPLeaseObtained
strLeaseObtained = WMIDateStringToDate(utcLeaseObtained)
Else
strLeaseObtained = ""
End If
WScript.Echo " DHCP lease obtained: " & strLeaseObtained

If Not IsNull(objAdapter.DHCPLeaseExpires) Then
utcLeaseExpires = objAdapter.DHCPLeaseExpires
strLeaseExpires = WMIDateStringToDate(utcLeaseExpires)
Else
strLeaseExpires = ""
End If
WScript.Echo " DHCP lease expires: " & strLeaseExpires

WScript.Echo
WScript.Echo " WINS"
WScript.Echo " ----"
WScript.Echo " Primary WINS server: " & objAdapter.WINSPrimaryServer
WScript.Echo " Secondary WINS server: " & objAdapter.WINSSecondaryServer
WScript.Echo

n = n + 1

Next

Function WMIDateStringToDate(utcDate)
WMIDateStringToDate = CDate(Mid(utcDate, 5, 2) & "/" & _
Mid(utcDate, 7, 2) & "/" & _
Left(utcDate, 4) & " " & _
Mid (utcDate, 9, 2) & ":" & _
Mid(utcDate, 11, 2) & ":" & _
Mid(utcDate, 13, 2))
End Function
[/more]

This is to set a static ip address but does the subnet and gateway

[more]
Цитата:


'This is to set a static ip address but does the subnet and gateway

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
[/more]

Cmd


Цитата:
netsh interface ip set address gateway=172.26.1.1 "Local Area Connection"

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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