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

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

Автор: mistx
Дата сообщения: 31.01.2007 13:13
Sk1f
Да. Но сервер нужно оставить включенным
Автор: urel
Дата сообщения: 31.01.2007 13:56
Sk1f
schtasks/at для этого и предназначены
можно указывать прямо скримт - шедулер разберется. запускать следующий после выполнения первого - можно либо просто по очереди из 3го сценария, либо из 1го

Добавлено:
mistx
вобщет скрипт должен выглядеть так, а то у теяб проверка идет после цикла =)

Код: @echo off

set txt=%TEMP%\jsjflsdkf.tmp
net view > %txt%

for /f "skip=3" %%q in (%txt%) do (
if not "%%q"=="\\SERV313" (
echo shuting down %%q
echo shutdown /s /m %%q
echo.
)

)
del /q %txt%
Автор: Sk1f
Дата сообщения: 31.01.2007 14:26
urel, если у меня в скрипте с помощью WShell запускается скрипт. То работа основного скрипта будет завершена тогда, когда завершит работу скрипт запускаемый из WShell?

p.s. у меня скриптом запускается скрипт (xcacls.vbs), он считывает хренову тучу папок, их права и пихает это все в лог (лог ~ 10 метров). После этого запускается второй скрипт, который удаляет первые 2-3 и несколько последних строк из лог файла.
Не понимаю - время работы xcacls.vbs примерно минут 20. Т.е. если я поставлю выполнять скрипт после отработки первого. То не возникнет ли такая ситуация - второй скрипт запустится в тот момент когда еще не был еще отработан xcacls и соответственно лог файла нет.

Автор: urel
Дата сообщения: 31.01.2007 15:00
Sk1f
смотря как за пустить - можно запустить и продолжить выполнение первого.
запусти сразу второй после первого(из первого - те добавь в конец run/exec)
Автор: gap5
Дата сообщения: 31.01.2007 23:58
Вопрос 1:
Можно ли через VBS привязать сетевой диск таким образом, чтобы он был виден\доступен для системы (т.е. юзера NT-AUTHORITY/System) свободно, а для любого залогиненого юзера появлялся запрос с паролем?

Сейчас если диск замаплен от имени системы (через scheduled task и net use), то системе диск доступен, но для юзера появляется "Logon failure".

Здесь нужен именно запрос имени:пароля, т.к. серваки не в одном домене.

P.S. Другой вариант когда в net use (при маппинге от имени системы) я указываю имя:пароль юзера который имеет доступ к этой шаре всегда - не работает (диск не мапится совсем)...

"C:\WINDOWS>schtasks /create /ru system /sc onstart /tn aaaa /tr "C:\WINDOWS\syst
em32\net.exe use g: \\server.net\sysvol pass /user:user"

Вопрос 2:
Нужно с одного компа выключать другие, выдавать для этого админские права не хочется...

Через shutdown.exe это возможно сделать, достаточно наделить юзера (от чьего имени стартует эта софтина) следующими правами: SeShutdownPrivilege и SeRemoteShutdownPrivilege, но тут возникают проблемы - она не позволяет выставить таймаут и не позволяет возможности юзеру отменить процедуру выключения... Другая чудная утилита psshutdown (от Sysinternals) теоретически этих проблем не имеет, но работает только под админским аккаунтом, видимо это связано с необходимостью запуска сервиса на удаленных компа (хотя пермишн на запуск сервиса я тоже выдавал, но безтолку, уверенно говорит Access denied)...

Может есть что ни будь вроде psshutdown (с возможностями по настройке таймаута и интерактивной отмены) но работающее без админских прав?
Автор: urel
Дата сообщения: 01.02.2007 10:55
gap5
диски мапяться в сесии пользователя - ты не можеш видеть доск замапленый у другого пользователя, наксколько я понимаю.
почему пользователь сам не может замапить диск? можно его попросить ввести логин пароль в логон скрипте или же сделать это самостоятельно.

попробуй poweruser
Автор: gap5
Дата сообщения: 01.02.2007 12:39
urel
если диск мапится системой (от имени системы) то его видно всем... но при попытке зайти на него винда использует реквизиты текущего юзера, и если они "не канают" посылает, вместо того чтобы спросить другие реквизиты... (как например это сделано на фтп - если анонимус не пускает)

Возникла идея заняться энергосбережением, отправлять компы в suspend\hibernate через определенное время.

Для начала хотелось бы выяснить как часто и в каких объемах простаивают компы... пока идеей вижу установку на скринсейвер некоего скрипта который будет писать в лог кол-во минут работы...

Никто данный вопрос не исследовал? Имеет вообще смысл?
Автор: mistx
Дата сообщения: 02.02.2007 06:27
urel
сделал, он просто мне выдал,выключения не произошло
D:\>shutdown-final.bat
shuting down \\STUDENT1
shutdown /s /m \\STUDENT1

shuting down \\STUDENT11
shutdown /s /m \\STUDENT11

shuting down \\STUDENT12
shutdown /s /m \\STUDENT12

shuting down \\STUDENT13
shutdown /s /m \\STUDENT13

shuting down \\STUDENT14
shutdown /s /m \\STUDENT14

shuting down \\STUDENT2
shutdown /s /m \\STUDENT2

shuting down \\STUDENT5
shutdown /s /m \\STUDENT5

shuting down \\STUDENT7
shutdown /s /m \\STUDENT7

shuting down The
shutdown /s /m The
Автор: urel
Дата сообщения: 02.02.2007 08:51
gap5
а почему пользователь сам не может примапить?

mistx
а ты смотрел что сделал? команда echo выводит на экран. уберои ее
shutdown /s /m %%q
вместо
echo shutdown /s /m %%q
Автор: lokiSSE
Дата сообщения: 02.02.2007 12:03
Господа автоматизаторы - есть следующий код
On Error Resume Next
Set objSysInfo = CreateObject("ADSystemInfo")
Set objNetwork = CreateObject("Wscript.Network")
Set wshNetwork = CreateObject("WScript.Network")
Set CheckDrive = WshNetwork.EnumNetworkDrives()
strUserPath = "LDAP://" & objSysInfo.UserName
Set objUser = GetObject(strUserPath)
For Each strGroup in objUser.MemberOf
strGroupPath = "LDAP://" & strGroup
Set objGroup = GetObject(strGroupPath)
strGroupName = objGroup.CN
AlreadyConnected = False
Select Case strGroupName

Case "Проверка"
wshNetwork.RemoveNetworkDrive "K:",true,true
'WshNetwork.MapNetworkDrive "K:", "\\data\public"
'objNetwork.MapNetworkDrive "s:", "\\data\public"

End Select
Next

Но этот код не работает, суть - в зависимости от группы подключить(это работает если раскоментить). а главное - отключить диски. Причем если диск подключить на букву скриптом - то он отключается скриптом нормально. А если подключаем диск к примеру через мой компьютер - то скрипт не может отключить его. Грубо говоря не отключает диск. Что не так ?
Автор: urel
Дата сообщения: 02.02.2007 12:39
lokiSSE
грубо нужно

rightman = false

For Each strGroup in objUser.MemberOf
strGroupPath = "LDAP://" & strGroup
Set objGroup = GetObject(strGroupPath)
strGroupName = objGroup.CN

Select Case strGroupName
Case "Проверка" rightman = true
End Select

Next

if rightman then
WshNetwork.MapNetworkDrive "K:", "\\data\public"
else
wshNetwork.RemoveNetworkDrive "K:",true,true
end if
Автор: strizhakovs
Дата сообщения: 02.02.2007 14:32
Доброго времени суток!

Ктонить знает, как узнать сетевой путь, конкретного сетевого диска при помощи скрипта.

Есть такой скрипт, который перебирает все сетевые диски и определяет сетевые пути к ним.

'************************************************************
Set WSHNetwork = WScript.CreateObject("WScript.Network")
Set colDrives = WSHNetwork.EnumNetworkDrives
If colDrives.Count = 0 Then
MsgBox "Подключенных сетевых дисков нет", _
vbInformation + vbOkOnly, _
"Работа с WSHNetwork"
Else
strMsg = "Текущие сетевые подключения: " & Chr(10)
For i = 0 To colDrives.Count - 1 Step 2
strMsg = strMsg & Chr(10) & colDrives(i) & Chr(9) & colDrives(i + 1)
Next

MsgBox strMsg, _
vbInformation + vbOkOnly, _
"Работа с WSHNetwork"
End If
'***************************************************************

А мне нужно немного другое.
Нужно осуществить проверку на сетевой диск с определенной буквой. Например:
проверить подключен ли сетевой диск М: и если да, то узнать какой у него сетевой путь, и если сетевую путь верен, то ничего не делать, а если не верен (не равен той переменной с которой его сравнивают), то перемапить диск M: с правильным сетевым путем.

Как можно это реализовать? точнее как определить сетевой путь, допустим диска М: , а все остальное я сам напишу . Но если кто напишит все, буду очень признателен.

Автор: urel
Дата сообщения: 02.02.2007 14:48
strizhakovs
так у тебя все написано, осталось вставить условия
Автор: strizhakovs
Дата сообщения: 02.02.2007 14:56
urel
Я понимаю, но проблема в том, что сетевых дисков много и нехотелось каждый раз циклом гонять, есть ли другой метод определения
Автор: urel
Дата сообщения: 02.02.2007 15:30
strizhakovs
не так много =)
в конце концов - можно просто переподключить диск...
Автор: north_crow
Дата сообщения: 03.02.2007 23:22
коллеги, прошу помощи!
передо мной стоит задача перенести exchange с DC на отдельный сервер.
сам перенос exch труда не составит и перенаправление работающих в данное время пользователей на новый exch тоже труда не составит, т.к. старый exch после переноса будет еще 1 неделю работать и сам красиво всех перенаправлять.
а вот как с помощью vbs сменить адрес почтового сервера у тех пользователей которые к примеру в данный момент отсутсвуют на рабочих местах и появятся на работе после вывода из строя старого exch?
т.е. если быть локаничным - то как с помощью vbs помеять у пользователей адрес exchange на новый? клиенты приемущественно outlook 2003 и местами еще outlook xp
Автор: urel
Дата сообщения: 05.02.2007 09:05
north_crow
похоже - это, тк нужно редактировать профиль.
хттп://www.microsoft.com/downloads/details.aspx?FamilyID=56F45AC3-448F-4CCC-9BD5-B6B52C13B29C&displaylang=en
Автор: strizhakovs
Дата сообщения: 05.02.2007 11:50
urel

Цитата:
не так много =)


если не так много значит еще есть способы...
Может кто знает еще альтернативный вариант определения пути сетевого диска?
Автор: mistx
Дата сообщения: 06.02.2007 11:51
urel
волшебник!!!
спасибо огромное.
Автор: TeX
Дата сообщения: 06.02.2007 15:58
Уважаемые !
Помогите новичку в скриптах.
Необходимо получить такие атрибуты файла как:
OriginalFilename
InternalName
CompanyName
ProductName
Приведите пример.
Автор: Sk1f
Дата сообщения: 06.02.2007 16:47
2TeX

Цитата:

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

Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_Datafile Where name = 'c:\\Scripts\\Adsi.vbs'")

For Each objFile in colFiles
Wscript.Echo "Access mask: " & objFile.AccessMask
Wscript.Echo "Archive: " & objFile.Archive
Wscript.Echo "Compressed: " & objFile.Compressed
Wscript.Echo "Compression method: " & objFile.CompressionMethod
Wscript.Echo "Creation date: " & objFile.CreationDate
Wscript.Echo "Computer system name: " & objFile.CSName
Wscript.Echo "Drive: " & objFile.Drive
Wscript.Echo "8.3 file name: " & objFile.EightDotThreeFileName
Wscript.Echo "Encrypted: " & objFile.Encrypted
Wscript.Echo "Encryption method: " & objFile.EncryptionMethod
Wscript.Echo "Extension: " & objFile.Extension
Wscript.Echo "File name: " & objFile.FileName
Wscript.Echo "File size: " & objFile.FileSize
Wscript.Echo "File type: " & objFile.FileType
Wscript.Echo "File system name: " & objFile.FSName
Wscript.Echo "Hidden: " & objFile.Hidden
Wscript.Echo "Last accessed: " & objFile.LastAccessed
Wscript.Echo "Last modified: " & objFile.LastModified
Wscript.Echo "Manufacturer: " & objFile.Manufacturer
Wscript.Echo "Name: " & objFile.Name
Wscript.Echo "Path: " & objFile.Path
Wscript.Echo "Readable: " & objFile.Readable
Wscript.Echo "System: " & objFile.System
Wscript.Echo "Version: " & objFile.Version
Wscript.Echo "Writeable: " & objFile.Writeable
Next


p.s. Откуда у файла атрибуты: OriginalFilename, InternalName, CompanyName, ProductName???

Автор: idiMAN
Дата сообщения: 06.02.2007 17:39
Sk1f

Цитата:
Откуда у файла атрибуты: OriginalFilename, InternalName, CompanyName, ProductName???


Видимо из VersionInfo, разумеется только для exe, dll, osx и т.п.
Автор: TeX
Дата сообщения: 07.02.2007 07:02
Sk1f
Спасибо за пример, но это не то, что мен нужно.


idiMAN
Скорее всего это то что нужно, но как получить VersionInfo и потом использовать для получения вышеперечисленных свойств.
Автор: Sk1f
Дата сообщения: 07.02.2007 11:09
2TeX

Цитата:

FileName = WScript.Arguments(0)
Const PropsCount = 37

Set objFSO = CreateObject ("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile(FileName)

Set objShell = CreateObject ("Shell.Application")
Set objFolder = objShell.Namespace (objFile.ParentFolder.Path)
if objFolder is nothing then
Wscript.Echo "Folder not found!"
Wscript.Quit
end if

Dim arrHeaders(50)

Set objItems = objFolder.Items()
'Wscript.echo objFolder.GetDetailsOf (objItems, 2)

For i = 0 to PropsCount
arrHeaders(i) = objFolder.GetDetailsOf (objItems, i)
'Wscript.echo arrHeaders(i)
Next

Set objItem = objFolder.ParseName(objFile.Name)
if objItem is nothing then
Wscript.Echo "Folder item not found!"
Wscript.Quit
end if

For i = 0 to PropsCount
'If i <> 9 then
Wscript.echo i & " " & arrHeaders(i) _
& ": " & objFolder.GetDetailsOf (objItem, i)
'End If
Next
Wscript.Echo


Дополнительная инфа: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/shell/reference/objects/folder/getdetailsof.asp
http://members.chello.be/ws36637/properties.html
Автор: TeX
Дата сообщения: 07.02.2007 14:23
Sk1f
Уже что-то близкое, но более предпочтительнее получать именно OriginalFilename, InternalName, это очень важно. Я просто пытаюсь написать скрипт, который борется с вирусом wikull, примитивно, но все ж. Этот вирус можно идентифицировать именно по этим свойствам.
Автор: north_crow
Дата сообщения: 08.02.2007 09:21
коллеги!
прошу помощи или совета.

вот есть кусок из скрипта

Код:
objUser.Put "scriptPath", "test.bat"
objUser.SetInfo
Автор: Sk1f
Дата сообщения: 08.02.2007 10:10
north_crow смотри пример:

Цитата:

Const ADS_PROPERTY_DELETE = 4

Set objUser = GetObject _
("LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com")

objUser.PutEx ADS_PROPERTY_DELETE, _
"otherMobile", Array("(425) 555-3334")
objUser.SetInfo


Автор: tolyn77
Дата сообщения: 08.02.2007 13:17
не подскажите как из командной строки можно поменять шлюз по умолчанию?
Автор: FreemanRU
Дата сообщения: 08.02.2007 13:23
netsh interface ip set address name="Подключение по локальной сети" gateway=127.0.0.1 gwmetric=0
Автор: urel
Дата сообщения: 08.02.2007 14:07
tolyn77
route change 0.0.0.0 mask 0.0.0.0 127.0.0.1

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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