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

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

Автор: YNY
Дата сообщения: 04.07.2010 12:55
jek1976 ну вы по ходу спец, хотя в начале сеанса пользователь не может ничего изменить, но раз так как вы говорите, то зачем спрашиваете? -- ofTop!
Автор: 17cross76
Дата сообщения: 08.07.2010 05:16
Подскажите как через WMI реализовать перезагрузку компа на котором работает http сервис при зависании этого сервиса(прога для видеонаблюдения вешается где-то раз в сутки и требуется ресет).
Автор: YNY
Дата сообщения: 08.07.2010 09:49
17cross76, может попробуещь (на примере explorer.exe) [more= убить-запустить]
strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
'ищем процесс
Set colProcesses = objWMIService.ExecQuery( "Select * from Win32_Process " & "Where Name = 'explorer.exe'")

dim rez

if (colProcesses.Count<>0) then
    'msgbox "процесс RDP запущен"
    rez=msgbox ("Искомый процесс запущен, остановим его?",vbYesNo, "Чего хотим")
    rez=rez *(-1)
else
    rez=msgbox ("Искомый процесс НЕ запущен, запустим его?",vbYesNo, "Чего хотим")
end if

select case rez
    case 6 'Yes    7-No
            
            Set objProcess = GetObject( "winmgmts:root\cimv2:Win32_Process")
            errReturn = objProcess.Create( "explorer.exe", null, objConfig, intProcessID)
    case -6 'destroying
        For Each objProcess in colProcesses
            objProcess.Terminate()
        Next
end select
[/more]
процесс для начала?
И как вдруг Http связано с видеонаблюдением???
Автор: jek1976
Дата сообщения: 08.07.2010 09:56

Цитата:
jek1976 ну вы по ходу спец,
Был бы спец, сюда бы не обращался.


Скажите, а нет ли встроенных средств в винде, которые позволили бы держать папку локального профиля в Documents & Settings ограниченное время, а потом удалять его???
Автор: BVV63
Дата сообщения: 08.07.2010 10:12
Приветствую всех.
Данный вопрос я уже задавал в "Операционные системы" -> "Microsoft Windows" -> "Задачи на bat-файлах 8". Надеюсь, модераторы не слишком рассердятся, если я его повторю здесь (поскольку здешняя аудитория (среднестатистически) в этом направлении разбирается лучше).
Как из батника временно блокировать работу RDP, дабы при его исполнении пользователи не цеплялись к серваку? Служба "Terminal Services" останавливаться не желает.
Вообще-то задачу я решил, выкидывая юзеров из группы "Remote Desktop Users" и сохраняя их в переменной (с последующим восстановлением из неё). По некоторым причинам такой подход мне не очень нравится. Нет ли другого варианта (без использования файервола(!))?

Добавлено:
jek1976
Может эту учётку в группу гостей добавить? При разлогинивании пользователя она удалится.
Автор: jek1976
Дата сообщения: 08.07.2010 10:39

Цитата:
Может эту учётку в группу гостей добавить?

В том то и дело, что в организации развернута ActiveDirectory и добавлением/убавлением пользователей занимаемся не мы лично. Единственное, на что хватает наших административных прав - это рулить локальными профилями, остающимися на нашей группе машин после сеанса юзеров. Вот с этими папками профилей, а точнее, с проблемой переполнения диска, которую они доставляют, и хочется порешить раз и навсегда.
Автор: BVV63
Дата сообщения: 08.07.2010 10:56
jek1976

Цитата:
Единственное, на что хватает наших административных прав - это рулить локальными профилями, остающимися на нашей группе машин после сеанса юзеров.

Если пользовательские профили перемещаемые, проще использовать политику.
gpedit.msc -> "Local Computer Policy" -> "Computer Configuration" -> "Administrative Templates" -> "System" -> "User Profiles" -> опция "Delete cached copies of roaming profiles".
Ещё как вариант, добавить доменных пользователей (<Domain>\Domain Users) в группу гостей на локальных машинах.

Добавлено:
Ну, или просто грязно их поубивать. Запланировать задание - батник. Что-нибудь вроде такого:

Код: For /F "Tokens=*" %%A In ('Dir "C:\Documents and Settings"') Do (
If /I "%%A" NEq "All Users" (
If /I "%%A" NEq "Default User" (
If /I "%%A" NEq "Local Service" (
If /I "%%A" NEq "Network Service" (
RmDir /Q /S "C:\Documents and Settings\%%A")))))
Автор: jek1976
Дата сообщения: 08.07.2010 12:15

Цитата:
опция "Delete cached copies of roaming profiles"

О! Я специально у нашего главного админа выспрашивал, а можно ли их не сохранять средствами самой винды... Он сказал, что нельзя. А тут вот какое дело!

Но ведь это локальная политика, а ее приоритет ниже политики домена.

Добавлено:

Цитата:
Ну, или просто грязно их поубивать. Запланировать задание - батник. Что-нибудь вроде такого:


Код:
For /F "Tokens=*" %%A In ('Dir "C:\Documents and Settings"') Do (
If /I "%%A" NEq "All Users" (
If /I "%%A" NEq "Default User" (
If /I "%%A" NEq "Local Service" (
If /I "%%A" NEq "Network Service" (
RmDir /Q /S "C:\Documents and Settings\%%A")))))

Автор: BVV63
Дата сообщения: 08.07.2010 12:57
jek1976

Цитата:
Но ведь это локальная политика, а ее приоритет ниже политики домена.

Если доменная политика в отношении этого не определена, то она не страшна. А если определена, что ж,
есть одна хитрость, как отключить вообще исполнение любых (включая локальную) политик на компе: разрегистрировать библиотеку scecli.dll (regsvr32 /u scecli.dll).
Тогда удаление профилей нужно задействовать вручную, правкой реестра. Под ключом [HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] создать REG_DWORD-параметр "DeleteRoamingCache" и установить его значение вручную.


Добавлено:

Цитата:
а они в этот момент синхронизируются.

А они синхронизируются? Или подразумевается, что пользователи начали цепляться?

Цитата:
и при загрузке винды он начал удалять профили

Можно в планировщике задать время, когда пользователи уже не работают. Затем этот же батник выключит комп.
Автор: jek1976
Дата сообщения: 08.07.2010 13:19

Цитата:
А они синхронизируются?

А то!



Цитата:
Можно в планировщике задать время, когда пользователи уже не работают.

УЖЕ или ЕЩЕ не работают?
Автор: YNY
Дата сообщения: 08.07.2010 18:10

Цитата:
О! Я специально у нашего главного админа выспрашивал, а можно ли их не сохранять средствами самой винды... Он сказал, что нельзя. А тут вот какое дело!

Но ведь это локальная политика, а ее приоритет ниже политики домена.

Блин ты в натуре упертый:
1) я же тебе дал ссылку, читай там все написано......;
2) если тебе что-то сказал админ это еще не значит что он все знает;

3)С чего ты взял что это локальная политика???
Удалять кэшированные копии перемещаемых профилей

(Delete cached copies of roaming profiles)    Конфигурация компьютера\
Административные шаблоны\
Система\
Профили пользователей

(Computer Configuration\

Administrative Templates\

System\

User Profiles)    Определяет, будет ли сохраняться копия пользовательского перемещаемого профиля на жестком диске локального компьютера при выходе пользователя из системы. Эта политика и другие связанные с ней политики из данной папки совместно определяют стратегию управления пользовательскими профилями, хранящимися на удаленных серверах. В частности, они определяют действия системы в тех случаях, когда требуется длительное время для загрузки профиля.
Использование этой политики должно обеспечить синхронизацию и автоматическое удаление локольной копии!!!
4)ставь на выключение компа (через локальные ГПО) удаление ненужных профилей (можно это намутить более грубо воткнув в реестре вместо хранителя экрана, но выставив длдя его запуска время, скрипт, кот будет проверять залогин юзера и если это SYSTEM, то удалять ненужные профили) если все прокатит то ошибок не будет, но лучше заставить админа выполнить пункт 3!!!

Добавлено:

Цитата:
BVV63

дави "версия для печати" и ищи Автор: sirDaemon, Отправлено:17:10 21-09-2009 там про RDP, но что значит "лужба "Terminal Services" останавливаться не желает."? Думаю если вручную ее остановить то выйдет вопрос о том, что типо отвалятся пользователи, после + ответа она остановится.
Автор: jek1976
Дата сообщения: 08.07.2010 20:16
YNY
ОК, сделаю.
Автор: BVV63
Дата сообщения: 09.07.2010 05:09
YNY

Цитата:
но что значит "лужба "Terminal Services" останавливаться не желает."? Думаю если вручную ее остановить то выйдет вопрос о том, что типо отвалятся пользователи, после + ответа она остановится.

На сервере поднята роль "Terminal server". И службу "Terminal Services" не остановить ни вручную (опция неактивна), ни через "Net Stop", ни посредством WMIC.

Цитата:
дави "версия для печати" и ищи Автор: sirDaemon, Отправлено:17:10 21-09-2009 там про RDP

OK.
...Угу, ещё бы кто то, что там предлагают, из VBS на "батанику" перевёл...
Автор: YNY
Дата сообщения: 09.07.2010 11:52
BVV63 из VBS на "батанику" перевёл... а чем тебе VBS не катит???
если пользователь ужо прицепился к серваку, то даже оторвав его все его сеансы останутся работать, так что не понятно ваще накой его отрывать


Добавлено:
можно попробовать такой вариант на сервере: в настройках служб терминалов есть возмоность настроить сетевой интерфейс для работы ТС: сели есть 2 севых, и одна не исп., то выбери ее -- возмона это приведет к обрыву соединения либо не даст подкл если еще небыло подкл.

Добавлено:
не знаю будет ли работать вот [more=этот скрипт -для юзера MyerKen]
'
Const Enabled = 1
Const Disabled = 0

Set objUser = GetObject _
("LDAP://cn=MyerKen,ou=Management,dc=NA,dc=fabrikam,dc=com")

objUser.MaxDisconnectionTime = 2880
objUser.MaxConnectionTime = 1440 '--установи в 0 или 1 и потеси
objUser.MaxIdleTime = 180
objUser.BrokenConnectionAction = Enabled
objUser.ReconnectionAction = Enabled
objUser.SetInfo

[/more] или [more=вот этот для сервера]
'Description
'Enables Terminal Services connections on a computer running Terminal Services. To disable connections, 'pass the value 0 (rather than 1) to the SetAllowTSConnections method.

Const ENABLE_CONNECTIONS = 1

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

Set colItems = objWMIService.ExecQuery _
("Select * from Win32_TerminalServiceSetting")

For Each objItem in colItems
errResult = objItem.SetAllowTSConnections(ENABLE_CONNECTIONS)
Next

[/more] но попробуй
Автор: BVV63
Дата сообщения: 09.07.2010 13:03
YNY

Цитата:
а чем тебе VBS не катит???

Единственным. Очень не люблю использовать скрипты, которых я не понимаю. Как-то раз нарвался по полной... Сейчас на воду дую .

Цитата:
если пользователь ужо прицепился к серваку, то даже оторвав его все его сеансы останутся работать

Нет, скрипт должен отрабатывать сразу после перезагрузки сервера, т. е. пользователей ещё нет. И нужно сделать, чтобы и не было до завершения скрипта.
Ладно, какое-никакое решение этой проблемы, как писал на предыдущей странице, я нашёл. Его буду использовать.
Автор: oleandrit
Дата сообщения: 12.07.2010 17:24
Здраствуйте! Подскажите пожалуйста как создать батник для копирования файлов посети за текущий день? Чтобы копировались файлы не все, а только за текущий день.
Автор: BVV63
Дата сообщения: 16.07.2010 12:44
oleandrit
Самое простое:
XCopy <источник> <получатель> /D:%Date% /Z
/D:%Date% указывает, что нужно копировать данные за сегодня, /Z - сетевая опция.
Возможно, конкретно в Вашем случае понадобятся дополнительные ключи, юзайте XCopy /? для их просмотра.
Автор: olview
Дата сообщения: 27.07.2010 06:43
Привет всем, прдскжате пожалуйста как изменить у всех пользователей логон скрипт?Просто, если заходить в каждый и менять это пипец.....Логон скрипт у всех один
Автор: BVV63
Дата сообщения: 27.07.2010 06:53
olview
Для англоязычной Windows 2K3:
GPEdit.MSC -> "User Configuration" -> "Windows Settings" -> "Scripts (Logon/Logoff)".
Там можно задать скрипты, выполняющиеся при регистрации пользователей, а также при их разлогинивании. Также можно сделать аналогичное в отношении компьютеров: вместо "User Configuration" использовать "Computer Configuration".
Правда, старый скрипт придётся у всех удалять вручную, а в дальнейшем, индивидуально скрипт не назначать.
Если же речь идёт об AD, то там - по аналогии. В свойствах контейнера - групповая политика.
Автор: olview
Дата сообщения: 27.07.2010 07:03
Спасибо за ответ, а можно как-то скриптом?
Нашел вот это
Set objOU = GetObject("LDAP://cn=Users,dc=NA,dc=fabricam,dc=com")
ObjOU.Filter= Array("user")
For Each objUser in objOU
objUser.Put "scriptPath", "logon.bat"
Next

вот думаю как его прикрутить к моему)

Добавлено:
Всем спасибо за ответ, но повторюсь еще раз как сменить логон-скрипт у всех пользователей в домене именно скриптом????
Автор: Valery12
Дата сообщения: 20.08.2010 08:30
есть у кого нибудь опыт работы из скриптовых языков с SNMP, имеется в ввиду получение информации с удаленного устройства (не винды) используя нужные мибы,
все что я находил касалось либо к получению информации с локальной машины либо требовало приобретения сторонних утилит за очень приличные деньги, неужели нет свободных решений.
Автор: NYR9TV
Дата сообщения: 22.08.2010 13:58
Не могу разобраться, как удалено, включить или отключить службу для загруженного по умолчанию профиля оборудования.

Чтобы было понятно, о чем речь процитирую, как это делается вручную:
Откройте оснастку «Службы».
В области сведений щелкните правой кнопкой мыши службу, которую требуется включить или отключить, и выберите команду Свойства.
На вкладке Вход в систему выберите профиль оборудования, который нужно настроить.
Нажмите кнопку Включить или Отключить, затем нажмите кнопку ОК.

Для изменения основных настроек служб использую следующий подход:

Код: strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Set colServiceList = objWMIService.ExecQuery _
("Select * from Win32_Service where StartMode = 'Manual'")
For Each objService in colServiceList
errReturnCode = objService.Change( , , , , "Disabled")
WScript.Echo "Changed manual service to disabled: " & objService.Name
Next
Автор: YNY
Дата сообщения: 23.08.2010 09:11
NYR9TV
Интересный ты человек: хочешь запустить службу для устройства, которого "нет в системе" (в конкретном профиле))))))))). Это желание сродни покрасить забор, к которому тебя не подпускают))))))))))))))

[b

Добавлено:
Valery12 "...пыт работы из скриптовых языков с SNMP...", вообще-то скрипты всегда работают на PC а не вообще всюду -- это раз, тут в основном виндовые все вопросы -- это два.
Думаю, что тебе подойдет любой SNMP агент, для подобного рода вопросов есть рамблер и т.п. (http://www.net-snmp.org/ или http://www.opennet.ru/prog/sml/48.shtml)
Автор: Valery12
Дата сообщения: 23.08.2010 14:35
YNY
во первых топик называется "автоматизация администрирования" а работают системные администраторы не только с виндой
во вторых даже если "тут в основном виндовые все вопросы" вопрос и стоял как из под винды запустить скрипт опроса внешних устройств, как это делается под *никсами я знаю
так что в теме я точно не ошибся
Автор: NYR9TV
Дата сообщения: 27.08.2010 06:12

Цитата:
Интересный ты человек: хочешь запустить службу для устройства, которого "нет в системе" (в конкретном профиле))))))))). Это желание сродни покрасить забор, к которому тебя не подпускают))))))))))))))

YNY, я, наверное, непонятно объяснил, постараюсь объяснить более подробно, так, чтобы Вам стало понятнее.
Общие сведения о профилях оборудования.
Профиль оборудования — это набор инструкций, используемых Windows для определения устройств, которые должны загружаться при запуске компьютера, или параметров для каждого устройства. При первой установке Windows создается профиль оборудования «Profile 1». По умолчанию все устройства, присутствующие на компьютере на момент установки Windows, включены в «Profile 1». Если в системе имеется несколько профилей оборудования, можно указать среди них тот, который будет использоваться по умолчанию при каждом запуске компьютера. Но, как правило, данный профиль остается единственным на компьютере. Для любого профиля в системе можно разрешить или запретить загрузку любой службы в системе.

Но, в моем случае, речь идет о стандартном профиле оборудования «Profile 1», созданном при установке Windows и используемом на компьютере по умолчанию.

YNY, я предлагаю Вам для примера произвести такие действия:

Выключить любую запущенную у Вас на компьютере службу.
Зайти в настройки данной службы на закладку Вход в систему.
Отключите загрузку Службы для загруженного в данный момент профиля оборудования.
И попробуйте ее запустить.
Система не должна позволить Вам этого сделать.

Вопрос состоит в том, как удаленно, через скрипт, включить запуск службы с профилем оборудования, используемым в системе по умолчанию, либо включить запуск службы для всех профилей оборудования, созданных в системе.
Автор: Valery12
Дата сообщения: 27.08.2010 08:15
NYR9TV
не знаю как со всеми профилями но для текущего в командной строке это делается так
sc \\server_name config имя_службы start= {boot|system|auto|demand|disabled}
Автор: YNY
Дата сообщения: 27.08.2010 10:20
Думаю, что, используя указанное Valery12 направление, для того чтоб включить запуск службы с профилем оборудования стоит использовать параметр "create" комманды SC, а не конфигурация или старт. Правда тогда появится дубль в списке служб) его мона конечно не допустить, удалив запись воообще, а потом создать заново).

Пракика):
тест на дубльгисе показал, что при выключении из профиля (Profile1) в данном разделе
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_2GISUPDATESERVICE\0000\Control
создаются 2 ключа REG_DWORD: *NewlyCreated* и DisableCount, причем последний говорит о том включен данный сервис в текущем профиле или нет (0х...0 - вкл 0х...1 - выкл).
Автор: NYR9TV
Дата сообщения: 04.09.2010 08:38
Команда [sc \\server_name config имя_службы start= {boot|system|auto|demand|disabled}] указывает тип запуска для службы. При этом ни как, не влияя на настойки службы по отношению к "Hardware profile/Профель оборудования". К сожалению, все остальные опции программы SC.exe также не обладают данной возможностью.

Поиски в Интернете инструментов, позволяющих управлять профилем оборудования через скрипты, не принесли значительных результатов.

Очень помогло предыдущее сообщение YNY об изменениях в реестре. Как показало тестирование, основной ключ, влияющий на работу службы с профилем оборудования по умолчанию, находится здесь:

Код: [HKLM\SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Enum\ROOT\LEGACY_ИмяСлужбы\0000]
"CSConfigFlags"=dword:00000001
Автор: YNY
Дата сообщения: 05.09.2010 10:00

Цитата:
NYR9TV

Да, ты прав!!! Какой-то глюк у меня наверное произошел), либо это не стандартное поведение 2GIS за август
Автор: cetael
Дата сообщения: 15.09.2010 11:05
Привет.

Есть скрипт для удаленно отключения компьютеров. Но мне нужен что до отключения компьютеров скрипт предупреждал пользователей например вот так: "Power failure. The computer will be automaticaly shutting down after 3 min. Please save your work" и через 3 минут отключал компьютеры.

-----------------------------------------------------------------------------
Dim strComputer, OperationMode, strUsername, strPassword

'Remote computername or IP
strComputer="172.5.5.155"

'Specify the OperationMode (0 = Restart, 1 = Logoff, 2 = Shutdown)
OperationMode = 0

'Credentials
strUsername = "Administrator"
strPassword = "password"

'put computername into uppercase
strComputer = UCase(strComputer)

'Perform the operation on remote PC
Call OperationAction

Sub OperationAction
On Error GoTo 0
Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServices = objSWbemLocator.ConnectServer _
(strComputer, "root\cimv2", strUsername, strPassword)
objSWbemServices.Security_.ImpersonationLevel = 3

'Call WMI query to collect parameters for reboot action
'Set OpSysSet = GetObject("winmgmts:{(Shutdown)}//"_
'& strComputer & "/root/cimv2").ExecQuery("select * from Win32_OperatingSystem"_
'& " where Primary=true")

Set OpSysSet = objSWbemServices.ExecQuery("select * from Win32_OperatingSystem"_
& " where Primary=true")

Dim OpSysSet, OpSys

'Set PC to reboot
If OperationMode = 0 Then
For each OpSys in OpSysSet
opSys.Reboot()
Next

'Set PC to logoff
ElseIf OperationMode = 1 Then

Const EWX_LOGOFF = 0
For each OpSys in OpSysSet
opSys.win32shutdown EWX_LOGOFF
Next

'Set PC to shutdown
ElseIf OperationMode = 2 Then
For each OpSys in OpSysSet
opSys.Shutdown()
Next

End If
End Sub

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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