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

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

Автор: tolyn77
Дата сообщения: 08.02.2007 15:52
FreemanRU
большой сенкс очень помогло
Автор: gap5
Дата сообщения: 08.02.2007 17:48
Подскажите, через VBscript как смотреть размер файла?
Нужно: если файл %windir%\aaa.dat меньше ХХХХ килобайт, перезаписать его удаленным \\server.net\aaa\aaa.dat.
Автор: urel
Дата сообщения: 08.02.2007 18:34
gap5
на этой станице написано как через WMI получить инфу от файла

Автор: Bugriy
Дата сообщения: 09.02.2007 14:22
Мне нужно в скипте на vbs в N-ную по счёту строку файла кое-чего дописать. Средствами объекта FileSystemObject, как я понял, этого сделать нельзя. А как можно?
Автор: Sk1f
Дата сообщения: 09.02.2007 16:03
Bugriy:

Цитата:


Dim arrFileLines()
i = 0

Const ForAppending = 8

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objReadFile = objFSO.OpenTextFile("D:\Test.txt", 1)

Do Until objFile.AtEndOfStream
Redim Preserve arrFileLines(i)
arrFileLines(i) = objFile.ReadLine
i = i + 1
Loop

objFile.Close

Set objWriteFile = objFSO.OpenTextFile("d:\test1.txt", ForAppending, True)

' k - если хочешь вставить между 10 и 11 строками, то k - это 11 строка

For i = Lbound(arrFileLines) To k Step 1
    objWriteFile.WriteLine("" & arrFileLines(i))
        If i = k Then
            objWriteFile.WriteLine("TEST TEST TEST")
        End If
Next

For i = k To UBound(arrFileLines) Step 1
    objWriteFile.WriteLine("" & arrFileLines(i))
Next

objWriteFile.Close




p.s. Можно все запихать в один For, а не создавать два цикла.
Автор: gap5
Дата сообщения: 10.02.2007 20:27
Можно через VBS открывать окно интернет-эксплорера с выключенной панелью инструментов?
Автор: gap5
Дата сообщения: 12.02.2007 21:40
Кстати, как в VBS сделать окно с полем textarea, в этом поле должен быть текст (желательно html, или хотя бы с возможностями изменения цвета, шрифта) со скроллером?

Ниже поля две кнопки.
Автор: jONES1979
Дата сообщения: 14.02.2007 14:12
gap5

Set objExplorer = CreateObject("InternetExplorer.Application")

objExplorer.Navigate "about:blank"
<b>objExplorer.ToolBar = 0 </b>
objExplorer.StatusBar = 0
objExplorer.Left = 100
objExplorer.Top = 100
objExplorer.Width = 400
objExplorer.Height = 200
objExplorer.Visible = 1

objExplorer.Document.Body.Style.Cursor = "wait"

objExplorer.Document.Title = "Заголовок"
objExplorer.Document.Body.InnerHTML = "Загрузка"

Добавлено:
objExplorer.ToolBar = 0
Автор: as2389
Дата сообщения: 15.02.2007 06:52
Подскажите как создать VPN соединение(НЕ подключиться), с опеределёнными параметрами(нужно что бы брались Имя пользователя и пароль Windows) на юзерских компах. Заранее благодарен.
Автор: strizhakovs
Дата сообщения: 15.02.2007 11:18
Помогите решить вот такую задачу.
Есть список айпи адресов машин в домене, как используя его получить список с называнием машин?
ну или изолированная задача есть айпи машины в сети, как получить её доменное имя?
Автор: urel
Дата сообщения: 15.02.2007 13:41
strizhakovs
dns - если обратная зона есть или пробовать через WMI вытянуть
Автор: strizhakovs
Дата сообщения: 15.02.2007 15:26
А можно более подробно описать эти варианты, а то не очень понятно как
Автор: gap5
Дата сообщения: 15.02.2007 16:26
Создаю скриптом ярлыки:

IF Not objFSO.FileExists(strDesktop & "\Ярлычог.lnk") THEN
set oShellLink = WshShell.CreateShortcut(strDesktop & "\Ярлычог.lnk")
oShellLink.TargetPath = "X:\Прекрасная папка\Какбыдляяфайлига\файлиг.doc"
oShellLink.WindowStyle = 1
oShellLink.Save
set oShellLink = NOTHING
END IF

Все вроде бы хорошо, но иногда путь до файла в ярлыке прописывается вот такой:

"X:\Прекрасн\Какбыдля\файлиг.doc"

Т.е. названия папок обрезаются до 8 символов.
Что за нафиг?
Автор: FreemanRU
Дата сообщения: 15.02.2007 16:31
gap5

Цитата:
oShellLink.TargetPath = "X:\Прекрасная папка\Какбыдляяфайлига\файлиг.doc"

переделай на

Код: oShellLink.TargetPath = """X:\Прекрасная папка\Какбыдляяфайлига\файлиг.doc"""
Автор: gap5
Дата сообщения: 15.02.2007 18:45
FreemanRU
Не влияет...
Все равно где-то в 1 из 15 запусков адрес прописывается с ограничением в 8 символов... и никак не могу отследить закономерность

urel

Цитата:

@echo off

set txt=computers_list.txt

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


Два вопроса:

1) Можно ли для shutdown.exe выставить некий connection timeout? А то для выключенных компов он иногда подвисает чуть ли не на минуту, прежде чем пишет что имя отсутствует, а иногда сразу пишет. Или может как-то принудительно делать terminate job?

2) Как описать shutdown только для компов имеющих в названии office?
Автор: perseus
Дата сообщения: 15.02.2007 21:59
Подскажите, плиз, как реализовать:
Нужен скрипт на JScript, который находит user'ов (по ФИО) в ADSI и изменяет значения атрибутов (отдела, номер телефона и др..)
|| IP контроллера домена 192.168.0.231
|| DomainDN DC=econ,DC=ru
|| User DN CN=<ФИО>,OU=<Название отдела>,DC=econ,DC=ru
|| Есть админ учетка в домене

Буду рад любой инфе по работе с ADSI и протоколом LDAP в JScript

Заранее благодарен : )
Автор: begem0t
Дата сообщения: 16.02.2007 13:02
нет ли у кого скрипта, который удаляет старые файлы из каталога и подкаталогов, например файлы старее 7 дней?
Автор: strizhakovs
Дата сообщения: 16.02.2007 14:01

Цитата:
нет ли у кого скрипта, который удаляет старые файлы из каталога и подкаталогов, например файлы старее 7 дней?

Лови функцию с моего логон-скрипта, мелочи сам подработаешь
'===========================================================
'
' Function DelFilesDate(sFullPath, ndays)
' sFullPath - delete directory
' ndays - quantity of days after then file deleting
' COMMENT: delete temp files old "ndays" days
'
'===========================================================

Function DelFilesDate(sFullPath, ndays)
Dim lfsObject
Dim lFileList
Dim lFolder
Dim lFile

Set lfsObject = CreateObject("Scripting.FileSystemObject")

'Process contained files first
If lfsObject.FolderExists(sFullPath) Then
    Set lFolder = lfsObject.GetFolder(sFullPath)
    Set lFileList = lFolder.Files
        ' Scan each file in the folder
For Each lFile In lFileList    
     ' Get the difference In days between the two dates
     Diff = DateDiff("d", lFile.DateLastModified, Now)        
    
         If Diff >= ndays Then
             'MsgBox lFile.Name
             lfsObject.DeleteFile(sFullPath & "\" & lFile.Name)
         End If    
     Next
If lFolder = WshShell.ExpandEnvironmentStrings("%TEMP%") Then                 
'Process subdirectories
Set lSubFolders = lFolder.SubFolders
            For Each lSubFolder in lSubFolders
NewSource = strSourceDir & "\" & lSubFolder.Name
'Recursive call to delete all subdirectories
DelFiles NewSource
'Delete this directory
lSubFolder.Delete
         Next
            Else
End If
End If
'Cleanup
Set lfsObject = Nothing
Set lFileList = Nothing
Set lFolder = Nothing
Set lFile = Nothing

End Function
Автор: mistx
Дата сообщения: 20.02.2007 16:07
помогите решить проблему плиз.
мониторы компов в домене отрубаются по умолчанию через 20 минут.
как запретить выключение?
Автор: Exilim
Дата сообщения: 21.02.2007 23:04
Искал по всей теме как автоматом менять настройки сетевого интерфейса и нашел только наводку..

Вот, еси кому пригодится, чтобы голову не ломать =)


netsh interface ip set address name="Ethernet" static 192.168.0.100 255.255.255.0 192.168.0.1 1
netsh interface ip set dns name="Ethernet" static 192.168.0.1
Автор: gap5
Дата сообщения: 23.02.2007 20:11
На компе две сетевые карты, через одну (ethernet) работа из дома, через другую (wi-fi) на работе. Соответственно обе карты (соединения) активными одновременно не бывают.

В Internet Explorer настройки proxy сервера прописываются глобально для LAN соединения, куда попадает как Ethernet так и Wi-Fi.

Задача: при поднятии Ethernet соединения удалять настройки proxy, при поднятии Wi-fi - прописывать заново. Теоретически это можно сделать через vbs скрипт, остается только автоматизировать его запуск.

Есть у кого ни будь идеи?

В крайнем случае как запускать ie с нужными параметрами proxy?
Автор: popsa72
Дата сообщения: 28.02.2007 20:43
Всем ПРУВЕТ!!
Задача:При замене серверов нужно пользователям заменить ярлыки, которые находяться в профилях.
Написал скрипт.
'*************************************************************
'* Замена ярлыков на диске с профилями по параметру "Обьект" в свойствах
'*************************************************************
On Error Resume Next
strComputer = "."
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("Wscript.Shell")
Set objWMIService = GetObject("winmgmts:{impersonatelevel=impersonate}!\\" &strComputer & "\root\CIMV2")

ProfilePath = objShell.ExpandEnvironmentStrings("%UserProfile%")
UserDrive = LCase(Left(ProfilePath,2))
LinkLoc = LCase("\\111\new.exe.lnk") 'Новый ярлык

TargetLoc = "\\222\old.EXE" 'путь который ищется
TargetLoc = Replace(LCase(TargetLoc),"\","\\")

Set colItem = objWMIService.ExecQuery("SELECT Name FROM Win32_ShortcutFile WHERE "&_ "Drive = '"&UserDrive&"' AND Path LIKE '\\Documents and Settings\\' AND Target = '"&TargetLoc&"'")
    For Each objItem In colItem
        objItem.Delete
        objFSO.CopyFile LinkLoc,objItem.Name,True
    Next

Он находит ярлыки, только если группе Users дан доступ как минимум на чтение к этим ярлыкам...
Запрос WMI не находит их если не соблюдено это условие
Но если учесть то что к профилю имеют доступ админы и сам пользователь, а не группа User, то получается ПОПИЯ...
Автор: Dimastii86
Дата сообщения: 02.03.2007 05:19
Привет мужики неподскажите как можно сделать такой скрип который бы при появлении новой машины в домене начал автоматически заливать софт(например ICQ,Winrar и.т.д) с сетевого диска на эту машину
Автор: Nsib
Дата сообщения: 02.03.2007 07:40

Цитата:
Привет мужики неподскажите как можно сделать такой скрип который бы при появлении новой машины в домене начал автоматически заливать софт(например ICQ,Winrar и.т.д) с сетевого диска на эту машину


Запускаешь логин-скрипт под системной учетной записью и при входе ситема начинает установку или обновление установленных программ.
'Update.vbs
Dim WshLogonPath
Set WshShell = WScript.CreateObject("WScript.Shell")

On Error Resume Next
If WshShell.FileExists("\\Controller\Scripts$\iChat.vbs") Then
    WshShell.Run "\\Controller\Scripts$\iChat.vbs", 0, True
End If
If WshShell.FileExists("\\Controller\Scripts$\RAdmin.vbs") Then
    WshShell.Run "\\Controller\Scripts$\RAdmin.vbs", 0, True
End If
If WshShell.FileExists("\\Controller\Scripts$\Update_key_DrWeb.vbs") Then
    WshShell.Run "\\Controller\Scripts$\Update_key_DrWeb.vbs", 0, True
End If
If WshShell.FileExists("\\Controller\Scripts$\Update_2Gis.vbs") Then
    WshShell.Run "\\Controller\Scripts$\Update_2Gis.vbs", 0, True
End If
If WshShell.FileExists("\\Controller\Scripts$\Ti.vbs") Then
    WshShell.Run "\\Controller\Scripts$\Ti.vbs", 0, True
End If
If WshShell.FileExists("\\Controller\Scripts$\WinRar.vbs") Then
    WshShell.Run "\\Controller\Scripts$\WinRar.vbs", 0, True
End If
И для примера Update_2Gis.vbs

Const ForReading = 1, ForWriting = 2, ForAppending = 3
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim Path
Dim Bases
Dim Base

Set WSHShell = WScript.CreateObject("WScript.Shell")

Path = ""

On Error Resume Next

GetErr1()
if Err.Source="WshShell.RegRead" then
    Err.Clear
    GetErr2()
    if Err.Source="WshShell.RegRead" then
        WshShell.Popup "Обратитесь к Администратору для установки ДубльГИС ",10
    else
        Path = WSHShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TechnoGrad\DoubleGIS\1.0\Path\")
        Path = Left(Path,Len(Path)-4)
        GetDate()
    end if
else
    Path = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TechnoGrad\DoubleGIS\1.0\All\")
    GetDate()
end if
Err.Clear

Function GetErr1()
    If WSHShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TechnoGrad\DoubleGIS\1.0\All\") Then
    End If
End Function

Function GetErr2()
    If WSHShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\TechnoGrad\DoubleGIS\1.0\Path\") Then
    End If
End Function

Function GetDate()
    Set lfsObject = CreateObject("Scripting.FileSystemObject")
    Set File1 = lfsObject.GetFile(Path & "\Nsk\grym.exe")
    Set File2 = lfsObject.GetFile("\\Controller\Scripts$\Update\2gis\Nsk\grym.exe")
    If File1.DateLastModified <> File2.DateLastModified Then
        CopyFiles "\\Controller\Scripts$\Update\2gis", Path
        Lnk()
        WSHShell.Popup "Обновление ДубльГИС завершино",10
    End If
End Function

Function CopyFiles(strSourceDir, strDestDir)
    On Error Resume Next
    Set lfsObject = CreateObject("Scripting.FileSystemObject")
    Set lFolder = lfsObject.GetFolder(strSourceDir)
    If strSourceDir > "" then
        Set NewFolder = lfsObject.CreateFolder(strDestDir)
        Set lFileList = lFolder.Files
        For Each lFile in lFileList
            lfsObject.CopyFile strSourceDir & "\" & lFile.Name, strDestDir & "\" & lFile.Name
        Next
        Set lSubFolders = lFolder.SubFolders
        For Each lSubFolder in lSubFolders
            NewSource = strSourceDir & "\" & lSubFolder.Name
            NewDest = strDestDir & "\" & lSubFolder.Name
            CopyFiles NewSource, NewDest
        Next
    End If
    Set lfsObject = Nothing
    Set lFileList = Nothing
    Set lFolder = Nothing
    Set lFile = Nothing
End Function

Function Lnk()
    Set lfsObject = CreateObject("Scripting.FileSystemObject")
    AllUsersPrograms = WSHShell.SpecialFolders("AllUsersPrograms")
    If lfsObject.FolderExists(AllUsersPrograms & "\ДубльГИС") Then
        Set lFolder = lfsObject.GetFolder(AllUsersPrograms & "\ДубльГИС")
    else
        Set lFolder = lfsObject.CreateFolder(AllUsersPrograms & "\ДубльГИС")
    End If
    Set Bases = CreateObject("Scripting.Dictionary")

    Bases.Add "Астрахань"        , "Astrakhan"
    Bases.Add "Барнаул"        ,"Barnaul"
    Bases.Add "Екатеринбург"    ,"Ekaterinburg"
    Bases.Add "Иркутск"        ,"Irkutsk"
    Bases.Add "Кемерово"        ,"Kemerovo"
    Bases.Add "Красноярск"        ,"Krasnoyarsk"
    Bases.Add "Курган"        ,"Kurgan"
    Bases.Add "Нижневартовск"    ,"Nizhnevartovsk"
    Bases.Add "Новокузнецк"        ,"Novokuznetsk"
    Bases.Add "Новосибирск"        ,"Nsk"
    Bases.Add "Омск"            ,"Omsk"
    Bases.Add "Томск"            ,"Tomsk"
    Bases.Add "Тюмень"        ,"Tyumen"

    For Each Base in Bases
        Set WshShortcut = WshShell.CreateShortcut(lFolder & "\" & Base & ".lnk")
        WshShortcut.IconLocation = Path & "\" & Bases.Item(Base) & "\grym.exe"
        WshShortcut.TargetPath = Path & "\" & Bases.Item(Base) & "\grym.exe"
        WshShortcut.WindowStyle = 1
        WshShortcut.WorkingDirectory = Path & "\" & Bases.Item(Base)
        WshShortcut.Save
    Next
    Set lfsObject = Nothing
    Set lFolder = Nothing
    Set Gis = Nothing
End Function
Автор: Bugriy
Дата сообщения: 02.03.2007 13:57
Как вывести список всех пользователей домена? Как вывести логины всех пользователей домена и названия их компьютеров? Есть свойства ADsPath - но это полный путь, а мне надо только названия.


userObj.ADsPath
computerObj.ADsPath

Автор: Dimastii86
Дата сообщения: 03.03.2007 21:50
If WshShell.FileExists("\\Controller\Scripts$\RAdmin.vbs") Then
WshShell.Run "\\Controller\Scripts$\RAdmin.vbs", 0, True


а вот еще вопрос например RAdmin.vbs- это скрипт по автоматической установки Radmina..... Можно посмотреть как он выглядит для примера.....
Автор: Nsib
Дата сообщения: 05.03.2007 10:34

Цитата:
а вот еще вопрос например RAdmin.vbs- это скрипт по автоматической установки Radmina..... Можно посмотреть как он выглядит для примера.....


Const ForReading = 1, ForWriting = 2, ForAppending = 3
Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
Dim FSO, Key, TxtStr, LineRead, Path, File
Set WSHShell = WScript.CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")
Path = ""

On Error Resume Next

GetErr()
if Err.Source="WshShell.RegRead" then
    Set WshEnv = WshShell.Environment("Process")
    WinPath = WshEnv("SystemRoot")&"\System32"
    CopyFiles "\\Controller\Scripts$\install\RAdmin", WinPath
    WshShell.Run WinPath & "\r_server.exe /install /silence", 1, False
    WshShell.Run WinPath & "\r_server.exe /start", 1, False
    WSHShell.Run "regedit /s \\Controller\Scripts$\install\RAdmin.reg",2

else
    WSHShell.Run "regedit /s \\Controller\Scripts$\install\RAdmin.reg",2
end if

Err.Clear
Function GetErr()
    If WSHShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\RAdmin\v2.0\Server\Parameters\Parameter") Then
    End If
End Function

Function CopyFiles(strSourceDir, strDestDir)
    On Error Resume Next
    Set lfsObject = CreateObject("Scripting.FileSystemObject")
    Set lFolder = lfsObject.GetFolder(strSourceDir)
    If strSourceDir > "" then
        Set NewFolder = lfsObject.CreateFolder(strDestDir)
        Set lFileList = lFolder.Files
        For Each lFile in lFileList
            lfsObject.CopyFile strSourceDir & "\" & lFile.Name, strDestDir & "\" & lFile.Name
        Next
        Set lSubFolders = lFolder.SubFolders
        For Each lSubFolder in lSubFolders
            NewSource = strSourceDir & "\" & lSubFolder.Name
            NewDest = strDestDir & "\" & lSubFolder.Name
            CopyFiles NewSource, NewDest
        Next
    End If
    Set lfsObject = Nothing
    Set lFileList = Nothing
    Set lFolder = Nothing
    Set lFile = Nothing
End Function
Автор: cluster
Дата сообщения: 06.03.2007 16:19
Ребят, помогите с проблемкой.
Добавляю в АД скриптом нового Пользователя. И скрипт на длинных именах "pre-Windows 2000" спотыкается. Там максимум 20 символов допустимо.
Как мне оптимизировать скрипт, чтобы значение "sAMAccountName" обрезалось и такое же обрезаноое использовать в "homeDirectory"?
Вот кусок скрипта:

winName = "Alexander.E.Anisimenko"
preName = "Alexander.E.Anisimen" ' MAX 20 SYMBOLS <-- Здесь приходится вручную править
set objParent = GetObject("LDAP://OU=Персонал,OU=Предприятия,OU=iTg,DC=aliance,DC=ru")
set objUser = objParent.Create("user", "cn=Script_UserName") ' e.g. joes
objUser.Put "sAMAccountName", preName ' e.g. joes
objUser.Put "userPrincipalName", winName & "@pkf.aliance.ru" ' e.g. joes@rallencorp.com
objUser.Put "givenName", "UserFirstName" ' e.g. Joe
objUser.Put "sn", "UserLastName" ' e.g. Smith
objUser.Put "displayName", "FirstName LastName" ' e.g. Joe Smith
objUser.Put "Description", "Специалист" ' e.g. Директор
objUser.Put "HomeDirectory" , "\\aliance\" & preName & "\home$\"

Как использовать вместо winName и preName только одну переменную?

+
И какой командой выставить галки
- Пользователь не может менять пароль
- Пароль никогда не истекает
Автор: Bugriy
Дата сообщения: 06.03.2007 17:31
Как узнать, есть OU или нет если известно FDN?

Разобрался. GetObject и ловить ошибку.
Автор: Staric
Дата сообщения: 07.03.2007 10:30
Есть скрипт от alecsandrb


http://forum.ru-board.com/topic.cgi?forum=8&topic=1908&start=1107&limit=1&m=1#1

Для создания домашних папок пользователей при логине их в систему.. Но что то он у меня папки создает, а вот с правами полный швах. Пользователи не могут в них писать.. Т.е. явно беда с правами.. При выполнении скрипта выдает какое то сообщение которое проскакивает мгновенно и прочитать его я не могу. У меня домен и файловый сервер на разных машинах, может быть связано с этим? И еще утилита xcacls.exe сейчас уже переделана как я понимаю так как на сайте мелкософта она скриптом сделана.. xcacls.vbs

Я конечно нашел exe-шник , но не срослось Помогите плииз.. А то руками создавать 2е сотни папок большой геморой.. Заранее спасибо

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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