Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

emx (13-12-2006 21:07): http://forum.ru-board.com/topic.cgi?forum=8&topic=19088#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

   

ooptimum



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
 

                               Коллеги-администраторы  ....  


Часть 1


Думаю каждый из вас сталкивался с необходимостью выполнять некие несложные рутинные операции, на котороые уходит много драгоценного времени.
 Например, создать определенную структуру каталогов для каждого пользователя домена, изменить некие параметры в профилях всех или части пользователей, изменить полномочия/владельца однотипных файлов в разных каталогах т.д.  
Я, как сисадмин, тоже не раз был вынужден делать все это.  Руками делать это тоскливо и муторно, как вы понимаете. Должен заметить, что по неким "религиозным" убеждениям я всегда старался избегать любых отношений с бейсиком и его производными. Еще мой отец учил меня не иметь с ним никаких дел. Буквально. А теперь я учу своего сына тому же. Но, тем не менее, полностью избежать этого, по всей видимости, невозможно, тем более, что бейсик от M$ сейчас уже далеко не та "лапша", которой он был изначально, а современный структурированный язык, нашедший множество применений. Похоже, что для меня в очередной раз настала пора выучить еще что-то. Знаете, как курильщик много раз безуспешно пытается бросить курить, так и я не раз пытался подступиться к изучению VBScript, но пока никак не одолел. Лень, знаете ли. А инструмент в делах административных был бы весьма пользительный, должен заметить, для быстрого написания всякого рода скриптов.

 
    Внимание   !  !  !  

  • Поскольку данный топ весьма не мал, не забывайте  использовать "версию для печати" для более удобного поиска по теме. А также МЕГА ПОИСКОВИК от NEPa

  • Дабы не раздувать топ,  примеры своих  скриптов  заключаем в тег  "more"

Консольные команды. Командный интерпретатор

Windows Script Host (WSH) &  VBScript  &  JScript


Вышеперечисленные буки можно  взять здесь

    ТOOLS :
  1. Autoit+readme.rus
  2. Scriptologic
  3. AutoMate
  4. KIXTART
  5. nnCron-Планировщик с поддержкой скриптового языка --  РЕКОМЕНДУЮ
  6. WGET, GREP, GETMAIL, BLAT for Windows замечательные консольные утилиты
  7. 4dos/4nt -- отличная замена стандартного коммандного интерпретатора  
  8. JudoScript - java подобный скриптовый язык с исходниками

    Дружественные темы :
  1. Автоматическая (unattended) установка Windows
  2. Интересные команды при работе с Linux
  3. Отличный сайт по скриптингу, и не только
  4. Использование KIX
  5. Использование WMI

 
>>HOW -  TO:
Создается по материалам данного топа

 
Надеюсь данная тема будет полезна для Вас.
 Предложения по реформированию шапки принимаю в ПМ Jovanotti

 

Всего записей: 2898 | Зарегистр. 30-05-2002 | Отправлено: 08:55 13-12-2002 | Исправлено: FreemanRU, 17:29 11-12-2006
inetimon



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите кто может.  
Имеется скрипт по удалению пустых папок, как реализовать возможность исключать некоторые пустые папки из списка удаляемых ?

Код:
set _tmp1_=_list_1.tmp
set _tmp2_=_list_2.tmp
dir "c:\1" /b/s /ad /on > %_tmp1_%
sort /r < %_tmp1_% > %_tmp2_%
for /f "delims=/" %%d in (%_tmp2_%) do rmdir "%%d" 2> nul
del /q %_tmp1_%
del /q %_tmp2_%

При использовании этого скрипта задача сводится к исключению необходимых папок из файла list_1.tmp до сортировки в list_2.tmp или до удаления.

Всего записей: 41 | Зарегистр. 10-11-2004 | Отправлено: 09:57 04-12-2006 | Исправлено: inetimon, 10:00 04-12-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Romero_Ekb
если он запускается в контексте пользователя а дельше выполняется с привелегиями системы, то в момент запуска и передать имя/сид
 
xameleon1
1й любой работающый вариант:
Цитата:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\")
Set colFiles = objFolder.Files
 
For Each File in colFiles
    Wscript.Echo File.Name
Next

 
Добавлено:
inetimon
а если на VBS?

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 15:13 04-12-2006
inetimon



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я в VBS как собака, когда смотрю все понимаю а сам написать нечего не могу. Сойдет любой вариант

Всего записей: 41 | Зарегистр. 10-11-2004 | Отправлено: 15:32 04-12-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
inetimon
со списком директорий которые не стоит удалятьнужно смотреть - или тубо забить в масив в коде или отдельный список создать и читать его

Код:
Set FSO = CreateObject("Scripting.FileSystemObject")
temp = RmEmptySubFolders (FSO.GetFolder("C:\1"))
WScript.Quit
Function RmEmptySubFolders(Folder)      
    HasSubFoldersFiles=False
    For Each Subfolder in Folder.SubFolders
        HasSubFolderFiles = RmEmptySubFolders(Subfolder)
        If HasSubFolderFiles Then HasSubFoldersFiles=True
         
        If Not HasSubFolderFiles Then  
            'WScript.Echo Subfolder.Path, " - delete - ", Subfolder.size  
            ' Тут нужно делать проверку на то нужна ли эта пака
            ' также если она необходима нужно устанавливать HasSubFoldersFiles
            ' в true, иначе папка может быть удалена если для папки на уровень  
            ' выше не окажеться файлов в подпапках        
            Subfolder.Delete                      
        End If
    Next
    If Not HasSubFoldersFiles Then HasFolderFiles = Folder.Files.Count > 0 ' xnj,s  
    RmEmptySubFolders = HasSubFoldersFiles Or HasFolderFiles  
End Function

 
Добавлено:
те вначале забиваем масив
Код:
Dim DND
DND=Split("addins;11",";")

потом по нему проверяем:
Код:
            Kill = True
            For Each FolderName In DND
                If FolderName = LCase(Subfolder.name) Then  
                    Kill =False
                    HasSubFoldersFiles=True
                    Exit For  
                End If
            Next
            If Kill Then ...

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 16:59 04-12-2006 | Исправлено: urel, 17:11 04-12-2006
xameleon1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос:
как имя файла *.zip засунуть в тему (.Subject) письма ?
файл *.zip находится в одной директории (d:\1\) с этим скриптом.
 
Set objFSO = CreateObject("Scripting.FileSystemObject")
sFileName="d:\1\readme.txt"
 
Set File1 = objFSO.OpenTextFile(sFileName, 1)  
    str = File1.ReadAll
    File1.Close
 
sHema="http://schemas.microsoft.com/cdo/configuration/"
        Set msg = CreateObject("CDO.Message")
        with msg
                .From = "vasya@mail.klv.akbk.ru"
                .To = "fedya@mail.ru"
                .Subject  = "Изменение"  
                .Textbody = str
 
    .Configuration.Fields.Item(sHema&"sendusing") = 2
                .Configuration.Fields.Item(sHema&"smtpserver") = "mail.klv.akbk.ru"
                .Configuration.Fields.Item(sHema&"smtpserverport") = "25"
                .Configuration.Fields.Update
        end with
        msg.Send
        Set msg = Nothing

Всего записей: 64 | Зарегистр. 02-02-2006 | Отправлено: 17:48 04-12-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xameleon1
собери в строчку
Цитата:
File.Name
и вставляй в сабж
 

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 17:57 04-12-2006
Romero_Ekb



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urel
Нет, он запускается службой, которая запущена от имени системы. Если б все было так просто, я б не спрашивал.

Всего записей: 98 | Зарегистр. 02-02-2004 | Отправлено: 18:07 04-12-2006
xameleon1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
xameleon1  
собери в строчку
Цитата:File.Name  
и вставляй в сабж  

 
Напиши плиз как это сделать - для тупого.

Всего записей: 64 | Зарегистр. 02-02-2006 | Отправлено: 18:15 04-12-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Romero_Ekb
ну вот а говорил  
Цитата:
Нужно узнать SID юзера, в чьем сеансе запускаю батник

перебор сесий, и вытягивание логина сида из интерактивных:
Код:
 Set objWMIService=GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set LoggedOn =objWMIService.ExecQuery ("Select * from Win32_LoggedOnUser")
 
For Each Session In LoggedOn
    Set LogonSession = GetObject("winmgmts:{impersonationLevel=impersonate}!"&  Session.dependent)
    If CDbl(LogonSession.properties_.item("LogonType")) = 2 Then
        ' сесия интерактивная
        Set Account = GetObject("winmgmts:{impersonationLevel=impersonate}!"&  Session.antecedent)
        sid= Account.properties_.item("SID")
        userLogin= Account.properties_.item("Caption")
        WScript.Echo userLogin & " ->  " & sid
    End If
 
     
Next

 
Добавлено:
 
xameleon1
собирается так:

Код:
Dim DND
DND=Split("addins;1033",";")
Set FSO = CreateObject("Scripting.FileSystemObject")
temp = RmEmptySubFolders (FSO.GetFolder("C:\1"))
WScript.Quit
 
Function RmEmptySubFolders(Folder)     
    HasSubFoldersFiles=False
    For Each Subfolder in Folder.SubFolders
        HasSubFolderFiles = RmEmptySubFolders(Subfolder)
        If HasSubFolderFiles Then HasSubFoldersFiles=True
         
        If Not HasSubFolderFiles Then  
            Kill = True
            For Each FolderName In DND
                If FolderName = LCase(Subfolder.name) Then  
                    Kill =False
                    HasSubFoldersFiles=True
                    Exit For  
                End If
            Next
            If Kill Then  
                Subfolder.Delete            
            End If
        End If
    Next
    If Not HasSubFoldersFiles Then HasFolderFiles = Folder.Files.Count > 0 ' xnj,s  
    RmEmptySubFolders = HasSubFoldersFiles Or HasFolderFiles  
End Function

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 19:17 04-12-2006 | Исправлено: urel, 19:18 04-12-2006
Romero_Ekb



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urel
Огромное спасибо!

Всего записей: 98 | Зарегистр. 02-02-2004 | Отправлено: 06:27 05-12-2006
alfira

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Задача: Нужно написать log off скрипт который бы копировал, а еще лучше архивировал информацию из папки мои документы пользователей на сервер без лишних файлов типа фильмы фото музыка и тд и тп, есть такой простой вариант использования bat файла
 
rar a -r -dh -x*.mp3 -x*.fcd -x*.avi -x*.exe -x*.jpg -x*.tif -p%PASSWD% %DIRNAME%\%FILENAME%_new %SOURCEDIR%
 
только вот не знаю как сюда в качестве источника архивации прописать папку мои документы так что бы скрипт правильно определял ее местонахождение на каждом компьютере, %user profile% не прокатывает так как пользователи могут самостоятельно в свойствах папки Мои документы изменить ее месторасположениевне профиля, если с помощью cmd не решить эту задачу может кто-нибуть другой вариант решения этой задачи подскажет?
 
 

Всего записей: 81 | Зарегистр. 11-09-2004 | Отправлено: 16:25 05-12-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alfira
извени - но вопросом на вопрос - а почему бы не перенаправить папки сразу на шару - и там по ночам спокойно себе бэкапить?
а если по делу то из HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal можно взять путь к майдокам. как его передать в cmd не скажу...  
давай на VBS!  

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 19:13 05-12-2006
alfira

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
да хоть в чем, просто самостоятельно vbs я не напишу! чтобы выполнить условия задачи.
если в vbs можно так сделать чтоб мои документы копировались или архивировались да без медиа файлов вышеперечисленных в ЗАДАЧЕ то это будет супер!

Всего записей: 81 | Зарегистр. 11-09-2004 | Отправлено: 02:09 06-12-2006
jONES1979



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
alfira
 
а не боишься что будет тормозить? представь, конец рабочего дня, клерк комп шатдаунит, а тот вместо того чтобы послушно выключиться - начинает винтом моргать и чего-то делать...
"Семь бед - один reset", как говорится

Всего записей: 324 | Зарегистр. 20-05-2005 | Отправлено: 10:56 06-12-2006
stanru1



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток, уважаемые коллеги! Подскажите пожалуйста, где грабли?  
Скрипт должен удаленно запускать процесс, к примеру, блокнот.  
Если выполнять скрипт применительно к локальной машине, все в порядке. Если же к удаленной, то процесс запускается, но самого окошка блокнота не видно
Вот собственно сам код:
 

Код:
 
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2")
Set objStartup = objWMIService.Get("Win32_ProcessStartup")
Set objConfig = objStartup.SpawnInstance_
objConfig.ShowWindow = 1
set objProcess = objWMIService.Get("Win32_Process")
Error = objProcess.Create("notepad.exe", null, objConfig, intProcessID)
wscript.echo error
 

 
Заранее спасибо!

Всего записей: 124 | Зарегистр. 20-10-2004 | Отправлено: 14:54 06-12-2006
alfira

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urel Раньше у меня так и было настроенно т.е перенаправление папки мои документы, но после глобального сбоя в сети в результате которого большая грууппа компьютеров оказалась вообще без сети и соответственно без документов было решено просто копировать, архивировать мои документы на сервер. вот и понадобился logoff скрипт который бы это делал. А проблемы с резетом меня не пугают т.к пользователи у нас без тех поддержки ничего сами не предпринимают. первое что пришло в голову это возможность написать bat для ntbackup  или rar, но никак не могу победить как указать скрипту местонахождение папки мои документы? так как на многих компьютерах в свойствах папки изменено ее местонахождение. может vbs скрипте можно это определить и вставить этот путь для ntbackup или rar? может кто вообще более оригинальный способ подскажет.

Всего записей: 81 | Зарегистр. 11-09-2004 | Отправлено: 17:37 06-12-2006
fedmun

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
alfira

Цитата:
может vbs скрипте можно это определить


Цитата:
set WshShell = WScript.CreateObject("WScript.Shell")
strDesktop = WshShell.SpecialFolders("MyDocuments")

Всего записей: 1385 | Зарегистр. 13-06-2002 | Отправлено: 18:03 06-12-2006
urel

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
stanru1
так наверно нужно запускать процесс от имени пользователя, который в этот момент залогинен?
alfira
самый оригинальный способ - это хранить все на шаре, и следить за тем чтобы ничего не отваливалось.
а так - vbs реинкорнация твоего батника:
Код:
Path2Winrar   = "E:\Program Files\WinRAR\WinRAR.exe"
Path4Archives = "E:\"
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objNetwork = CreateObject("WScript.Network")
strDesktop = WshShell.SpecialFolders("MyDocuments")
arcName = Path4Archives & objNetwork.ComputerName & "_" & objNetwork.UserName & "_" & Replace(Replace(CStr(now),":","-")," ","_") & ".rar"
cmd = """"& Path2Winrar & """ a -r -dh -x*.mp3 -x*.fcd -x*.avi -x*.exe -x*.jpg -x*.tif -pPASSWD """ & arcName & """ """ & strDesktop & """"
WshShell.Run cmd, 0 , True
WScript.Echo strDesktop

 
Добавлено:
alfira
а еще бывают
wav wma mpg mpeg iso ogg ...  
может проще задаться вопросом какие именно типы файлов копировать?
что включало в себя
Цитата:
глобального сбоя в сети в результате которого большая грууппа компьютеров оказалась вообще без сети
и почему это нельзя было решить в адекватные сроки? может стоит пепланировать и перестроить свою ИС? это Намного проще чем потом разбираться с такими костылями.

Всего записей: 292 | Зарегистр. 16-09-2004 | Отправлено: 23:57 06-12-2006 | Исправлено: urel, 23:59 06-12-2006
alfira

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
urel нельзя было решить так как после пожара оказалась отрезанной часть здания! а вы не задумывались что может такое произойти?

Всего записей: 81 | Зарегистр. 11-09-2004 | Отправлено: 09:09 07-12-2006
Teo



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
привет всем!
 
каким тулом можно записать диск DVD-R с продлением сессии?
я написал скриптец простейший для еженедельного бэкапа, который должен падать на эрку
но неохота мне вручную делать это всё
сейчас он кидает напоминание на мыло мне, а хочется избавить себя от этого
 
система вин32

Всего записей: 737 | Зарегистр. 21-04-2003 | Отправлено: 10:11 07-12-2006
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Автоматизация администрирования
emx (13-12-2006 21:07): http://forum.ru-board.com/topic.cgi?forum=8&topic=19088#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru