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

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

Автор: firsteducation
Дата сообщения: 16.03.2011 10:31
YNY система убивает cmd всё равно ошибка выходит, не знаю даже, может при выключении как-то остановить выключение до выполнения операций? может с помощью такого скрипта VVV , а куда эти ключи подсунуть(не смеяться): /F /T ?:



Set WshShell = WScript.CreateObject("WScript.Shell")
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colMonitoredEvents = objWMIService. _
ExecNotificationQuery("select * from __InstanceDeletionEvent " _
& " Within 1 Where TargetInstance isa 'Win32_Process'")
Do
Set strLatestEvent = colMonitoredEvents.NextEvent
If strLatestEvent.TargetInstance.Name = "cmd.exe" Then
intReturn = WshShell.Run("taskkill /IM find.exe xcopy.exe copy.exe ping.exe", 0)
End If
Loop
Автор: YNY
Дата сообщения: 16.03.2011 10:36
Johny_x3mal
Батник канечно можно, но он без Сервера KMS не работает))).
Хотя если есть доступ в инет то можно!


Добавлено:
firsteducation
intReturn = WshShell.Run("taskkill /IM cmd.exe /F /T", 0)
Автор: Johny_x3mal
Дата сообщения: 16.03.2011 11:43
YNY
MAC и KMS одинаково устроены...
"Меня зовут Тед Вэй (Ted Way), и я отвечаю за многопользовательскую активацию в Office 2010. Ранее в этом блоге я писал о KMS и MAK как двух способах активации, доступных для организаций. Если вы планируете развертывание Office 2010 , Windows (7, Vista, Server 2008 R2, Server 2008) или их комбинации, вам будет приятно узнать, что, по существу, в них используется одна и та же технология активации"
Автор: YNY
Дата сообщения: 16.03.2011 12:46
если покупается карпаративная версия хоть винды хоть офиса, то никаких запусков батников не нужно если есть доступ в инет или КМС комп
иначе типа батник для разового запуска [more=будет примерно таким]
@echo off
set fn=%COMPUTERNAME%
if exist \\server\saratest\%fn%.txt goto :eof
"путь к slmgr.vbs /ipk КМС ключ"
sleep 2000
"путь к slmgr.vbs /ato"
sleep 3000
echo "Win on %fn% probably has KMS Activation" > \\server\saratest\%fn%.txt
sleep 3000
if "%installdir%\Program Files\Microsoft Office\Office14\ospp.vbs" exist (
set ofl="%installdir%\Program Files\Microsoft Office\Office14\ospp.vbs"
) else (
set ofl="%installdir%\Program Files (x86)\Microsoft Office\Office14\ospp.vbs" )
call %ofl% /inpkey КМС ключ
sleep 3000
call %ofl% /act
sleep 2000
echo "Off on %fn% probably has KMS Activation" >> \\server\saratest\%fn%.txt
[/more]

Добавлено:
Johny_x3mal
MAК отличается от KMSиз описанного тут, тем что будет происх активация через Интернет, в хужшем случае, для каждого компа, т.е. будут вылазить всякие сообщения о необх активации и пользователи будут тыкать на каждом компе "активировать", т.е. никакой автоматизации.
Автор: Johny_x3mal
Дата сообщения: 16.03.2011 14:32
YNY
купилось корпоративное, но это ж не значит что надо переустанавливать ОСь, можно сменить ключ и активировать?

Добавлено:
а вот КМС сервер заинтриговал ...
Автор: cin
Дата сообщения: 16.03.2011 16:46
Коллеги, добрый день
Требуется считать значения хранящиеся в ветке реестра и доставить результат пользователю.
Проблема в том, что мне известно только имя ветки реестра, а сами значения которые там хранятся - нет,
HKEY_USERS\S-1-5-21-1409082233-362288127-725345543-98468\Software\1C\1Cv7\7.7\Titles

Это пути до баз 1С, как считать все значения которые хранятся в этой ветке? Проблема в том, что Name и Data мне заранее не известны Type REG_SZ

Значения могут быть такие
Name c:\1c
Data база1

Мне как раз и надо получить вот эти name и data и потом либо выложить на фтп, либо шару, либо вывести на экран, либо завершить программу с кодом ошибки, в зависимости от того что выводится.
подскажите куда копать, с реестром не работал
Автор: BorlandIMHO
Дата сообщения: 16.03.2011 21:54
cin
С 1С не знаком, но вывод всех ключей раздела даёт
Код: reg query "HKEY_USERS\S-1-5-21-1409082233-362288127-725345543-98468\Software\1C\1Cv7\7.7\Titles"
Автор: cin
Дата сообщения: 17.03.2011 14:24
Проблема в том что ssid мне заранее не знаком, а скрипт запускается с системными правами на всех компьютерах сети
Автор: BVV63
Дата сообщения: 18.03.2011 05:45
cin
SID, случаем, не совпадает с HKCU ?
Автор: YNY
Дата сообщения: 18.03.2011 08:04
BorlandIMHO
блин тут по работе с реестром очень много топиков, слабо версию для чтения прошерстить?
Автор: firsteducation
Дата сообщения: 18.03.2011 17:25
YNY Здорово. я тут для автоматического отключения батника при выкл винды нашёл gpedit.msc, но не могу настроить чтоб файл вырубания батника выполнился до выхода, не подскажешь?
Автор: YNY
Дата сообщения: 18.03.2011 18:58
firsteducation>...файл вырубания батника выполнился до выхода...
Я то думал, что приведенный тобой скрипт, содержащий [more=вот это] objWMIService.ExecNotificationQuery("Select * from " _
& "Win32_ComputerShutdownEvent") [/more] у тя работал как нада.
gpedit предназначено несколько для других целей)
Запускай gpedit и см папку "Конф. Win.\Сценарии" там на вход/выход и на запуск/завершение.

Добавлено:
Почитай вот это, может поможет)

Но даже если пишет, что прил. не отвечает, то это, в конечном итоге, не мешает ни автоматом выключиться, ни перезагрузиться, так что твои потуги не понятны.
Автор: firsteducation
Дата сообщения: 18.03.2011 22:28
YNY Вылезает на миг сообщение об ошибке задачи, я хочу чтоб при выключении никаких таких сообщений не было(которые еще сопровождаются звуковым сигналом).
Автор: firsteducation
Дата сообщения: 19.03.2011 08:53
YNY А может быть сообщение: "сбой при инициализации приложения из-за остановки рабочей станции" можно отключить. то есть сделать чтобы никаких предупреждающих окон не было во время выкл винды?
Автор: YNY
Дата сообщения: 20.03.2011 13:02
firsteducation> сообщение...можно отключить...
вопрос -- оффтоп, ск.всего траблы в приложениях!
Автор: bios
Дата сообщения: 24.03.2011 22:35
Организовал бекап (backup Outlook) почты через бат файл РЕКОМЕНДУЮ
Автор: Deep2007
Дата сообщения: 31.03.2011 09:37
Помогите, пожалуйста, изменить скрипт vbs (я в них=0). Есть сервер (на Linux) и клиентские машины на WIN XP PRO SP2 (и IE6). В автозагрузке на каждой клиентской есть такой скрипт:
Код: On Error Resume Next

Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_")
objIE.Navigate "about:blank"
While objIE.Busy
Wscript.Sleep 1000
Wend

objIE.FullScreen = True
objIE.MenuBar = False
objIE.StatusBar = False
objIE.ToolBar = False
objIE.Resizable = False
objIE.Height = 150
objIE.Width = 300
objIE.Top = 50
objIE.Left = 50

objIE.Document.Write "<html><head><title>Login</title></head>"
objIE.Document.Write "<body style=""overflow:hidden;"" background=""C:\WINDOWS\system32\ntimage.gif""><div align=center>"
objIE.Document.Write "<b>User name:</b><br><input style=""width:200px;background:silver;color:black;border:0px;"" type=text size=20 name=uname><br>"
objIE.Document.Write "<b>Password:</b><br><input style=""width:200px;background:silver;color:black;border:0px;"" type=password size=20 name=upass onEnter='JavaScript:eOK.value=""1"";'>"

objIE.document.write "<hr style=""border: 0px; height: 1px;""><input type=hidden name=eOK value=0>"
objIE.Document.Write "<input style=""width:100px;background:blue;color:white;border:0px;"" type=button name=bOK value=OK onClick='JavaScript:eOK.value=""1"";'>"

objIE.document.write "<input type=hidden name=eCancel value=0>"
objIE.Document.Write "&nbsp;<input style=""width:100px;background:blue;color:white;border:0px;"" type=button value=Cancel onClick='JavaScript:eCancel.value=""1"";'>"

objIE.Document.Write "</form></div></body></html>"

objIE.Visible = True

While objIE.Busy
Wscript.Sleep 1000
Wend

While 0=0
WScript.Sleep 1000
if objIE.document.all.eCancel.value = "1" then
objIE.Quit
WScript.Quit
end if
if objIE.document.all.eOK.value = "1" then
UMountAll()
MountAll()
if Err.Number = 0 then
objIE.Quit
WScript.Quit
else
objIE.document.all.eOK.value = "0"
objIE.document.all.upass.value = ""
MsgBox "Ошибка подключения 0x" & CStr(Hex(Err.Number)) & vbNewLine & "Обратитесь в отдел техподдержки.", 48, "WSH Logon Script Error"
Err.Clear
end if
end if
Wend

Sub IE_OnQuit()
WScript.Quit
End Sub

Sub UMountAll()
Set objNetwork = CreateObject("Wscript.Network")
Set colDrives = objNetwork.EnumNetworkDrives
For i = 0 to colDrives.Count-1 Step 2
objNetwork.RemoveNetworkDrive colDrives.Item(i), true, true
Next
End Sub

Sub MountAll()
set net = Wscript.CreateObject("Wscript.Network")
if (net.MapNetworkDrive("L:", "\\itc1\l", ,objIE.document.all.uname.value, objIE.document.all.upass.value) <> 0) Then
MsgBox "Ошибка" & vbNewLine & "Обратитесь в отдел техподдержки", 48, "WSH Logon Script Error"
end if
if (net.MapNetworkDrive("H:", "\\itc1\homes", ,objIE.document.all.uname.value, objIE.document.all.upass.value) <> 0) Then
MsgBox "Ошибка" & vbNewLine & "Обратитесь в отдел техподдержки", 48, "WSH Logon Script Error"
end if
if (net.MapNetworkDrive("O:", "\\itc1\common", ,objIE.document.all.uname.value, objIE.document.all.upass.value) <> 0) Then
MsgBox "Ошибка" & vbNewLine & "Обратитесь в отдел техподдержки", 48, "WSH Logon Script Error"
end if
if (net.MapNetworkDrive("T:", "\\itc1\t", ,objIE.document.all.uname.value, objIE.document.all.upass.value) <> 0) Then
MsgBox "Ошибка" & vbNewLine & "Обратитесь в отдел техподдержки", 48, "WSH Logon Script Error"
end if
Set wshSheLL = WScript.CreateObject("WScript.Shell")
if (wshSheLL.Run("net time \\itc1 /set /yes", 0, TRUE) <> 0) Then
MsgBox "Ошибка синхронизации времени!", 48, "WSH Logon Script Error"
end if
End Sub
Автор: res2001
Дата сообщения: 31.03.2011 10:01
Deep2007
Закоментируй первую строчку и запускай из cmd через cscript, тогда увидишь возможные ошибки.
Автор: Deep2007
Дата сообщения: 31.03.2011 10:20
res2001, спс попробую. Не могли бы Вы дать синтаксис команды для запуска скрипта из cmd (лежит в C:\WINDOWS\system32, его имя login.vbs) через csript?
Строку закомментировать так:
Код: ;On Error Resume Next
Автор: res2001
Дата сообщения: 31.03.2011 10:55
Deep2007
Коментарий в VBC, если не ошибаюсь, знак ' - апостроф.
А сценарии запускать просто:
cscript <имя сценария>
Автор: YNY
Дата сообщения: 31.03.2011 11:59
Deep2007> ...стал отображаться заголовок окна...
))) если окно будет разворачиваться на весь экран, то и заголовка не будет если панель задач не будет на него влиять
objIE.FullScreen = определяет полноту экрана true - да, false - нет
Автор: Deep2007
Дата сообщения: 01.04.2011 10:44
YNY, нужно, чтобы:
1. это окно не разворачивалось на весь экран
2. заголовок окна был скрыт
Изменил скрипт так (фрагмент в начале):
Код: ...
objIE.FullScreen = False
objIE.MenuBar = False
objIE.StatusBar = False
objIE.ToolBar = False
objIE.Resizable = False
objIE.Height = 200
objIE.Width = 300
objIE.Top = 50
objIE.Left = 50
...
Автор: YNY
Дата сообщения: 01.04.2011 14:27
Deep2007> заголовок окна не скрыт. Как этого добиться?
Никак, если действительно вызывать IE! Можно как альтернативу попробовать HTA, а еще лучше пользовать Net Use в cmd (ищи примеры в версии для печати).

А, в целом, применение в скриптах для подкл сетевых дисков логина и пароля да еще и графич интерфейса для пользователя -- это лишнее!
Автор: Deep2007
Дата сообщения: 04.04.2011 15:26
Спс за ответ.
Так уж организован доступ юзеров в сети ВУЗа, придумал его не я. После ввода логина-пароля подключаются сетевые диски, к которым юзер допущен. Имею доступ только к клиентским машинам. Пошел курить мануалы по HTA.
Автор: 9nine
Дата сообщения: 08.04.2011 23:32
В организации пользователям опредеустанопороооленный режим работы в сети согласно заявкам на доступ. Так вот есть случаи когда суббота является рабочим днем, в связи с переносом праздничного дня. Так вот нужен скрипт, который мог бы считывать текущее состояние доступа входа по времени в субботу сохронять, устанавливать на субботу время доступпа для всех пользователей переносимого праздничнеого дня(допустим обычный вторник), а потом в понедельник с утра скрипт возвращал бы доступ на субботу из сохраненной информации субботы(как выходного дня).
В кратце так:

1. Считать все данные по субботе у всех пользователей.
2. Считать все данные по переносимому дню у всех пользователей и установить на субботу доступ как в переносимом дне.
3. Востановить на следующий рабочий день, доступ по времени на субботу сохранненый в п.1
Автор: YNY
Дата сообщения: 09.04.2011 11:14
9nine
Хм, откуда считывать состояние доступа и зачем вообще его считывать: у вас что на каждый день разный доступ к ресурсам???
Автор: 9nine
Дата сообщения: 09.04.2011 12:00
Рабочий день в организации с 8-30 до 17-30 соответвтвенно и доступ в сеть (в домен) каждому пользователю с 8-30 до 17-30, за исключением случаев дополнительнного времени доступа в сеть согласно заявкам согласованой отделом безопастности. Считывать время доступа нужно из учеток в домене, а как вот я и спрашиваю...
Автор: YNY
Дата сообщения: 10.04.2011 14:57
9nine>1 2 3
[more=получился вот такой вот скрипт]
'on error resume next
const ADS_SCOPE_SUBTREE = 2 ' или 0 если не интересны вложенные ОУ
Set objArgs = WScript.Arguments 'используем пар-ры комм строки
'objArgs(0) -- с какова мм/дд/гггг на
'objArgs(1) какой день недели (от 0-воскр до 6- субб) будет перенос
DIM WeekAccess1(6,2)'(0-6),0-воскресенье,(0-2) -- по 8-мь часов
if (objArgs.Count<>2) then
    msgbox "Не достаточно инфы",vbExclamation
else
    Set fso = CreateObject("Scripting.FileSystemObject")
    if Now>objArgs(0) then
         msgbox "Параметры не верно указаны, т.е указывают на прошлое!",vbCritical
    else
        if (Weekday(Now,0)=1) then
            MAIN(1)' -- Upload
        else
            MAIN(0)' -- Change and Backup
            
        end if
    end if
    
end if
'23
SUB MAIN(BloadU)
Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
'29
Set objCOmmand.ActiveConnection = objConnection

objCommand.CommandText = _
"Select * from 'LDAP://DC=Myh,DC=local' " _
& "Where objectClass='User' and objectCategory='person'"

'objCommand.Properties("Page Size") = 2000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set rs = objCommand.Execute
rs.MoveFirst
'39

Do Until rs.EOF

For i = 0 To rs.Fields.Count - 1

' For Single Value attribute.
'Wscript.Echo rs.Fields(i).Name, " = ", rs.Fields(i).Value
'lstResult.AddItem rs.Fields(i).Value
if (ChkLAcc(rs.Fields(i).Value)=false) then
    Set oUserBU = GetObject(rs.Fields(i).Value)
        fmis=oUserBU.Get("Name")
    

    if BloadU=1 then
'54    'start upload parameters
     'msgbox "upload"
    Dim rLoginHours(20)    
        Set f = fso.OpenTextFile("c:\"& fmis & ".txt", 1)
        for i2=0 to 6
          for j2=1 to 3
             'WeekAccess1(i2,j2-1)=cByte(f.Readline)
            df=df+1
            rLoginHours(df-1)=rLoginHours(df-1) & cByte(f.Readline)    
            
          next
        next
        f.Close
        'msgbox tm
        'msgbox VarType(rLoginHours)
        Set UpoUser = GetObject(rs.Fields(i).Value)
        UpoUser.PutEX 1, "LogonHours", "0" 'сбрасываем в сост по умолчанию
        UpoUser.SetInfo
        UpoUser.Put "LogonHours", rLoginHours 'пытаемся обновить из файла
        UpoUser.SetInfo
    else
'66        'start backup
        CrArrWeek(rs.Fields(i).Value)
        Set f = fso.OpenTextFile("c:\"&fmis&".txt", 2, True)
        for i1=0 to 6
          for j1=0 to 2
             f.writeline Cstr(ascb(WeekAccess1(i1,j1)))
          next
        next
        f.Close
        
    end if
end if
'77

next
rs.MoveNext
Loop
END SUB
'83 чекаем локальные и встроенные аккаунты
Function ChkLAcc(FDQNAccName)
const LAC0="IUSR_"
const LAC1="IWAM_"
const LAC2="SUPPORT_"
const LAC3="krbtgt"
on error resume next
ChkLAcc=False
Set objUser = GetObject(FDQNAccName)
'92
if IsNull(objUser.Get("Description")) then exit function
    if instr(objUser.Get("Description"),"Встроенная")_
OR instr(objUser.Get("Name"),LAC0)_
OR instr(objUser.Get("Name"),LAC1)_
OR instr(objUser.Get("Name"),LAC2)_
OR instr(objUser.Get("Name"),LAC3) then
         ChkLAcc=true
        Set objUser = Nothing
        exit function
end if
End Function
'104
SUB CrArrWeek(FDQNAccName)
Set oUser = GetObject(FDQNAccName)
LoginHours = oUser.LoginHours

    for k=0 to 6
     for y=1 to 3
     n=n+1
'msgbox midb(LoginHours,n,1)
        WeekAccess1(k,y-1)=midb(LoginHours,n,1)
     next
'msgbox Cstr(ascb(WeekAccess1(k,0)))&Cstr(ascb(WeekAccess1(k,1)))&Cstr(ascb(WeekAccess1(k,2)))
    next
End SUB

[/more] можешь использовать его как "рыбу", т.к. он только сохраняет в файл текущие параметры, а т.к. UpoUser.Put "LogonHours", rLoginHours, когда пытаемся обновить из файла у меня выдает сообщение, что типа такой параметр уже есть и не меняет значения, мне не охота его доводить до финала...(
Автор: 9nine
Дата сообщения: 10.04.2011 21:16
Спасибо большое попробую...
Автор: YNY
Дата сообщения: 11.04.2011 17:25
9nine
ошибка вылазит из-за не соответствия типов и скриптами преобразовать кривой массив LogonHours не получится, только на C++ и т.п. языках программирования или может в VBA!

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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