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

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

Автор: ali0
Дата сообщения: 02.06.2007 14:14
Sk1f

Цитата:
Такая задача - excel файл, заполненный записями - имена фирм. Нужно перенести эти записи в БД. Все сделал кроме одного момента - ограничение на повторяющиеся имена фирм при считывании их с файла.
Как решить эту проблему?


Можно средствами Эксела предварительно отсортировать по этому параметру и при переносе сравнивать текущую запись с предыдущей.
Автор: Sk1f
Дата сообщения: 03.06.2007 20:31
Teo громадное спасибо. )))
Если бы раньше посмотрел, то мучений с программой было бы меньше.
Автор: uZver
Дата сообщения: 04.06.2007 12:12

Цитата:
ограничение на повторяющиеся имена фирм при считывании их с файла.



Цитата:
Можно средствами Эксела предварительно отсортировать по этому параметру

данные - фильтр - расширенный фильтр - только уникальные записи.
Автор: hamet2000
Дата сообщения: 05.06.2007 02:42
В скрипте использую команду назначение LPT1порта на сетевой принтер.
Подскажите, как сделать так чтобы при перезагрузке компа начначение порта запоминалось!

WshNetwork.AddPrinterConnection("LPT1:","\\Server1\Epson")

Добавлено:
Еще вопрос. Нужно каждую ночь выключать компьютеры пользователей домена определенной OU
помоему это не лутший вариант использование cmd в скрипте, особенно если много компов в OU подскажите как дописать грамотно скрипт.
Set WshShell = WScript.CreateObject("WScript.Shell")
cmd = "shutdown -r -f -m \\"

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=Lima,DC=test,DC=ru' " _
& "where objectClass='computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Timeout") = 10
objCommand.Properties("Searchscope") = 5
objCommand.Properties("Cache Results") = False
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
strComputer = objRecordSet.Fields("Name").Value
WshShell.Run cmd & strComputer
objRecordSet.MoveNext
Loop
Автор: Sandman319
Дата сообщения: 06.06.2007 14:33
Привет!
Прошу подсказать как решить одну проблему. Передо мной стоит такая задача: vbs-скриптом создаю папку, в свойствах безопасности у нее стоит галочка "наследовать от родительского объекта применимые к дочерним объектам разрешения". Есть ли возможность каким либо образом из vbs-скрипта эту галку снять? Долго объяснять для чего это надо, но поверьте - надо! С помощью wmi не нашел способа, может кто подскажет как это можно сделать?
Автор: Sk1f
Дата сообщения: 07.06.2007 07:29
Sandman319, используй xcacls.vbs

Цитата:

Function Permission(FolderPath)
Dim CmdX
Set WshShell = Wscript.CreateObject("Wscript.Shell")
CmdX = "xcacls.vbs " & FolderPath & " /I COPY"
WshShell.Run(CmdX)
WScript.Sleep 2200

End Function

Call Permission("C:\Test")


Скрипт xcacls.vbs найдешь на странице microsofta.
Автор: Sandman319
Дата сообщения: 07.06.2007 09:31
Sk1f
Дружище, спасибо тебе огромное!!! Все получилось!
Автор: YNY
Дата сообщения: 07.06.2007 11:02


Цитата:
стоит галочка "наследовать от родительского объекта

возможно подойдет вот это, хотя не совсем то что вы просили:
Cacls
Просмотр или изменение файлов избирательных таблиц управления доступом (DACL).

Синтаксис
cacls имя_файла [/t] [/e] [/c] [/g пользователь:разрешение] [/r пользователь [...]] [/p пользователь:разрешение [...]] [/d пользователь [...]]

Параметры
имя_файла
Обязательный параметр. Вывод избирательных таблиц управления доступом (DACL) указанных файлов.
/t
Изменение избирательных таблиц контроля доступа (DACL) указанных файлов в текущем каталоге и всех подкаталогах.
/e
Редактирование избирательной таблицы управления доступом (DACL) вместо ее замены.
/c
Продолжение внесения изменений в избирательные таблицы управления доступом (DACL) с игнорированием ошибок.
/g пользователь:разрешение
Предоставление прав доступа указанному пользователю

Добавлено:
подробности в справке и поддержке винды)

Добавлено:
может кто подскажет как остановить службу на компе посредством скрипта ?

Добавлено:
а более точно по пермиссиям:
...rename a file without getting an error message? Use the CIM_DataFile class. Ensure that you pass the entire path name when calling the Rename method, for example, "C:\Scripts\Test.txt" instead of "Text.txt".strComputer = "."

Set objWMIService = GetObject _
("winmgmts:" & "!\\" & strComputer & "\root\cimv2")

Set colFiles = objWMIService.ExecQuery _
("Select * from CIM_DataFile where Name = " _
& "'c:\\scripts\\toggle_service.vbs'")

For Each objFile in colFiles
errResult = objFile.Rename("c:\scripts\toggle_service.old")
Next

Смотреть надо класс CIM_DataFile
(The ChangeSecurityPermissions method in CIM_DataFile is implemented by WMI.)
Автор: Sandman319
Дата сообщения: 07.06.2007 13:07
YNY
Спасибо за подсказку направления поисков, про класс CIM_DataFile, хотя то что подсказал Sk1f сняло все вопросы.

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

Set objWMIService = GetObject("winmgmts:")
Set colSoftware = objWMIService.ExecQuery _
("Select * FROM Win32_Service WHERE Name ='ИМЯ_СЛУЖБЫ'" )
For Each objSoftware in colSoftware
objSoftware.StopService()
Next

старт соответственно

objSoftware.StartService()
Автор: YNY
Дата сообщения: 09.06.2007 08:01

Цитата:
Sandman319

пасибо конечно за пример остановки/запуска служб да только он почему-то воткает если 'ИМЯ_СЛУЖБЫ' не хранится в переменной а иначе выдается ошибка 0х80041017
(

Добавлено:
уже все воркает)
Автор: Baloven1
Дата сообщения: 10.06.2007 08:46
Народ додскажите пример скрипта:
требуется подключится к серверу MS SQL 2005 на компьютере Serv1 к базе данных Base1 и считать запись A из таблицы Tab1 затем произвести вычисления и записать данные в эту таблицу...
на скрипт центре ниче понять не могу... плохо у меня с инглишем
Автор: Garreth
Дата сообщения: 13.06.2007 03:05
Господа, помогите советом.
Есть [more=cmd-скрипт] copy \\dc\NETLOGON\reg.reg c:\
cd c:\
regedit /s C:\reg.reg
@Echo Off
Echo %Username% %ComputerName% %date% %time% >>\\dc\netlogon\logonScript.log[/more]. Установлен на Logon.
Хотелось бы, чтобы он в лог писал еще и успех/неуспех выполнения операции. Как это сделать, не прибегая к более продвинутым вещам (WSH, Kix)? Возможно, использовать IF ?
Автор: Sk1f
Дата сообщения: 13.06.2007 08:29
Baloven1, у тебя какие действия будут производиться с записью?
Есть два способа -
Первый это написать процедуру на SQL и подключаясь к SQL серверу вызывать процедуру с параметром.
Второй - обработку производить на клиенте, а не на сервере.

Информация для работы с БД(на русском и с примерами):
http://script-coding.info/ADO.html


Автор: SergIRBIS
Дата сообщения: 13.06.2007 16:16
Привет, подскажите пожалуйста возможно ли сделать так чтоб вподключался сетевой диск и подпись под ним была не типа: "shar_33otdel на "server1"" а просто и со вкусом 33 ОТДЕЛ (сами понимаете пользователи не все опытные, переименовать диск не могут, а что там по аглийски написано они не понимают). если есть такой скриптик, буду очень признателен.
Автор: Garreth
Дата сообщения: 14.06.2007 09:11
Вот что получилось со скриптом:
copy \\DC\NETLOGON\reg.reg c:\
set C=%ERRORLEVEL%
IF "%C%" == "0" set C=Copy Success!
IF "%C%" == "1" set C=Copy Failed!
cd c:\
regedit /s C:\reg.reg
set R=%ERRORLEVEL%
IF "%R%" == "0" set R=Registry Success!
IF "%R%" == "1" set R=Registry Failed!
@Echo Off
Echo %Username%,%ComputerName%,%date%,%time%,%C%,%R% >> \\DC\logon\logonScript.log.


Автор: Teo
Дата сообщения: 14.06.2007 10:31
нашёл, в чём причина моей проблемы
нужно скопировать недостающую библиотеку
wbemdisp.dll
и
wbemdisp.tlb
в system32\wbem\
и перерегистрировать её
Автор: slayer120
Дата сообщения: 15.06.2007 10:16
Подскажите какие-нибудь средства для работой с share и security файлов и
папок.
Задача - составить таблицу доступа (папка, группы юзеров, юзеры)
для файлового сервака (куча папок-шар и подпапок, внутри шар подпапки со своим секурите) .
С шарами вроде ясно - rmtshare (либо cacls) а вот как быть с секурите?
Автор: SergIRBIS
Дата сообщения: 15.06.2007 14:57
Жаль что ни кто не знает как изменить название диска с помощью скрипта...... мне очень надо это сделать но ни где нет ни чего подобного ............ я уже думаю может подключать не дисками а папками (их можно назвать как угодно), правда это плохо на рабочем столе сотрудников можно пол часа искать эти ярлыки да и выглядят они как обычные папки очень не удобно........ Может есть гуру который поможет в этом вопросе....
Автор: gap5
Дата сообщения: 15.06.2007 15:16
SergIRBIS
' VBScript to map a network drive.
' ----------------------------------------'
'
On Error Resume Next

Dim objNetwork, strDrive, objShell, objUNC
Dim strRemotePath, strDriveLetter, strNewName
'
strDriveLetter = "k:"
strRemotePath = "\\serv.net\111"
strNewName = "Disk drive"

' Section to map the network drive
' (strLocalDrive, strRemoteShare, [persistent], [strUser], [strPassword])
Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strDriveLetter, strRemotePath, True

' Section which actually (re)names the Mapped Drive
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName

WScript.Quit

' End of script.
Автор: sarafan
Дата сообщения: 16.06.2007 11:11
Всем доброго времени суток
Господа подскажите следующее:
Как в AD у конкретной группы пользователей удалить стандартные игрушки
(пасьянс косынка и т д)
Клиенты в основном Win2000SP4
Может батник какой-то есть
Или стандартными средствами GPO можно доступ закрыть
(хотя там уже рылся ничего подходящего ненашел)
Спасибо
Автор: SergIRBIS
Дата сообщения: 18.06.2007 08:50
gap5

Спасибо огромное, я в скриптах не силен, сложновато пока, а требования руководством выдвигаються. Перерыл в инете много но такого скрипта не нашел....

Еще раз огромное спасибо....
Автор: vlazari
Дата сообщения: 18.06.2007 09:12
SergIRBIS
А что за скрипт? что то я не вижу его. я пользовался когда вот таким - сам написал (чё там писать то).
============================
@echo off

Echo Deleting Games

del %SystemRoot%\system32\freecell.exe /f /s
del %SystemRoot%\system32\mshearts.exe /f /s
del %SystemRoot%\system32\winmine.exe /f /s
del "C:\Program Files\Windows NT\Pinball\PINBALL.EXE" /f /s
del %SystemRoot%\system32\sol.exe /f /s
del %SystemRoot%\system32\spider.exe /f /s
del %SystemRoot%\system32\pinball.exe /f /s

ECHO Deleting Internet Games

del %SystemRoot%\system32\dllcache\bckgzm.exe /f /s
del %SystemRoot%\system32\dllcache\chkrzm.exe /f /s
del %SystemRoot%\system32\dllcache\hrtzzm.exe /f /s
del %SystemRoot%\system32\dllcache\Rvsezm.exe /f /s
del %SystemRoot%\system32\dllcache\shvlzm.exe /f /s

del "C:\Program Files\MSN Gaming Zone\Windows\bckgzm.exe" /f /s
del "C:\Program Files\MSN Gaming Zone\Windows\chkrzm.exe" /f /s
del "C:\Program Files\MSN Gaming Zone\Windows\hrtzzm.exe" /f /s
del "C:\Program Files\MSN Gaming Zone\Windows\Rvsezm.exe" /f /s
del "C:\Program Files\MSN Gaming Zone\Windows\shvlzm.exe" /f /s

ECHO Deleting Shortcuts

del "%AllUsersProfile%\Start Menu\Programs\Games\" /f /s /q
del "%AllUsersProfile%\Главное меню\Программы\Игры\" /f /s /q
del "%AllUsersProfile%\Start Menu\Programs\Accessories\Games\" /f /s /q
del "%AllUsersProfile%\Главное меню\Программы\Стандартные\Игры\" /f /s /q

copy \\сервер\шара$\OK.txt \\сервер\шара$\OK\%COMPUTERNAME%.txt
=======================
Последняя строчка, конечно не оригинально (errorlevel надо бы добавить), но просто.
Автор: bornbill
Дата сообщения: 18.06.2007 10:45
Народ может кто толкнет в направлении: как изменять разрешения на доступ к реестру программно... заранее благодарен..

Уже было плохо искал
Автор: rij
Дата сообщения: 18.06.2007 20:42
Уважаемые коллеги! Нужен скрипт или что угодно, работающее таким образом: юзер запускает это и закрывается общий доступ к его принтеру, он печатает очень важные документы на специальных бланках, напечатав он опять запускает что-то и доступ опять открыт, и из принтера лезут кучи макулатуры от всех остальных юзеров офиса.......
Вот такая вот загогулина......
Автор: vlazari
Дата сообщения: 19.06.2007 07:57
Похожая трабла. Как бы не очень то и нужно, но если кто предложить красивое решение - будем пользоваться. Мне в голову приходит мысль дать этому пользователю доступ на управление принтером и очередью печати, а когда нужно - скриптом отрубать общий доступ. Потом включать обратно.
Автор: Etalon
Дата сообщения: 19.06.2007 08:07
bornbill и rij

На Windows PowerShell --- это будет выглядеть так

Код:
#
# SharePrinterNmae --- это сетевое имя принтера
#

$Printer = Get-WmiObject -query "select * from Win32_Printer where ShareName='SharePrinterName'"

if ($Printer.Shared -eq $true)
{
$Printer.Shared = $false
}
else
{
$Printer.Shared = $true
}

$Printer.Put()
Автор: SergIRBIS
Дата сообщения: 19.06.2007 08:42
gap5

Я немного дорабаотал твой скриптик, теперь плоучается следующее:
скрипт проверят подключено ли на диск М что нибудь если да то он это отключает и подключает то что нужно..... + дает имя диску указанное в поле strNewName.

' VBScript to map a network drive.
' ----------------------------------------'
'
On Error Resume Next

Dim objNetwork, strDrive, objShell, objUNC
Dim strRemotePath, strDriveLetter, strNewName
'
strDriveLetter = "M:"
strRemotePath = "\\servers\everyone"
strNewName = "Общая"
mapped = false

' Section to map the network drive
' (strLocalDrive, strRemoteShare, [persistent], [strUser], [strPassword])

Set objNetwork = CreateObject("WScript.Network")
Set oDrives=objNetwork.EnumNetworkDrives

For i = 0 to oDrives.Count - 1 Step 2
' WScript.Echo "Drive " & oDrives.Item(i) & " = " & oDrives.Item(i+1)
If oDrives.Item(i)=strDriveLetter Then mapped = true

Next
'WScript.echo "mapped = " & mapped
If mapped Then objNetwork.RemoveNetworkDrive strDriveLetter
If mapped Then objNetwork.MapNetworkDrive strDriveLetter, strRemotePath
If Not mapped Then objNetwork.MapNetworkDrive strDriveLetter, strRemotePath

' Section which actually (re)names the Mapped Drive
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strDriveLetter).Self.Name = strNewName

WScript.Quit


' End of script.
Автор: abasov
Дата сообщения: 19.06.2007 11:35
Скрипт для Экспорт контактов из адресной книги Lotus в Excel
в дизайнере открыть базу - создать агента (lotus script)

Код:
Option Public

Sub Initialize
    
    On Error Goto err_handle
    
    Dim s As New NotesSession
    Dim db As NotesDatabase
    Dim thisView As NotesView, AttachView As NotesView
    Dim thisDoc As NotesDocument
    
    Dim ExcelPath As String, ExcelFileName As String, MSAction As String, path As String
    Dim oExcel As Variant, oWorkbook As Variant
    Dim prog As Integer
    Dim CategoryField$
    
    
    Set db = s.CurrentDatabase
    Set oExcel = Nothing
    
    
    Set thisView = db.GetView ( "People")
    DefaultFileName$="c:\temp\person"+".xls"
    Call thisView.Refresh
    If thisView Is Nothing Then Error 10002
    
    Set thisDoc = thisView.GetFirstDocument
    If thisDoc Is Nothing Then Error 10003
    
    
    Set oExcel = CreateObject ( "Excel.Application" )
    
    ExcelPath = DefaultPath$
    
    path = oExcel.Path
    oExcel.Quit
    Set oExcel = Nothing
'___ Process export to oExcel
    
    Call ExportToExcel ( ExcelPath, DefaultFileName$, thisView, "Экспорт контактов в Excel" )
    If Instr ( ExcelFileName, " " ) > 0 Then
        DefaultFileName$ = {"} & DefaultFileName$ & {"}
    End If
    prog = Shell ( path & "\excel.exe " &DefaultFileName$, 3 )
    
exit_sub:
    Print ""
    If Not oExcel Is Nothing Then
        oExcel.Quit
        Set oExcel = Nothing
    End If
    
    Exit Sub
    
err_handle:
    
    Select Case Err
    Case 75
        Dim oExcelErr As Variant, MSBookErr As Variant
        Set oExcelErr = GetObject ( ExcelFileName )
        Set MSBookErr = oExcelErr.Application.Workbooks.Item ( DefaultFileName$ )
        MSBookErr.Activate
        MSBookErr.Close True, ExcelFileName
        Set MSBookErr = Nothing
        Set oExcelErr = Nothing
        Resume 0
    Case 10001
        Messagebox "You must save the document before using this action.", 0 + 48, "Export -- Error"
    Case 10002
        Messagebox "View doesn't exist.", 0 + 48, "Export -- Error"
    Case 10004
        Messagebox """Attachment"" view not found. Contact your administrator.", 0 + 48, "Export -- Error"
    Case 208
        Messagebox "MS Excel is not installed on this machine. Please install it before you use this option.", 0 + 48, "Export -- Error"
    Case Else
        Messagebox {Error: "} & Error & {"} & nl$ & {Number = } & Cstr ( Err ) & nl$ & {Line = } & Cstr ( Erl ), 0 + 16, "Export -- Error"
    End Select
    
    Resume exit_sub
    
End Sub
Sub ExportToExcel ( ExcelPath As String, ExcelFileName As String, thisView As NotesView, Title$ )
    
    Dim s As New NotesSession
    Dim db As NotesDatabase
    Dim thisDoc As NotesDocument
    Dim oExcel As Variant, oWorkbook As Variant, oWorkSheet As Variant
    Dim i As Double
    Print "Exporting to Excel..."
    
    Set oExcel = CreateObject ( "Excel.Application" )
'Set oWorkbook = oExcel.Workbooks.Add ( ExcelPath & DefaultFileTemplate$ )
'If choice = promptlist(0) Or choice = promptlist(1) Then
'Set oWorkbook = oExcel.Workbooks.Add
'Else
'Set oWorkbook = oExcel.Workbooks.Open(ExcelFileName)
'End If
    Set oWorkbook = oExcel.Workbooks.Add
    Set oWorkSheet= oWorkbook.Sheets ( 1 )
    
    Set thisDoc = thisView.GetFirstDocument
    If thisDoc Is Nothing Goto exit_sub
    
' to title
    
    oWorkSheet.Range ( "A1").Value=Title$
    
    i = 2'start from the second row underneth title
    
    While Not thisDoc Is Nothing
        
        
        LastName$ = thisDoc.LastName(0)
        FirstName$ = thisDoc.FirstName(0)
        MiddleInitial$ = thisDoc.MiddleInitial(0)
        InternetAddress$ = thisDoc.InternetAddress(0)
        JobTitle$ = thisDoc.JobTitle(0)
        Department$ = thisDoc.Department(0)
        OfficePhoneNumber$ = thisDoc.OfficePhoneNumber(0)
        CellPhoneNumber$ = thisDoc.CellPhoneNumber(0)
        Location$ = thisDoc.Location(0)
        CompanyName$ = thisDoc.CompanyName(0)
        
'A row
        
        oWorkSheet.Range ( "A" & Cstr ( i ) ).Value = LastName$
        oWorkSheet.Range ( "B" & Cstr ( i ) ).Value = FirstName$
        oWorkSheet.Range ( "C" & Cstr ( i ) ).Value = MiddleInitial$
        oWorkSheet.Range ( "D" & Cstr ( i ) ).Value = InternetAddress$
        oWorkSheet.Range ( "E" & Cstr ( i ) ).Value = JobTitle$
        oWorkSheet.Range ( "F" & Cstr ( i ) ).Value = Department$
        oWorkSheet.Range ( "G" & Cstr ( i ) ).Value = OfficePhoneNumber$
        oWorkSheet.Range ( "H" & Cstr ( i ) ).Value = CellPhoneNumber$
        oWorkSheet.Range ( "I" & Cstr ( i ) ).Value = Location$
        oWorkSheet.Range ( "J" & Cstr ( i ) ).Value = CompanyName$
        
        i = i + 1
        
        
        Set thisDoc = thisView.GetNextDocument ( thisDoc )
        
    Wend
    
exit_sub:
    Set oWorkSheet= Nothing
    oWorkbook.SaveAs ( "c:\temp\person.xls" )
    Set oWorkbook = Nothing
    oExcel.Quit
    Set oExcel = Nothing
    Print "Done"
    
End Sub
Автор: Sk1f
Дата сообщения: 19.06.2007 14:30
бл$#ь.
Поосторожней используйте скрипт xcacls.vbs для раздачи прав доступа к папке - я два дня 1500 объектам задавал ownera. Скрипт снес подчистую всю информацию о разрешениях для папок, файлов.
Автор: ShafMAN
Дата сообщения: 20.06.2007 14:32
Приветствую.
Если кто сталкивовался с необходимостью управления телефонными соединениями или Dial-up Networking Monitor, порекомендуйте пожалуйста какой-нить ActiveX?

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576

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


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