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

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

Автор: YNY
Дата сообщения: 29.11.2007 05:07
fath
Cacls --Просмотр или изменение файлов избирательных таблиц управления доступом (DACL).



Автор: abasov
Дата сообщения: 29.11.2007 08:08
Коллеги прошу совета. Скрипт архивирует на части и мылит, но аттачи засовывает в одно письмо
Как последовательно обрабатывать по одному файлу из mailPath = "c:\test\" '
и запускать mailagent = "febootimail.exe"?


Код:

Set objRegExp = CreateObject("VBScript.RegExp")
Set WshShell = CreateObject("WScript.Shell")
objRegExp.Global = True

filePath = "c:\test\*.exe" '
archPath = "c:\test\arch.rar" '
mailPath = "c:\test\" '
inmail = "from@mail.ru"
outmail = "to@mail.ru"
smtp = "first"
ext = "*.rar"
'////////////////////////////////////////////////////////////////////////////////

mailagent = "febootimail.exe"
winRarPath = """C:\Program Files\WinRAR\WinRAR.exe"""

WshShell.Run winRarPath & " a -t -m5 -r -y -v40k -agDD-MMM-YY-HH-MM -ep3 " & archPath & " " & filePath, 0, True
WScript.Sleep 1000

sendmail

Sub sendmail

WshShell.Run mailagent & " -FROM " & inmail & " -TO " & outmail & " -SERVER " & smtp & " -ATTACH " & mailPath & ext & " -MSG " & mailPath & " -DEBUG -WAITAFTER 4 -LOG C:\test\mail.log "


WScript.Quit
End sub

Автор: G14
Дата сообщения: 29.11.2007 08:23
abasov
примерно так:

Код:
Sub sendmail
FolderPath = mailPath
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(FolderPath)
Set colFiles = objFolder.Files

For Each objFile in colFiles
WshShell.Run mailagent & " -FROM " & inmail & " -TO " & outmail & " -SERVER " & smtp & " -ATTACH " & objFile & " -MSG " & mailPath & " -DEBUG -WAITAFTER 4 -LOG C:\test\mail.log "
Next
WScript.Quit
End sub
Автор: abasov
Дата сообщения: 29.11.2007 08:33
G14
Спасиб, а как сделать что бы перед каждой коллекцией была пауза?
А то они все вместе запускаются

WshShell.Run mailagent & " -FROM " & inmail & " -TO " & outmail & " -SERVER " & smtp & " -ATTACH " & objFile & " -MSG " & mailPath & " -DEBUG -WAITAFTER 4 -LOG C:\test\mail.log ",0,true

немного не то, надо пауза
Автор: G14
Дата сообщения: 29.11.2007 08:50
abasov

Цитата:
немного не то, надо пауза

Да вообще-то я не дочитывал строку до конца Скопировал, поправил параметр аттача
Ну вставь после строки запуска майагента своего Wscript.Sleep xxxx
Автор: untitledds
Дата сообщения: 29.11.2007 08:56
Приветствую Коллеги,
возникла необходимость добовлять принтеры на сервер. Давать права "domain admin" местным совершенно не хочется, давать доступ к терминалу тоже. Ввел их в группу print operators, но при заходе на шару сервера им не видна пакпка fax and printers. Создал вот такой батничек

Код:
@echo off
setlocal

set IP=172.17.17.17
set SERVER=\\server
set DRVPATH=\\sever\DATA$\Distrib\Drivers\HP8150\PCL6
set INFNAME=hp8150_6.inf
set PRNAME="HP Laserjet 8150 PCL 6"
set DRVNAME="HP Laserjet 8150 PCL 6"
set SHARENAME="Printer"
set SHARE="HP8150PCL6"


cls


echo.
echo INSTALL PRINTERPORT...

cscript //D c:\print\portmgr.vbs -a -c %SERVER% -p "IP_%IP%" -h %IP% -t raw -n 9100 -me -y public -i 1 -2d
echo OK

echo.
echo Install driver printer and printer
cscript //D c:\print\prnmgr.vbs -c %SERVER% -a -b %PRNAME% -p "%DRVPATH%" -f "%DRVPATH%\%INFNAME%" -m %DRVNAME% -r "IP_%IP%"

echo.
echo Share Printer

cscript //D c:\print\prncfg.vbs -s -b "%SERVER%\%PRNAME%" -l %SHARENAME% -h %SHARE% +shared +published +rawonly -direct +queued
echo OK
echo.
echo.


endlocal

pause
Автор: cluster
Дата сообщения: 29.11.2007 09:44
Etalon

Цитата:
Const ADS_SCOPE_SUBTREE = 2

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = _
"Select Name, Location from 'LDAP://OU=MyOU,DC=fabrikam,DC=com' " _
& "Where objectClass='user'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

Do Until objRecordSet.EOF
Wscript.Echo "User Name: " & objRecordSet.Fields("Name").Value
objRecordSet.MoveNext
Loop

или

$strFilter = "user"

$Domain = [adsi]"LDAP://OU=MyOU,DC=fabrikam,DC=com"
$Searcher = New-Object System.DirectoryServices.DirectorySearcher
$Searcher.SearchRoot = $Domain
$Searcher.SearchScope = "Subtree"
$Searcher.PageSize = 1000

$Searcher.Filter = "(objectCategory=$strFilter)"

$Searcher.FindAll() | ForEach-Object -Process {
$Entry = $_.GetDirectoryEntry()
$Entry.Name
}


Так мне в файл надо!
Автор: abasov
Дата сообщения: 29.11.2007 09:45
рабочий финал:

Код:
' Скрипт Архивирует и мылит частями в отдельном письме
Set objRegExp = CreateObject("VBScript.RegExp")
Set WshShell = CreateObject("WScript.Shell")
objRegExp.Global = True

mailagent = "febootimail.exe"
winRarPath = """C:\Program Files\WinRAR\WinRAR.exe"""

'///////////////////////////////////////////////////////////////////////////////
filePath = "c:\test\*.*" ' откуда архивировать
archPath = "c:\test\arch" ' куда архивировать
mailPath = "c:\test\" ' откуда отправлять
inmail = "from@mail.ru"
outmail = "to@mail.ru"
smtp = "first" ' SMTP серврер
part = "100" ' в килобайтах размер части
'////////////////////////////////////////////////////////////////////////////////


WshShell.Run winRarPath & " a -t -m5 -r -y -v" & part & "k -agDD-MMM-YY-HH-MM -ep3 " & archPath & " " & filePath, 0, True


WScript.Sleep 1000
sendmail

Sub sendmail
FolderPath = mailPath
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder(FolderPath)
Set colFiles = objFolder.Files

For Each objFile in colFiles


WshShell.Run mailagent & " -FROM " & inmail & " -TO " & outmail & " -SERVER " & smtp & " -ATTACH " & objFile & " -MSG " & objFile & " -DEBUG -WAITAFTER 4 ",0,true

WScript.Sleep 4000
Next

WScript.Quit
End sub
Автор: Etalon
Дата сообщения: 29.11.2007 10:32
abasov

Цитата:
а как сделать что бы перед каждой коллекцией была пауза?
А то они все вместе запускаются


Код: Result = WshShell.Run mailagent & " -FROM
" & inmail & " -TO " & outmail & " -SERVER " & smtp & " -ATTACH " & objFile & " -MSG " & mailPath & " -DEBUG -WAITAFTER 4 -LOG C:\test\mail.log ",0,true
Автор: cluster
Дата сообщения: 29.11.2007 10:58
Etalon

Цитата:
Так у тебя же с выводом в файл было всё нормально

А мне никак не адаптировать твои примеры для создания файла..

Список можно простой:
Логин; ПОлное имя; Описание;
или
Логин <TAB> Полное имя <TAB> Описание;
Автор: FogFromDark
Дата сообщения: 29.11.2007 11:49
А вот еще такой вопрос, как бы мог выглядеть скрипт проверяющий что сетевой интерфейс уже получил IP и продолжающий мапить сетевые шары? Это иногда необходимо когда на клиентах не отрабатывает скрипт при входе в домен и не подключаются сетевые шары. Вот приблизительно как это должно выглядеть:


Код:
Option Explicit
Dim WshNetwork, objWMIService, IPConfig, IPConfigSet, count, i
Const strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Err.Number=0
On Error Resume Next
count = 0
Do While count=0
    Set IPConfigSet = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
    For Each IPConfig in IPConfigSet
        If Not IsNull(IPConfig.IPAddress) Then
            count = count+1
        End If
    Next    
loop
'далее идет скрипт подключения шар
Автор: Etalon
Дата сообщения: 29.11.2007 11:59
cluster

Код:
$strFilter = "user"

$Domain = [adsi]"LDAP://OU=MyOU, DC=fabrikam, DC=com"
$Searcher = New-Object System.DirectoryServices.DirectorySearcher
$Searcher.SearchRoot = $Domain
$Searcher.SearchScope = "Subtree"
$Searcher.PageSize = 1000

$Searcher.Filter = "(objectCategory=$strFilter)"

$s = ""

$Searcher.FindAll() | ForEach-Object -Process {
    $Entry = $_.GetDirectoryEntry()
    $s += $Entry.sAMAccountName + ";" + $Entry.Name + ";" + $Entry.Department + "`n"
}
Out-File -filepath users.txt -inputobject $s
Автор: abasov
Дата сообщения: 29.11.2007 12:17
Etalon
Дальше упрощать некуда...
Автор: Etalon
Дата сообщения: 29.11.2007 13:02
abasov
Ну почемуже? Можно отсылать почту не сторонней утилитой MailAgent, а встроенными средствами ОС. Пример...
Автор: abasov
Дата сообщения: 29.11.2007 13:36
Etalon
Не универсально, например на серверах обычно объекта CDO нет, нафик там Office или глюклук

Добавлено:
Etalon
бог с ним не в винде консольных средств отправки мыла, дык в висте убрали телнет, нет его, теперь компонентом отдельным...
Автор: Etalon
Дата сообщения: 29.11.2007 14:00
abasov
Проверил сервер. Офиса там отродясь не было, а CDO есть. Странно...
Автор: G14
Дата сообщения: 29.11.2007 14:15
abasov

Цитата:
Не универсально, например на серверах обычно объекта CDO нет, нафик там Office или глюклук

CDO это часть COM, он есть на всех серверных ОС, начиная с Win2000.

Добавлено:

Цитата:
бог с ним не в винде консольных средств отправки мыла, дык в висте убрали телнет, нет его, теперь компонентом отдельным...

ну и что? а зачем нужен telnet ?
Автор: abasov
Дата сообщения: 29.11.2007 18:12
G14
telnet'ом тоже можно отправить мыло, на крайний случай
Автор: sofos
Дата сообщения: 29.11.2007 22:46
mozers

Спасибо Огромное!!!
Автор: rosalin
Дата сообщения: 30.11.2007 09:49
Уважаемые All

неужеле никто не поможет
мне в моей беде

[more=Вот это....]Ребята подскажите скрипт

что бы при запуске которого пользователь мог ввести текст
допустим какой нить проблемы и от кого

нажимал ОК и и текст у ходил админу на почту в локальной сети...


Код:Set objEmail = CreateObject("CDO.Message")

objEmail.Bodypart.CharSet = "windows-1251"
'objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "username"
'objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "userpwd"
objEmail.From = "user@fabrikam.com"
objEmail.To = "adm@fabrikam.com"
objEmail.Subject = "Месага от админа"
objEmail.Textbody = "Текст по русски"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "192.168.0.6"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send



Добавлено:
а лучше даже от кого автоматом бралось из реестра

на подобее этого


Код:'Имя и фамилия пользователя домена в параметр реестра

'Иногда возникает потребность записать всем пользователям
'в определённый ключ реестра фамилию и имя, взятые из AD.
'Такое решение позволит настроить некоторое ПО, которое
'может использовать в работе по умолчанию логин пользователя,
'но такой логин будет менее информативен, чем имя и фамилия,
'которые, как правило, указаны в учетной записи пользователя в домене.

strComputer = "."
const HKEY_LOCAL_MACHINE = &H80000002

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems1 = objWMIService.ExecQuery("Select * from Win32_NetworkLoginProfile where FullName is not null",,48)
Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "SYSTEM\CurrentControlSet\Services\lanmanserver\parameters"
strValueName = "srvcomment"
For Each objItem in colItems1
strValue = objItem.FullName
Next

oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue[/more]
Автор: G14
Дата сообщения: 30.11.2007 10:38
rosalin
Пример ввода текста:

Код: Dim MsgText, MsgFrom

MsgText = InputBox("Введите описание")
MsgFrom = InputBox("Enter something")

Set objEmail = CreateObject("CDO.Message")

objEmail.Bodypart.CharSet = "windows-1251"
'objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "username"
'objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "userpwd"
objEmail.From = MsgFrom
objEmail.To = "odmin@domain.ru"
objEmail.Subject = "Письмо"
objEmail.Textbody = MsgText
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "1.2.3.4"
objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
Автор: cluster
Дата сообщения: 30.11.2007 11:36
Etalon

Цитата:
$strFilter = "user"

$Domain = [adsi]"LDAP://OU=MyOU, DC=fabrikam, DC=com"
$Searcher = New-Object System.DirectoryServices.DirectorySearcher
$Searcher.SearchRoot = $Domain
$Searcher.SearchScope = "Subtree"
$Searcher.PageSize = 1000
...
..
.

Пишет "ошибка", Недопустимый знак (в первом символе)
Автор: YNY
Дата сообщения: 30.11.2007 11:47

Цитата:
rosalin

а че телефонная связь не прет???
пользователь не привык описывать проблему в письме, если какое-либо ср-во отправки глючит то нах это ада???
Многие проги могут исп NTLM атентифик-ю
Автор: Etalon
Дата сообщения: 30.11.2007 12:56
cluster
Это на Windows PowerShell сценарий
Соответственно если он у тебя не установлен то надо установить
Автор: cluster
Дата сообщения: 30.11.2007 14:52
Etalon
уу, тут надо разбираться. пасиба.

ALL
Есть ли возможность создавать GPO с помощью скрипта?
Автор: Sun Ray
Дата сообщения: 02.12.2007 14:09
Подскажите как переделать этот скрипт для уведомления на мыло о сбоях в работе FRS?

Код: On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{"{impersonationLevel=impersonate,(Security)}!\\" & strComputer & _
"\root\cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
("SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA " _
& "'Win32_NTLogEvent' AND TargetInstance.EventCode = '560' AND " _
& "TargetInstance.Logfile = 'Security' GROUP WITHIN 2")
Do
Set objLatestEvent = colMonitoredEvents.NextEvent
strAlertToSend = "Internet Explorer security settings have been " & _
"changed."
Wscript.Echo strAlertToSend
Loop
Автор: G14
Дата сообщения: 02.12.2007 18:24
Sun Ray

Цитата:
если можно примерчик отправки на мыло мессаги как сделать?

Что, поднять глаза на пару постов вверх лень?
Автор: FogFromDark
Дата сообщения: 03.12.2007 09:14
Уважаемые, помогите составить скрипт проверяющий что сетевой интерфейс уже получил IP и продолжающий мапить сетевые шары? Это иногда необходимо когда на клиентах не отрабатывает скрипт при входе в домен и не подключаются сетевые шары. Желательно использовать WMI и не использовать Ping. Приблизительно должно быть что-то типа этого, но данный скрипт не работает так как надо, а в чем ошибка не пойму:


Код:
Option Explicit
Dim WshNetwork, objWMIService, IPConfig, IPConfigSet, count
Const strComputer = "."
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Err.Number=0
On Error Resume Next
count = 0
Do While count=0
Set IPConfigSet = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE")
For Each IPConfig in IPConfigSet
If Not IsNull(IPConfig.IPAddress) Then
count = count+1
End If
Next
loop
'далее идет скрипт подключения шар
Автор: rosalin
Дата сообщения: 03.12.2007 09:34
Уважаемый G14 тогда еще вот такой вопрос как cделать заголовок MsqBox

и в тексте описания делать переносы по строкам


Допустим заголовок "письмо админу"

"Опишите проблему
подробно"

Автор: Sun Ray
Дата сообщения: 03.12.2007 13:29

Цитата:
Что, поднять глаза на пару постов вверх лень?

это нагуглил уже=)

А не подскажите как можно отследить ошибку печати на принтере?

И еще по WMI хотел спросить...
Как автоматом повесить триггер на перехват после ребута сервера? В автозапуск добавляю- запускается и отваливается, а если в шедулер добавить- то работает. Как это сделать массово для нескольки серверов, что-бы на каждом в шедулер не добавлять или добавить в шедулер группово как?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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