помогите написать скрипт (vbs или js ) которой подключается к LDAP серверу и получает список адресов , напремер так делает ето The bat ! или адресная книга Outlook , LDAP требует авторизацию , поисковая база ou=OU_contact_ххххх,dc=ххх,dc=ххх,dc=ххх,dc=хх
» Автоматизация администрирования
rosalin
Я попробую Вам помочь.
Добавлено:
Вам не понятен сам скрипт или нужно просто запускать его в скрытом окне?
Я попробую Вам помочь.
Добавлено:
Вам не понятен сам скрипт или нужно просто запускать его в скрытом окне?
Uriu
Спасибо заранее
Добавлено:
Uriu
Нужно запускать в скрытом окне
Спасибо заранее
Добавлено:
Uriu
Нужно запускать в скрытом окне
rosalin
А GPO
"Конфигурация Пользователя->Административные Шаблоны->Система->Сценарии->Выполнять сценарии входа с отображением команд" не спасает разве?
А GPO
"Конфигурация Пользователя->Административные Шаблоны->Система->Сценарии->Выполнять сценарии входа с отображением команд" не спасает разве?
FreemanRU
нет всеравно свернутое окно видно
нет всеравно свернутое окно видно
а как ты его запускаешь?
он у меня лежит в логоне
rosalin
Эт я понял. Скрипт можно запустить 3мя способами.
1. script.vbs
2. cscript //nologo script.vbs
3. wscript script.vbs
Эт я понял. Скрипт можно запустить 3мя способами.
1. script.vbs
2. cscript //nologo script.vbs
3. wscript script.vbs
1.способом
Странно. Если выключено
Цитата:
и первый способ - ДОЛЖНО ничего ен отображатся.
А если попробовать cscript //nologo script.vbs >> null
Цитата:
Выполнять сценарии входа с отображением команд
и первый способ - ДОЛЖНО ничего ен отображатся.
А если попробовать cscript //nologo script.vbs >> null
Коллеги!
А никто не задумывался как можно обновить адресную книгу Outlook Express на 400 компьютерах домена? Причем у каждого пользователя есть свои личные адреса, которые затирать нельзя, т.е. просто перепись wab-файла не прокатит.
А никто не задумывался как можно обновить адресную книгу Outlook Express на 400 компьютерах домена? Причем у каждого пользователя есть свои личные адреса, которые затирать нельзя, т.е. просто перепись wab-файла не прокатит.
rosalin
В Вашем сценарии есть константа в самом начале: Const SW_SHOWMINNOACTIVE = 7
Попробуйте присвоить ей значение: Const SW_SHOWMINNOACTIVE = 12
Посмотрите что получится.
В Вашем сценарии есть константа в самом начале: Const SW_SHOWMINNOACTIVE = 7
Попробуйте присвоить ей значение: Const SW_SHOWMINNOACTIVE = 12
Посмотрите что получится.
Подскажите пожалуйста, можно ли автоматизировать процесс создания домашней директории пользователя на файловом сервере(\\fileserver\users\), с указанными директориями (My word, My Excel, My Powerpoint etc.)в папке My Documents, при этом задав автоматически права на запись файлов только в вышеуказанные поддиректории.
Вроде для этого нужно ADSI...Но как? А также не понятен процесс создания папок с подпапками на удаленном сервере.
Не пинайте пожалуйста, тока учусь
Спасибо за помощь!!!
Вроде для этого нужно ADSI...Но как? А также не понятен процесс создания папок с подпапками на удаленном сервере.
Не пинайте пожалуйста, тока учусь
Спасибо за помощь!!!
Uriu
Супер все сработало еще потестю.....
Добавлено:
deenick
Было бы интересно посмотреть предложенные варианты
Добавлено:
В сети имею компы не только с XP но и 98 подскажите как запускать скрипты для таких станций
Супер все сработало еще потестю.....
Добавлено:
deenick
Было бы интересно посмотреть предложенные варианты
Добавлено:
В сети имею компы не только с XP но и 98 подскажите как запускать скрипты для таких станций
>> deenick
Попробуй вот так:
[more]
' Создание папок пользователей внесенных в AD и папок для отделов (OU)
' раздаются права для доступа к личным папкам пользователей
' принцип: Domain Admins - full,
' User - Full (only on personal folder),
' System - full,
Set WshShell = CreateObject("Wscript.Shell")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.provider = "ADsDSOObject"
objConnection.Open ("Active Directory Provider")
' Запрос информации по всем учетным записям пользователей
' исправь строку запроса в соответствии со структурой твоего домена
CommandText = "Select cn, name, distinguishedName, sAMAccountName"
CommandText = CommandText + " from 'LDAP://OU=ou1,OU=ou2,DC=dc1,DC=dc2'"
CommandText = CommandText + " where objectClass='person' and objectClass<>'computer'"
CommandText = CommandText + " ORDER BY cn"
Set objRecordset = CreateObject("ADODB.Recordset")
objRecordset.Open CommandText, objConnection
While Not objRecordset.EOF
' общая информация включая полный перечень всех OU
dn = objRecordset.fields("distinguishedName").Value
' название имени пользователя для создания его личной папки
UsersFolderName = objRecordset.fields("sAMAccountName").Value
myArray = Split(dn, ",")
Path = ""
For Each rec In myArray
If Left(rec, 3) = "OU=" Then
Path = Mid(rec, 4) + Path
End If
Next
DepartmentPath = Mid(Path, 12)
' создаем папку пользователя
' при запуске не на сервере а удаленно
' поменяй E:\Users на что-то вроде \\имя сервера\шара с папками пользователей
FolderUser = "E:\Users\" + UsersFolderName
Set objFld1 = CreateObject("Scripting.FileSystemObject")
If objFld1.FolderExists(FolderUser) Then
Else
Set objFolder1 = objFld1.CreateFolder(FolderUser)
End If
' аналогично можешь создать нужные тебе подпапки внутри уже созданной
' для пользователя папки
' формируем строку с назначением прав на личную папку
' положи xcacls.exe в папку со скриптом или укажи к нему полный путь в команде
StrCmdRightUsers = "xcacls.exe " + FolderUser + " /g ""DOMAIN ADMINS"":F System:f " + UsersFolderName + ":f /y "
RetVal = WshShell.Run("%COMSPEC% /c " & StrCmdRightUsers, 1, False)
objRecordset.MoveNext
Wend
[/more]
Прошу прощения за длинный пост.
Попробуй вот так:
[more]
' Создание папок пользователей внесенных в AD и папок для отделов (OU)
' раздаются права для доступа к личным папкам пользователей
' принцип: Domain Admins - full,
' User - Full (only on personal folder),
' System - full,
Set WshShell = CreateObject("Wscript.Shell")
Set objConnection = CreateObject("ADODB.Connection")
objConnection.provider = "ADsDSOObject"
objConnection.Open ("Active Directory Provider")
' Запрос информации по всем учетным записям пользователей
' исправь строку запроса в соответствии со структурой твоего домена
CommandText = "Select cn, name, distinguishedName, sAMAccountName"
CommandText = CommandText + " from 'LDAP://OU=ou1,OU=ou2,DC=dc1,DC=dc2'"
CommandText = CommandText + " where objectClass='person' and objectClass<>'computer'"
CommandText = CommandText + " ORDER BY cn"
Set objRecordset = CreateObject("ADODB.Recordset")
objRecordset.Open CommandText, objConnection
While Not objRecordset.EOF
' общая информация включая полный перечень всех OU
dn = objRecordset.fields("distinguishedName").Value
' название имени пользователя для создания его личной папки
UsersFolderName = objRecordset.fields("sAMAccountName").Value
myArray = Split(dn, ",")
Path = ""
For Each rec In myArray
If Left(rec, 3) = "OU=" Then
Path = Mid(rec, 4) + Path
End If
Next
DepartmentPath = Mid(Path, 12)
' создаем папку пользователя
' при запуске не на сервере а удаленно
' поменяй E:\Users на что-то вроде \\имя сервера\шара с папками пользователей
FolderUser = "E:\Users\" + UsersFolderName
Set objFld1 = CreateObject("Scripting.FileSystemObject")
If objFld1.FolderExists(FolderUser) Then
Else
Set objFolder1 = objFld1.CreateFolder(FolderUser)
End If
' аналогично можешь создать нужные тебе подпапки внутри уже созданной
' для пользователя папки
' формируем строку с назначением прав на личную папку
' положи xcacls.exe в папку со скриптом или укажи к нему полный путь в команде
StrCmdRightUsers = "xcacls.exe " + FolderUser + " /g ""DOMAIN ADMINS"":F System:f " + UsersFolderName + ":f /y "
RetVal = WshShell.Run("%COMSPEC% /c " & StrCmdRightUsers, 1, False)
objRecordset.MoveNext
Wend
[/more]
Прошу прощения за длинный пост.
alecsandrb
Такие длинные посты рекомендуется создавать под тегом [more].
Такие длинные посты рекомендуется создавать под тегом [more].
Прошу прощения (вопрос уже поднимался - http://forum.ru-board.com/topic.cgi?forum=8&topic=1908&start=560#12), но не могу узнать владельца у конкретного каталога (точнее - в подкаталогах 1-го УРОВНЯ). В примере от MS - все файлы в каталоге (т.е. вообще все, включая подкаталоги всех уровней). Нормально-подробную документацию по NameSpace и GetDetailsOf обнаружить не удалось, по крайней мере - ничего, что помогло бы мне. Разными путями получаю только название 8-го атрибута (Владелец), а значение атрибута - не могу... Не поможете ли?
Общая цель - по NTFS добавить владельца как конкретного пользователя с полными правами на подкаталоги первого уровня (при работе с файлами офиса владелец меняется, если оставлять права просто на создателя-владельца - создатель подкаталога теряет все права на файл).
Путь решения (тот, который вижу) - перебирать все подкаталоги (повторюсь - первого уровня, поскольку на файлы и подкаталоги глубже права наследуются) и добавлять права пользователю, являющемуся владельцем.
Общая цель - по NTFS добавить владельца как конкретного пользователя с полными правами на подкаталоги первого уровня (при работе с файлами офиса владелец меняется, если оставлять права просто на создателя-владельца - создатель подкаталога теряет все права на файл).
Путь решения (тот, который вижу) - перебирать все подкаталоги (повторюсь - первого уровня, поскольку на файлы и подкаталоги глубже права наследуются) и добавлять права пользователю, являющемуся владельцем.
alecsandrb
Спасибо!
Все работает кроме:
Если ставить сетевую папку то при исполнении скрипта в 44 строке ошибку выдает : Path Not Found.
А при исполнении с локальной сетевой папкой создается папка пользователя в виде d:\usersIvanovIvan, а не d:\users\IvanovIvan
И можно ли сделать так, что когда этот скрипт запускается через групповую политику, то пользовательская папка создавалась именно с именем того, кто логинется?
Спасибо!
Все работает кроме:
Если ставить сетевую папку то при исполнении скрипта в 44 строке ошибку выдает : Path Not Found.
А при исполнении с локальной сетевой папкой создается папка пользователя в виде d:\usersIvanovIvan, а не d:\users\IvanovIvan
И можно ли сделать так, что когда этот скрипт запускается через групповую политику, то пользовательская папка создавалась именно с именем того, кто логинется?
Cac2s
Set oADsSecurityUtility = CreateObject("ADsSecurityUtility")
set sd = oADsSecurityUtility.GetSecurityDescriptor("c:\Temp\bcg", 1, 1)
WScript.Echo sd.Owner
Работает в 2003 или в 2000 с пересаженной от 2003 activeds.dll
или
function GetOwner(fname)
{
fname.match(/^(.+)\\(.+?)\\?$/);
var app=new ActiveXObject("Shell.Application");
var fo=app.Namespace(RegExp.$1);
return fo.GetDetailsOf(fo.Items().Item(RegExp.$2),8)
}
Set oADsSecurityUtility = CreateObject("ADsSecurityUtility")
set sd = oADsSecurityUtility.GetSecurityDescriptor("c:\Temp\bcg", 1, 1)
WScript.Echo sd.Owner
Работает в 2003 или в 2000 с пересаженной от 2003 activeds.dll
или
function GetOwner(fname)
{
fname.match(/^(.+)\\(.+?)\\?$/);
var app=new ActiveXObject("Shell.Application");
var fo=app.Namespace(RegExp.$1);
return fo.GetDetailsOf(fo.Items().Item(RegExp.$2),8)
}
deenick
Цитата:
-> Сделай папку расшаренной и дай доступ группе Everyone на изменение, после этого должно заработать и из сети
Цитата:
-> проверь чтобы у тебя строка формирования полного пути к папке была как я написал:
FolderUser = "E:\Users\" + UsersFolderName
(Слеш после названия корневой папки обязателен)
Цитата:
-> Можно, при логоне пользователя запускать похожий скрипт, но не выбирать всех пользователей из АД, а брать только текущего который логинится только придется каждый раз либо пересоздавать папки для него либо проверять на существование папки для логинящегося пользователя. В примере который я привел есть проверка не существует ли уже папка для текущего пользователя.
Могу дать скрипт и для текущего логинящегося пользователя, если интересно.
Цитата:
Если ставить сетевую папку то при исполнении скрипта в 44 строке ошибку выдает : Path Not Found.
-> Сделай папку расшаренной и дай доступ группе Everyone на изменение, после этого должно заработать и из сети
Цитата:
А при исполнении с локальной сетевой папкой создается папка пользователя в виде d:\usersIvanovIvan, а не d:\users\IvanovIvan
-> проверь чтобы у тебя строка формирования полного пути к папке была как я написал:
FolderUser = "E:\Users\" + UsersFolderName
(Слеш после названия корневой папки обязателен)
Цитата:
И можно ли сделать так, что когда этот скрипт запускается через групповую политику, то пользовательская папка создавалась именно с именем того, кто логинется?
-> Можно, при логоне пользователя запускать похожий скрипт, но не выбирать всех пользователей из АД, а брать только текущего который логинится только придется каждый раз либо пересоздавать папки для него либо проверять на существование папки для логинящегося пользователя. В примере который я привел есть проверка не существует ли уже папка для текущего пользователя.
Могу дать скрипт и для текущего логинящегося пользователя, если интересно.
Cac2s
Вот Вам пример как определить владельца. Скрипт я не доделал, можно еще добавить функции для "расшифровки"
AccessMasK & ACL.
[more]
Код: '********************** Начало *************************************
' Присваиваем начальные значения переменным
strComputer = "."
strNamespace = "Root\CIMV2"
'Пространство имен
Set objService = GetObject("WinMgmts:\\" & strComputer & _
"\" & strNamespace)
Set objFile = objService.Get("Win32_LogicalFileSecuritySetting.Path='C:\\Test\\Test.vbs'")
WSH.Echo " --Свойства объекта класса Win32_LogicalFileSecuritySetting.Path='C:\\Test\\Test.vbs ---- "
'WScript.Echo "Caption: " & objFile.Caption
WScript.Echo "ControlFlags - Флаги наследования: " & objFile.ControlFlags
WScript.Echo "Description: " & objFile.Description
WScript.Echo "OwnerPermissions: " & objFile.OwnerPermissions
WScript.Echo "Path: " & objFile.Path
'WScript.Echo "SettingID: " & objFile.SettingID
'Выполняю метод
iErr= objFile.GetSecurityDescriptor(objSecDescr)
'Проверяю на ошибку
If iErr <> 0 Then
WSH.Echo "Ошибка выполнения метода = " & iErr
End If
WSH.Echo "---- Дискриптор безопасности Win32_SecurityDescriptor ---"
'Вывожу свойства объекта класса Win32_SecurityDescriptor
WSH.Echo "Битовые флаги дискриптора " & objSecDescr.ControlFlags
WSH.Echo " ------------ Владелец Owner -----"
'Вывожу свойство внедренного объекта класса Win32_Trustree
' Один вложенный объект
WSH.Echo "Доменная учетная запись " & objSecDescr.Owner.Domain
WSH.Echo " SID владельца " & objSecDescr.Owner.SIDString
WSH.Echo"Имя владельца " & objSecDescr.Owner.Name
WSH.Echo ""
' WSH.Echo "Группа владельца у меня не определена???
'WSH.Echo "Доменная учетная запись " & objSecDescr.Group.Domain
'WSH.Echo " SID владельца " & objSecDescr.Group.SIDString
'WSH.Echo"Имя владельца " & objSecDescr.Group.Name
'WSH.Echo ""
'Так нужно работать с типом данных array of uint8
'For Each oSID In objSecDescr.Owner.SID
' WSH.Echo osid
'Next
'Так нужно работать с типом данных array of object:Win32_ACE
WSH.Echo "-------- Разрешения DACL ---------"
For Each oDACL In objSecDescr.DACL
WSH.Echo " Объект: " &_
"Domain: " & oDACL.Trustee.Domain &_
"\Name: " & oDACL.Trustee.Name &_
"\SID: " & oDACL.Trustee.SIDString
WSH.Echo " Не внедренные свойства == "
WSH.Echo "AccessMask " & oDACL.AccessMask
WSH.Echo "Флаги наследования ACE " & oDACL.AceFlags
WSH.Echo "Тип записи ACE " & oDACL.AceType
WSH.Echo ""
Next
' Аудит тоже array of object:Win32_ACE
WSH.Echo "------- Аудит SACL--------"
For Each oSACL In objSecDescr.SACL
WSH.Echo " Объект: " &_
"Domain: " & oSACL.Trustee.Domain &_
"\Name: " & oSACL.Trustee.Name &_
"\SID: " & oSACL.Trustee.SIDString
WSH.Echo " Не внедренные свойства =="
WSH.Echo "AccessMask " & oSACL.AccessMask
WSH.Echo "Флаги наследования ACE " & oSACL.AceFlags
WSH.Echo "Тип записи ACE " & oSACL.AceType
WSH.Echo ""
Next
Вот Вам пример как определить владельца. Скрипт я не доделал, можно еще добавить функции для "расшифровки"
AccessMasK & ACL.
[more]
Код: '********************** Начало *************************************
' Присваиваем начальные значения переменным
strComputer = "."
strNamespace = "Root\CIMV2"
'Пространство имен
Set objService = GetObject("WinMgmts:\\" & strComputer & _
"\" & strNamespace)
Set objFile = objService.Get("Win32_LogicalFileSecuritySetting.Path='C:\\Test\\Test.vbs'")
WSH.Echo " --Свойства объекта класса Win32_LogicalFileSecuritySetting.Path='C:\\Test\\Test.vbs ---- "
'WScript.Echo "Caption: " & objFile.Caption
WScript.Echo "ControlFlags - Флаги наследования: " & objFile.ControlFlags
WScript.Echo "Description: " & objFile.Description
WScript.Echo "OwnerPermissions: " & objFile.OwnerPermissions
WScript.Echo "Path: " & objFile.Path
'WScript.Echo "SettingID: " & objFile.SettingID
'Выполняю метод
iErr= objFile.GetSecurityDescriptor(objSecDescr)
'Проверяю на ошибку
If iErr <> 0 Then
WSH.Echo "Ошибка выполнения метода = " & iErr
End If
WSH.Echo "---- Дискриптор безопасности Win32_SecurityDescriptor ---"
'Вывожу свойства объекта класса Win32_SecurityDescriptor
WSH.Echo "Битовые флаги дискриптора " & objSecDescr.ControlFlags
WSH.Echo " ------------ Владелец Owner -----"
'Вывожу свойство внедренного объекта класса Win32_Trustree
' Один вложенный объект
WSH.Echo "Доменная учетная запись " & objSecDescr.Owner.Domain
WSH.Echo " SID владельца " & objSecDescr.Owner.SIDString
WSH.Echo"Имя владельца " & objSecDescr.Owner.Name
WSH.Echo ""
' WSH.Echo "Группа владельца у меня не определена???
'WSH.Echo "Доменная учетная запись " & objSecDescr.Group.Domain
'WSH.Echo " SID владельца " & objSecDescr.Group.SIDString
'WSH.Echo"Имя владельца " & objSecDescr.Group.Name
'WSH.Echo ""
'Так нужно работать с типом данных array of uint8
'For Each oSID In objSecDescr.Owner.SID
' WSH.Echo osid
'Next
'Так нужно работать с типом данных array of object:Win32_ACE
WSH.Echo "-------- Разрешения DACL ---------"
For Each oDACL In objSecDescr.DACL
WSH.Echo " Объект: " &_
"Domain: " & oDACL.Trustee.Domain &_
"\Name: " & oDACL.Trustee.Name &_
"\SID: " & oDACL.Trustee.SIDString
WSH.Echo " Не внедренные свойства == "
WSH.Echo "AccessMask " & oDACL.AccessMask
WSH.Echo "Флаги наследования ACE " & oDACL.AceFlags
WSH.Echo "Тип записи ACE " & oDACL.AceType
WSH.Echo ""
Next
' Аудит тоже array of object:Win32_ACE
WSH.Echo "------- Аудит SACL--------"
For Each oSACL In objSecDescr.SACL
WSH.Echo " Объект: " &_
"Domain: " & oSACL.Trustee.Domain &_
"\Name: " & oSACL.Trustee.Name &_
"\SID: " & oSACL.Trustee.SIDString
WSH.Echo " Не внедренные свойства =="
WSH.Echo "AccessMask " & oSACL.AccessMask
WSH.Echo "Флаги наследования ACE " & oSACL.AceFlags
WSH.Echo "Тип записи ACE " & oSACL.AceType
WSH.Echo ""
Next
Коллеги, подскажите, как автоматизировать в консоле Data Source ODBC, вкладка system DSN, процесс добавления системных источников данных?
Пытался через реестр - не получилось, видима не те ключи меняю. Очень надо!!!!
Извеняюсь, вопрос снимаеться. Сам написал.
Если кому понадобиться в будущем, вот пример:
var WSHShell = WScript.CreateObject("WScript.Shell");
WSHShell.Popup("Установка параметров ODBC");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources\\TEST", "SQL Server");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\testdir\\", "testdir");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\testdir\\Database", "testdatabase");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\testdir\\Driver", "G:\\WINDOWS\\system32\\SQLSRV32.dll");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\testdir\\LastUser", "TestUser");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\testdir\\Server", "testSQLServer");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\testdir\\Trusted_Connection", "Yes");
WSHShell.Popup("Установка завершена");
Пытался через реестр - не получилось, видима не те ключи меняю. Очень надо!!!!
Извеняюсь, вопрос снимаеться. Сам написал.
Если кому понадобиться в будущем, вот пример:
var WSHShell = WScript.CreateObject("WScript.Shell");
WSHShell.Popup("Установка параметров ODBC");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\ODBC Data Sources\\TEST", "SQL Server");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\testdir\\", "testdir");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\testdir\\Database", "testdatabase");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\testdir\\Driver", "G:\\WINDOWS\\system32\\SQLSRV32.dll");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\testdir\\LastUser", "TestUser");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\testdir\\Server", "testSQLServer");
WSHShell.RegWrite("HKLM\\SOFTWARE\\ODBC\\ODBC.INI\\testdir\\Trusted_Connection", "Yes");
WSHShell.Popup("Установка завершена");
alecsandrb
Точно ступил изменить права
Все заработало
И можно получить скрипт для текущего пользователя? Тогда можно в групповую политику закинуть и шоколадно все будет
Спасибо!
Точно ступил изменить права
Все заработало
И можно получить скрипт для текущего пользователя? Тогда можно в групповую политику закинуть и шоколадно все будет
Спасибо!
deenick
Держи, сам я не проверял но должно быть примерно так:
[more]
' Создание пользовательских папок при логоне пользователя
' раздаются права для доступа к личным папкам пользователей
' принцип: Domain Admins - full,
' User - Full (only on personal folder),
' System - full,
' определение текущего UserName
Set WshShell = CreateObject("Wscript.Shell")
UsersFolderName = WshShell.ExpandEnvironmentStrings("%username%")
' создаем папку пользователя
FolderUser = "\\имя сервера\имя шары\" + UsersFolderName
Set objFld1 = CreateObject("Scripting.FileSystemObject")
If objFld1.FolderExists(FolderUser) Then
Else
Set objFolder1 = objFld1.CreateFolder(FolderUser)
' формируем строку с назначением прав на личную папку
' положи xcacls.exe в папку со скриптом или укажи к нему полный путь в команде
StrCmdRightUsers = "xcacls.exe " + FolderUser + " /g ""DOMAIN ADMINS"":F System:f " + UsersFolderName + ":f /y "
RetVal = WshShell.Run("%COMSPEC% /c " & StrCmdRightUsers, 1, False)
End If
' аналогично можешь создать нужные тебе подпапки внутри уже созданной
' для пользователя папки
objRecordset.MoveNext
Wend
[/more]
Скрипт немного оптимизировал чтобы раздача прав была после создания папки и потом при повторном логоне этого же пользователя папка не создавалась и права вновь не назначались.
Держи, сам я не проверял но должно быть примерно так:
[more]
' Создание пользовательских папок при логоне пользователя
' раздаются права для доступа к личным папкам пользователей
' принцип: Domain Admins - full,
' User - Full (only on personal folder),
' System - full,
' определение текущего UserName
Set WshShell = CreateObject("Wscript.Shell")
UsersFolderName = WshShell.ExpandEnvironmentStrings("%username%")
' создаем папку пользователя
FolderUser = "\\имя сервера\имя шары\" + UsersFolderName
Set objFld1 = CreateObject("Scripting.FileSystemObject")
If objFld1.FolderExists(FolderUser) Then
Else
Set objFolder1 = objFld1.CreateFolder(FolderUser)
' формируем строку с назначением прав на личную папку
' положи xcacls.exe в папку со скриптом или укажи к нему полный путь в команде
StrCmdRightUsers = "xcacls.exe " + FolderUser + " /g ""DOMAIN ADMINS"":F System:f " + UsersFolderName + ":f /y "
RetVal = WshShell.Run("%COMSPEC% /c " & StrCmdRightUsers, 1, False)
End If
' аналогично можешь создать нужные тебе подпапки внутри уже созданной
' для пользователя папки
objRecordset.MoveNext
Wend
[/more]
Скрипт немного оптимизировал чтобы раздача прав была после создания папки и потом при повторном логоне этого же пользователя папка не создавалась и права вновь не назначались.
Есть занчение реестра которое нужно установить
[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles]
"W:\\buch\\1\\"="Типовая"
Делаю так...
set wshShell = WScript.CreateObject("WScript.Shell")
sub AddBases1c
key = "HKCU\Software\1C\1Cv7\7.7\Titles\"
wshShell.RegWrite key & "W:\\buch\\1\\", "Типовая"
end sub
AddBases1c
само сабой не работает....
то есть вместо строкового праметра W:\\buch\\1\\ оно создает строковый параметр 1
а всё что перед цифрой 1 считает за путь.
Как решить проблему?
[HKEY_CURRENT_USER\Software\1C\1Cv7\7.7\Titles]
"W:\\buch\\1\\"="Типовая"
Делаю так...
set wshShell = WScript.CreateObject("WScript.Shell")
sub AddBases1c
key = "HKCU\Software\1C\1Cv7\7.7\Titles\"
wshShell.RegWrite key & "W:\\buch\\1\\", "Типовая"
end sub
AddBases1c
само сабой не работает....
то есть вместо строкового праметра W:\\buch\\1\\ оно создает строковый параметр 1
а всё что перед цифрой 1 считает за путь.
Как решить проблему?
aikz6
Синтаксис для JS:
Цитата:
Синтаксис для JS:
Цитата:
RegWrite strName,anyValue[, strType]
Если параметр strName оканчивается символами \\, то этот метод записывает разделж если такого раздела нет, он будет создан. Если в конце strName отсутвуют символы \\, то производится запись указанного параметра в нужный раздел.
Параметр anyValue задает значение, которе нужно записать в заданный параметром
strName параметр или раздел реестра......
alecsandrb
Странно, но на 30 строке ошибка
Странно, но на 30 строке ошибка
deenick
Прошу прощения, неубрал до конца оператор цикла - тебе же в данном случае нужен только один пользователь и операция должна быть только один раз.
Исправил, должно быть так [more]
' Создание пользовательских папок при логоне пользователя
' раздаются права для доступа к личным папкам пользователей
' принцип: Domain Admins - full,
' User - Full (only on personal folder),
' System - full,
' определение текущего UserName
Set WshShell = CreateObject("Wscript.Shell")
UsersFolderName = WshShell.ExpandEnvironmentStrings("%username%")
' создаем папку пользователя
FolderUser = "\\имя сервера\имя шары\" + UsersFolderName
Set objFld1 = CreateObject("Scripting.FileSystemObject")
If objFld1.FolderExists(FolderUser) Then
Else
Set objFolder1 = objFld1.CreateFolder(FolderUser)
' формируем строку с назначением прав на личную папку
' положи xcacls.exe в папку со скриптом или укажи к нему полный путь в команде
StrCmdRightUsers = "xcacls.exe " + FolderUser + " /g ""DOMAIN ADMINS"":F System:f " + UsersFolderName + ":f /y "
RetVal = WshShell.Run("%COMSPEC% /c " & StrCmdRightUsers, 1, False)
End If
' аналогично можешь создать нужные тебе подпапки внутри уже созданной
' для пользователя папки
[/more]
Прошу прощения, неубрал до конца оператор цикла - тебе же в данном случае нужен только один пользователь и операция должна быть только один раз.
Исправил, должно быть так [more]
' Создание пользовательских папок при логоне пользователя
' раздаются права для доступа к личным папкам пользователей
' принцип: Domain Admins - full,
' User - Full (only on personal folder),
' System - full,
' определение текущего UserName
Set WshShell = CreateObject("Wscript.Shell")
UsersFolderName = WshShell.ExpandEnvironmentStrings("%username%")
' создаем папку пользователя
FolderUser = "\\имя сервера\имя шары\" + UsersFolderName
Set objFld1 = CreateObject("Scripting.FileSystemObject")
If objFld1.FolderExists(FolderUser) Then
Else
Set objFolder1 = objFld1.CreateFolder(FolderUser)
' формируем строку с назначением прав на личную папку
' положи xcacls.exe в папку со скриптом или укажи к нему полный путь в команде
StrCmdRightUsers = "xcacls.exe " + FolderUser + " /g ""DOMAIN ADMINS"":F System:f " + UsersFolderName + ":f /y "
RetVal = WshShell.Run("%COMSPEC% /c " & StrCmdRightUsers, 1, False)
End If
' аналогично можешь создать нужные тебе подпапки внутри уже созданной
' для пользователя папки
[/more]
alecsandrb
Супер!!! Спасибо огромное!!!
Как получается все не так сложно, но и не просто Надо будет сесть и подробно изучить язык скриптов. К сожалению из-за рутины, руки просто не доходят
Супер!!! Спасибо огромное!!!
Как получается все не так сложно, но и не просто Надо будет сесть и подробно изучить язык скриптов. К сожалению из-за рутины, руки просто не доходят
rosalin
Цитата:
Я посмотрел кое какую документацию.
WSH 5.6 (Сервер сценариев.) является стандартной частью Win XP/2003. Эту версию можно установить и использовать во всех предыдущих 32-разрядных Win 95/98/ME/NT/2000. Нужно скачать инсталяционный файл для WSH 5.6 с сайта Майкрософт.
Сценарии с использованием WMI несравнимо более "мощная" вещь, чем WSH. В системах Win ME/2000/XP/2003 WMI присутствует штатно. Для использования WMI в Win 98/NT нужно обновить ядро WMI до версии 1.5, скачать файл wmicore.exe c сайта Майкрософт.
Цитата:
В сети имею компы не только с XP но и 98 подскажите как запускать скрипты для таких станций
Я посмотрел кое какую документацию.
WSH 5.6 (Сервер сценариев.) является стандартной частью Win XP/2003. Эту версию можно установить и использовать во всех предыдущих 32-разрядных Win 95/98/ME/NT/2000. Нужно скачать инсталяционный файл для WSH 5.6 с сайта Майкрософт.
Сценарии с использованием WMI несравнимо более "мощная" вещь, чем WSH. В системах Win ME/2000/XP/2003 WMI присутствует штатно. Для использования WMI в Win 98/NT нужно обновить ядро WMI до версии 1.5, скачать файл wmicore.exe c сайта Майкрософт.
Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
Предыдущая тема: Зеркалирование дисков Win2000
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.