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

» Автоматизация администрирования

Автор: FreemanRU
Дата сообщения: 10.05.2006 12:54
serstr

Цитата:

WSCript.echo """"

OUTPUT: "

Идея ясна?
Автор: Prening
Дата сообщения: 10.05.2006 13:01
serstr

Цитата:
И еще вопрос.
Как средствами VBS замапить юзеру сетевой принтер и приэтом повесить его на LPT2 порт?

у меня выполняеться так:
Set WshNetwork = WScript.CreateObject("WScript.Network")
if InGroup("CN=EPSON_AL-C4000") then
WshNetwork.AddWindowsPrinterConnection "\\Server\EPSON_AL-C4000"
WshNetwork.AddPrinterConnection "lpt2","\\Server\EPSON_AL-C4000"
WshNetwork.SetDefaultPrinter "\\Server\EPSON_AL-C4000"
end If
Автор: listadm
Дата сообщения: 10.05.2006 13:12
Я уже писал может кто то поможет
******************************************
Помогите решить задачу:
есть текстовый файл такового содержания:
*********************
ХХХХХХХХХХХХХХХХХХХХХ
ХХХХХХХХХХХХХХХ
!!!!!!!!!!!!!!ХХХХХХХХХХХХ

ХХХХХХХХХХХХХХХХХХХ
ХХХХХХХХХХХХХХХХХХХХ
************************

Нужно удалить пустую строку в этом файле.
Автор: serstr
Дата сообщения: 10.05.2006 13:40
FreemanRU


Цитата:
Цитата:
WSCript.echo """"

OUTPUT: "

Идея ясна?


Вообщето идея не совсем ясна.
мне в реестре надо сделать ключ со значением :
-GCMConfigFile "Q:\GARANT\GARANT.ini" -GCMDataPath1 "Q:\GARANT\data" -GCMDataPath2 "Q:\GARANT\data" -GCMLockPath "Q:\GARANT" -GCMSettingsPath "C:\Program Files\UserApps\Garant-F1\settings" -GPMAdapterConfigSection "F1Server Params" -XMLLoadPath1 "C:\Program Files\UserApps\Garant-F1\settings\xmllocal"

я для этого исполюзую команду

WSHShell.RegWrite "HKCU\Software\Garant.F1\ApplicationAdapterOptions", ".........."

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

Автор: AleXeyS55
Дата сообщения: 10.05.2006 14:00

Цитата:
Вот два скрипта, 2+2 сложить сумеешь?

Нет, до стольки считать не умею.
Автор: ctolnik
Дата сообщения: 10.05.2006 14:37
Кто подскажет скрипт, следующего рода. Необходимо через Web интерфейс просмотреть список пользователей определённой группы Active Directory, а также при наличии соответствующих прав изменить членство в группе.
Автор: FreemanRU
Дата сообщения: 10.05.2006 14:54
serstr

Цитата:

WScript.Echo "-GCMConfigFile ""Q:\GARANT\GARANT.ini"""
WSHShell.RegWrite "HKCU\Software\Garant.F1\ApplicationAdapterOptions", "-GCMConfigFile ""Q:\GARANT\GARANT.ini"""

т.е. двойная кавычка при в тексте равна одинарной.

AleXeyS55

Цитата:
в идеале мне нужно удалить записи из определенной группы, а именно Администраторы


Код:
strComputer = "." 'Локальный комп
Set colAdmins = GetObject("WinNT://" & strComputer & "/Administrators,group") ' Берем группу Администраторы
For Each objUser in colAdmins.Members 'перебираем всех членов группы
Wscript.Echo "Имя пользователя: " & objUser.Name 'выводим имя
If objUser.Name <> "admin" Then 'Если имя пользвоателя admin, то....
colAdmins.Remove(objUser.ADsPath) '.....удаляем его из группы
Wscript.Echo "Пользователь " &objUser.Name& " удален из группы " & colAdmins.Name
End If
Next
On Error Resume Next 'Отключаем генерацию ошибок, на случай, если такой пользователь есть в группе
Set objUser = GetObject("WinNT://" & strComputer & "/admin,user") ' получаем пользователя admin
colAdmins.Add(objUser.ADsPath) 'добавляем пользователя в группу Администраторы. Здесь может возникнуть ошибка, если такой пользователь уже есть в группе. Именно для этого выше стоял On Error....
Wscript.Echo "Complete!!!"
Автор: serstr
Дата сообщения: 10.05.2006 15:21
Да все заработало!
FreemanRU еще раз спасибо
Автор: eldo
Дата сообщения: 10.05.2006 20:20

Цитата:
Скажите, а возможно ли с помощью whs управлять NetBIOS (например получить все имена связанные с данным LANA, удалить какие-то имена из таблицы имен NetBIOS) и тому подобное.
Спасибо


Судя по отсутствию ответов, я так понимаю, это скорее невозможно, чем возможно. А жаль
Автор: AleXeyS55
Дата сообщения: 11.05.2006 09:19
FreemanRU
Спасибо
А то что то доков нормальных, типа справочника никак найти не могу. Есть один но урезанный какой то
Возник вопрос: почему objUser.Name возвращает, например, test вместо ad\test если на самом деле так и есть?
Автор: FreemanRU
Дата сообщения: 11.05.2006 09:40
AleXeyS55
Загляни в шапку. Там масса доков полезных. Особенно Script Center рекомендую.

Цитата:
Возник вопрос: почему objUser.Name возвращает, например, test вместо ad\te

Потому что есть имя а есть домен входа. И эти понятие разделены. Н-р может быть локальных или вход в домен, при этом не всегда удобно "разрезать" переменную, удобнее её склеить.
Автор: AleXeyS55
Дата сообщения: 11.05.2006 12:11
Да я скачал конечно, читаю вот
Что то не вижу по какому свойству определить пользователь доменный или локальный.
Автор: FreemanRU
Дата сообщения: 11.05.2006 13:44
AleXeyS55
Можно попробовать вот такой скриптик:
[more=Use WMI to Enumerate Local User Accounts]

Код:
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_UserAccount Where LocalAccount = True")
For Each objItem in colItems
Wscript.Echo "Account Type: " & objItem.AccountType
Wscript.Echo "Caption: " & objItem.Caption
Wscript.Echo "Description: " & objItem.Description
Wscript.Echo "Disabled: " & objItem.Disabled
Wscript.Echo "Domain: " & objItem.Domain
Wscript.Echo "Full Name: " & objItem.FullName
Wscript.Echo "Local Account: " & objItem.LocalAccount
Wscript.Echo "Lockout: " & objItem.Lockout
Wscript.Echo "Name: " & objItem.Name
Wscript.Echo "Password Changeable: " & objItem.PasswordChangeable
Wscript.Echo "Password Expires: " & objItem.PasswordExpires
Wscript.Echo "Password Required: " & objItem.PasswordRequired
Wscript.Echo "SID: " & objItem.SID
Wscript.Echo "SID Type: " & objItem.SIDType
Wscript.Echo "Status: " & objItem.Status
Wscript.Echo
Next
Автор: Oldster
Дата сообщения: 11.05.2006 14:52
Помогите решить проблему:
1) есть пользователи в AD. (user1, user2 и т.д.)
2) есть соот. папки на диске с именем логинов этих пользователей т.е.:
d:\temp\user1
d:\temp\user2
и т.д.

надо написать скрипт на JScript который перебирает список логинов в AD и проверяет наличия соот. папок на диске.
Собственно проблема в переборе всех юзеров в AD на JScript (с папками проблем нет). В инете полно примеров, но на VBS, а я к Васику плохо отношусь... к тому же только начал изучать скриптописание.
Автор: FreemanRU
Дата сообщения: 11.05.2006 15:40
Oldster

Код:
var objConnection = WScript.CreateObject("ADODB.Connection");
objConnection.Open("Provider=ADsDSOObject;");
var objCommand = WScript.CreateObject("ADODB.Command");
objCommand.ActiveConnection = objConnection
objCommand.CommandText = "<GC://dc=domain,dc=local>;(objectCategory=User);cn,distinguishedName,sAMAccountName;subtree";
var objRecordSet = objCommand.Execute;
while (!objRecordSet.EOF)
{
WScript.Echo (objRecordSet.Fields("cn"));
WScript.Echo (objRecordSet.Fields("distinguishedName"));
WScript.Echo (objRecordSet.Fields("sAMAccountName"));
WScript.Echo ("");
objRecordSet.MoveNext;
}
objConnection.Close;
Автор: serstr
Дата сообщения: 11.05.2006 15:49
Подскажите как мне через VBS добраться до папки TEMP = C:\DOCUME~1\USER\LOCALS~1\Temp\ при помощи объектов, т.е. не зависимо от того чему равен USER переменная ссылается на его папку TEMP
Автор: Sk1f
Дата сообщения: 11.05.2006 16:03
Oldster мой те совет сделай скрипт на VB. Твое задание, это только небольшая часть моего. Я тоже сначала делал на JScripte. Но потом отказался и сделал на VBSю тебе проще будет. Для начала разобраться.
Автор: Oldster
Дата сообщения: 11.05.2006 16:05
FreemanRU
спасибо, заработало (правда мало что понял), но завтра буду разбиратся...
нашел еще похожий скрипт: http://forum.sysadmins.ru/viewtopic.php?p=6698246
Автор: snorri
Дата сообщения: 11.05.2006 17:00
Господа, братья, товарищи - кому как больше нравится
Помогите решить проблему

Есть такой скрипт по определению актуального железа и ПО на компьютере пользователя, который формирует текстовый файл с результатом сканирования.

А теперь вопрос: каким образом результаты загонять не в текстовый файл а в базу MSSQL

[more=код скрипта.]
'для получения имени машины раскоментировать строку

strComputer = "."

'объявление констант
'set constant
Const ForReading = 1
Const ForWriting = 2
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_CURRENT_USER = &H80000001




' указание папки для создания файла отчета
' set folder for generate report
strPath = "p:\logs\"



'определение типа и параметров процессора
'get processor properties

Set objFSO = CreateObject("Scripting.FileSystemObject")

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

Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")
        strInfo="Параметры процессора (процессоров)"
        strInfo=strInfo + vbCrLf+ "===================="
    For Each objItem in colItems
        strInfo=strInfo + vbCrLf+ "Производитель: " & objItem.Manufacturer
        strInfo=strInfo + vbCrLf+ "Модель: " & objItem.Name
    Next
        strInfo=strInfo + vbCrLf+ ""
        strInfo=strInfo + vbCrLf+ ""

'определение видеоадаптера и параметров видеоотображения
'get video properties

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

Set colItems = objWMIService.ExecQuery _
("Select * from Win32_DisplayControllerConfiguration")
    For Each objItem in colItems
        strInfo=strInfo + vbCrLf+ "Видеопараметры"
        strInfo=strInfo + vbCrLf+ "===================="
        strInfo=strInfo + vbCrLf+ "Модель видеокарты: " & objItem.Name
    'strInfo=strInfo + vbCrLf+ "Setting ID: " & objItem.SettingID
    strInfo=strInfo + vbCrLf+ "Видеорежим: " & objItem.VideoMode
Next
        strInfo=strInfo + vbCrLf+ ""
        strInfo=strInfo + vbCrLf+ ""
    
'определение сетевых параметров
'get network properties

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

Set colItems = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration")
        strInfo=strInfo + vbCrLf+ "Оборудование доступа к сети"
        strInfo=strInfo + vbCrLf+ "===================="
    For Each objItem in colItems
            If objItem.DNSHostName <> "" then
            strInfo=strInfo + vbCrLf+ "Модель: " & objItem.Caption
            'strInfo=strInfo + vbCrLf+ "Default IP Gateway: " & objItem.DefaultIPGateway
            strInfo=strInfo + vbCrLf+ "Имя в сети: " & objItem.DNSHostName
            'strInfo=strInfo + vbCrLf+ "IP Address: " & objItem.IPAddress
            strInfo=strInfo + vbCrLf+ "MAC адрес сетевой карты: " & objItem.MACAddress
        End if
    strPC1 = objItem.DNSHostName
    Next
        strInfo=strInfo + vbCrLf+ ""
        strInfo=strInfo + vbCrLf+ ""
    
'определение параметров жестких и сменных дисков
'get drive disk properties

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive",,48)
        strInfo=strInfo + vbCrLf+ "Постоянные и сменные носители информации"
        strInfo=strInfo + vbCrLf+ "===================="
    For Each objItem in colItems
        strInfo=strInfo + vbCrLf+ "Название: " & objItem.Description
        strInfo=strInfo + vbCrLf+ "Модель: " & objItem.Caption
        strInfo=strInfo + vbCrLf+ "Количество логических разделов: " & objItem.Partitions
        strInfo=strInfo + vbCrLf+ "Общий размер: " & Round (objItem.Size/1000/1000) & "Mb"
        strInfo=strInfo + vbCrLf+ ""
    Next
        strInfo=strInfo + vbCrLf+ ""
        strInfo=strInfo + vbCrLf+ ""
    
'определение объема оперативной памяти и информации о пользователе
'get RAM memory properties and user account

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)
    
    For Each objItem in colItems
        strUName = Right(objItem.UserName,6)
        strInfo=strInfo + vbCrLf+ "Оперативная память"
        strInfo=strInfo + vbCrLf+ "===================="
        strInfo=strInfo + vbCrLf+ "Общее количество оперативной памяти: " & Round (objItem.TotalPhysicalMemory/1024/1024) & "Mb"
        strInfo=strInfo + vbCrLf+ ""
        strInfo=strInfo + vbCrLf+ ""        
        strInfo=strInfo + vbCrLf+ "Информация о пользователе"
        strInfo=strInfo + vbCrLf+ "===================="
        strInfo=strInfo + vbCrLf+ "PrimaryOwnerName: " & objItem.PrimaryOwnerName
        strInfo=strInfo + vbCrLf+ "Полное имя пользователя: " & objItem.UserName
        strInfo=strInfo + vbCrLf+ ""
        
    Next
        strInfo=strInfo + vbCrLf+ ""
        strInfo=strInfo + vbCrLf+ ""


'получение списка ПО
'get PC's software


Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Uninstall"
oReg.EnumKey HKEY_LOCAL_MACHINE, strKeyPath, arrSubKeys
        strInfo=strInfo + vbCrLf+ "Список установленного ПО"
        strInfo=strInfo + vbCrLf+ "===================="
For Each subkey In arrSubKeys
    If Left (subkey,1) <> "{" and Right (subkey,1) <> "}" Then
    strInfo=strInfo + vbCrLf+ subkey
    End If
    
Next


'запись собранной информации в файл    
'write properties in report file

Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
    strComputer & "\root\default:StdRegProv")

strKeyPath = "SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName\"
strValueName = "ComputerName"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strPC1 = strValue
strKeyPath = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\WinLogon"
strValueName = "DefaultUserName"
oReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
strUName = strValue
    strPCsFile= strPC1 & "_" & strUName &".txt"
    'WScript.Echo strUName
Set objTextFile = objFSO.OpenTextFile(strPath & strPCsFile, ForWriting, True)
    objTextFile.WriteLine strInfo
    'WScript.echo strInfo

WScript.Quit    
[/more]

Заранее благодарен

 
Автор: FreemanRU
Дата сообщения: 11.05.2006 17:10
snorri

Код:
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Set objConnection = CreateObject("ADODB.Connection")
Set objRecordset = CreateObject("ADODB.Recordset")
objConnection.Open "DSN=Inventory;"
objRecordset.CursorLocation = adUseClient
objRecordset.Open "SELECT * FROM Hardware" , objConnection, _
adOpenStatic, adLockOptimistic
Set colSoundCards = GetObject("winmgmts:").ExecQuery _
("Select * from Win32_SoundDevice")
For Each objSoundCard in colSoundCards
objRecordset.AddNew
objRecordset("ComputerName") = objSoundCard.SystemName
objRecordset("Manufacturer") = objSoundCard.Manufacturer
objRecordset("ProductName") = objSoundCard.ProductName
objRecordset.Update
Next
objRecordset.Close
objConnection.Close
Автор: serstr
Дата сообщения: 12.05.2006 08:28
FreemanRU


Цитата:
Подскажите как мне через VBS добраться до папки TEMP = C:\DOCUME~1\USER\LOCALS~1\Temp\ при помощи объектов, т.е. не зависимо от того чему равен USER переменная ссылается на его папку TEMP


Помоги с таким вопросом пплллзз
Автор: FreemanRU
Дата сообщения: 12.05.2006 10:49
serstr
Так уже есть переменная в среде - %TEMP%, именно туда она и указывает...
Автор: serstr
Дата сообщения: 12.05.2006 11:17
FreemanRU

Цитата:
serstr
Так уже есть переменная в среде - %TEMP%, именно туда она и указывает...


Наверное я совсем тупой, но я несовсем понял как ее успользовать...
Например в этой директории нужно создать файл
Set F = fso.CreateTextFile(%temp% & "logonscriptlog.txt", 8, true) но так оно не работает
Как определить и получить этот обект?
Автор: Oldster
Дата сообщения: 12.05.2006 11:37
FreemanRU
потихоньку все получается задуманное, но есть еще вопрос:
как дописать скрипт, чтобы получить еще из AD о пользователе инфу типа: "Логин заблокирован" и т.д.

Добавлено:
Sk1f

Цитата:
мой те совет сделай скрипт на VB

Дело в том, что я знаю язык С, а к VB совсем тяги нет... может быть со временем и попробую его поизучать, но желания пока не возникает.
Автор: FreemanRU
Дата сообщения: 12.05.2006 11:59
Oldster

Цитата:
"Логин заблокирован" и т.д.

Тут всё немного сложнее.....
Тебе нужно поле "userAccountControl"
В результате ты получишь число, из которого по битовой маске необходимо выдерать значения.
Информация по битовым маскам данного поля содержится в:
How to use the UserAccountControl flags to manipulate user account properties
и
Platform SDK: Active Directory Schema: User-Account-Control
Автор: serstr
Дата сообщения: 12.05.2006 12:10
FreemanRU

А как же мой вопрос??? плз
Автор: FreemanRU
Дата сообщения: 12.05.2006 12:19
serstr

Код:
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WScript.Echo WshShell.ExpandEnvironmentStrings("%TEMP%")
Автор: serstr
Дата сообщения: 12.05.2006 12:26
FreemanRU
Спасибо!
Да я спокойно без нервов!А про АД я уже немного разобрался, тоже благодаря тебе
Вовек не сочтусь...
БОЛЬШОЕ спасибо!
Автор: Oldster
Дата сообщения: 12.05.2006 12:43
FreemanRU
Спасибо, все получилось!
Автор: VelDmi
Дата сообщения: 12.05.2006 18:18
API в основном используется клиентами программ контроля, хотя может быть полезным и для любых сторонних утилит.

Все функции реализованы ввиде COM-сервера.
Примеры использования для C, C++, Delphi находятся здесь

Общие замечания:
- доступ к функциям осуществляется через единый интерфейс IRunpadShell
- все функции возвращают S_OK в случае успеха и другие коды в противном случае
- функции не являются Unicode

--------------------------------------------------------------------------------
HRESULT GetShellState(OUT RSHELLSTATE *pState);

Возвращает статус шелла:
RSS_OFF - шелл отключен
RSS_TURNEDON - шелл включен, но еще не загружен
RSS_ACTIVE - шелл включен, загружен и готов к работе
RSS_INVALID - шелл не инсталлирован

Это я взял из хелпа к программе. Возможно ли написать скрипт, который бы использовал API программы? Если да, то подскажите как это сделать.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Зеркалирование дисков Win2000


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