Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » WMI - Удалённое монтирование сетевых дисков посредством скрипта

Ответить
Настройки темы
WMI - Удалённое монтирование сетевых дисков посредством скрипта

Новый участник


Сообщения: 8
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Доброго времени суток, ув. форумчане
Помогите разобраться новичку-скриптописателю.
Поставил перед собой задачу написать скрипт, выполняющий рутинную работу, причём, удалённо. Застрял на задаче монтирования сетевого диска на удалённом компьютере.

Суть следующая. Я выполняю скрипт на компьютере А, он подсоединяется к компьютеру Б, совершает там много всякой всячины, в числе которой и монтирование сетевого диска - шары компьютера В.

Вот такой участочек кода.

читать дальше »
strComputer = ""
UserName = ""
Password = ""
Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)
Set objProcess = objWMIService.Get("Win32_Process")
errReturn = objProcess.Create("net use * \\10.40.*.*\shara_name password /user:domain\username", Null, Null, intProcessID)
WScript.Echo errReturn


Как видите, я решил заставить WMI выполнить команду чтобы примапить шару, поскольку я не нашёл у WMI специального "инструмента" для этих целей. Этот код отрабатывает на ура на компьютере А - шара мапится. На компьютере Б он тоже отрабатывается, объект objProcess возвращает 0, что означает что ему ничто не помешало отправить команду (ясень пень, что сама утилита net нам ничего таким образом не вернёт). А вот результате на компьютере Б диск мапится, но его не видно в проводнике, в списке примапленых дисков он висит как не доступный.

Думал что дело в настройках имперсонации и аутентификации WMI. Экспериментировал с ними.

читать дальше »
'SWBemlocator.Security_.ImpersonationLevel = 3
'SWBemlocator.Security_.AuthenticationLevel = 6
'SWBemlocator.Security_.Privileges.AddAsString "SeCreateTokenPrivilege"


Ничего не добился - диск как мапился так и мапится не правильно.
Все 3 компьютера - члены домена. На компьютере А я авторизирован под доменной учёткой, на компьютере Б скрипт авторизируется под локальной учёткой с правами админа (потому, что моя учётка там не имеет админ. полномочий), шару В на компьютере Б мапит от имени доменной учётки (я экспериментировал со своей).

Буду рад выслушать ваши советы, ув. коллеги. А также буду благодарен если кто подскажет как ещё можно монтировать сетевые диски удалённо (logon скрипты в данном случае мне не нужны).

-------
In the name of the best among us!


Отправлено: 18:51, 12-12-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Elusive87:
объект objProcess возвращает 0, что означает что ему ничто не помешало отправить команду (ясень пень, что сама утилита net нам ничего таким образом не вернёт). »
Не «объект objProcess», а метод «.Create()» возвращает «0», если ему удалось запустить процесс. Ничего более это не означает. Никакой связи с ErrorLevel созданного процесса этот «0» не несёт.

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

Отправлено: 19:57, 12-12-2012 | #2



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

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


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Не «объект objProcess», а метод «.Create()» возвращает «0», если ему удалось запустить процесс. Ничего более это не означает. Никакой связи с ErrorLevel созданного процесса этот «0» не несёт. »
Да, не объект, а метод. А по поводу остального я то же самое говорил.

Цитата Iska:
Для кого, для какой учётной записи должен быть смонтирован сетевой ресурс на удалённой машине? »
Скрипт авотризируется на машине Б под учётной записью локального администратора (не доменной, поэтому я к net use добавляю доменные credentials, чтобы шара смонтировалась), и для этой же учётной записи будет монтироваться диск, разумеется.

-------
In the name of the best among us!


Отправлено: 21:52, 12-12-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Elusive87:
Да, не объект, а метод. А по поводу остального я то же самое говорил. »
Elusive87, ясно. Разобрались.

Цитата Elusive87:
Скрипт авотризируется на машине Б под учётной записью локального администратора (не доменной, поэтому я к net use добавляю доменные credentials, чтобы шара смонтировалась), и для этой же учётной записи будет монтироваться диск, разумеется. »
Ничего не понятно. Приведите здесь:
читать дальше »
Код: Выделить весь код
strComputer = ""
UserName = ""
Password = ""
Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)
Set objProcess = objWMIService.Get("Win32_Process")
errReturn = objProcess.Create("net use * \\10.40.*.*\shara_name password /user:domain\username", Null, Null, intProcessID)
WScript.Echo errReturn

такие данные, по которым было бы понятно, где какие имена используются.

Отправлено: 22:54, 12-12-2012 | #4


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


читать дальше »
strComputer = "192.168.1.14"
UserName = "192.168.1.14\administrator"
Password = "password"
Set SWBemlocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = SWBemlocator.ConnectServer(strComputer,"root\CIMV2",UserName,Password)
Set objProcess = objWMIService.Get("Win32_Process")
errReturn = objProcess.Create("net use * \\192.168.1.20\shara_name password /user:domain\username", Null, Null, intProcessID)
WScript.Echo errReturn


Я со своего компьютера запускаю скрипт и авторизируюсь на компьютере 192.168.1.14 под учётной записью administrator, эта учётная запись хранится локально на 192.168.1.14 и имеет права админа. Общий ресурс хранится на 192.168.1.20, его нужно примонтировать, однако, поскольку компьютер 192.168.1.20 является членом домена и политикой запрещён гостевой доступ (авторизация на 192.168.1.14 прошла не под доменной учёткой, а под локальной), он будет монтироваться от имени доменной учётной записи - domain\username password.

-------
In the name of the best among us!


Отправлено: 00:37, 13-12-2012 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Elusive87, вот диск смонтирован на разделённый ресурс. Что дальше?

А дальше будет именно это:
Цитата Elusive87:
А вот результате на компьютере Б диск мапится, но его не видно в проводнике, в списке примапленых дисков он висит как не доступный. »
«localhost(192.168.1.14)\administrator» у Вас ведь не имеет доступа к «192.168.1.20».

Отправлено: 14:55, 15-12-2012 | #6


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, посмотрите внимательно на код. Я утилите NET передаю те учтёные данные, что имеют доступ на 192.168.1.20
Цитата Elusive87:
net use * \\192.168.1.20\shara_name password /user:domain\username »
Если я этого не сделаю, что диск не примонтируется вообще и в списке примонтированных дисков его видно не будет, проверено. Здесь же он монтируется, но он не доступен. Ещё раз уточню.

В проводнике его не видно среди перечня логических дисков. Но видно в перечне примонтированных дисков как недоступный (просмотриваем либо утилитой net либо с помощью "отключить сетевой диск").

У меня такое впечатление, что сам процесс, порождаемый методом Create имеет какие-то ограничения.

Кстати, я далеко не первый кто столкнулся с этими граблями, долго рылся в инете, но никто из этих ребят, что также столкнулись с этой проблемой, ответа не получил.

Пробовал "перехитрить" ограничение - запускал команду через cmd /c start, чтобы таким образом породить новый процесс. Но результат тот же (как такое может быть - ума не приложу). Причём, если сделать то же самое руками на целевом компьютере - всё прекрасно монтируется. Экспериментировал на разных компьютерах. Вот у меня и закрались подозрения насчёт подводных камней самой конструкции класса и метода.

Сразу уточню по поводу "делал руками" чтобы не было лишних вопросов: на удалённых компьютерах я авторизировался под localhost\administartor и выполнял команду net use оттуда. И вообще всякую команду, что я передавал методу Create я сначала проверял на целевом компьютере "вручную".

-------
In the name of the best among us!


Последний раз редактировалось Elusive87, 16-12-2012 в 18:22.


Отправлено: 17:57, 16-12-2012 | #7


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Как вариант создать задачу через schtasks.

Отправлено: 18:11, 16-12-2012 | #8



Moderator


Сообщения: 53488
Благодарности: 15516

Профиль | Отправить PM | Цитировать


Цитата Elusive87:
На компьютере А я авторизирован под доменной учёткой, на компьютере Б скрипт авторизируется под локальной учёткой с правами админа (потому, что моя учётка там не имеет админ. полномочий), шару В на компьютере Б мапит от имени доменной учётки
[решено] Copy отличия в работе при запуске от администратора
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:21, 16-12-2012 | #9


Новый участник


Сообщения: 8
Благодарности: 0

Профиль | Отправить PM | Цитировать


Petya V4sechkin, все рабочие станции работают на XP. Но всё же спасибо за любопытный нюанс, он мне пригодится, поскольку в сл. году мы все перейдём на "семёрку".

-------
In the name of the best among us!


Отправлено: 22:21, 16-12-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » WMI - Удалённое монтирование сетевых дисков посредством скрипта

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - удалённое выполнение скрипта, с правами залогиненного пользователя vich68rus Скриптовые языки администрирования Windows 4 06-09-2011 18:11
Как соединить компьютеры по сети(посредством сетевых карт) ? zxzx Хочу все знать 1 04-01-2010 19:11
Монтирование дисков zippi Microsoft Windows NT/2000/2003 18 12-06-2007 10:03
Монтирование сетевых дисков nsergeip Общий по Linux 35 22-03-2007 21:06
Монтирование дисков с NTFS5 в RH9 NSF Общий по Linux 9 13-02-2005 02:12




 
Переход