PDA

Показать полную графическую версию : [решено] Net use монтирование сетевого диска по условию


tr011_tmn
05-03-2020, 09:21
Доброго времени суток коллеги, столкнулся с интересной задачкой, над которой бьюсь уже пять дней.

Есть сетевое хранилище информации, на нем расшарены корпоративные ресурсы которыми успешно пользуются пользователи.

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

можно ли через net use узнать расположение текущего сетевого диска (удаленное имя) и если оно не то что надо отмонтировать диск и примонтировать на новом сервере?

net use i: | find /I "\\имя сервера\имя шары" && if not errorlevel 1 (ECHO "все ок") else (ECHO "все не ок") не работает :-(

прошу помощи.

Upd:
FOR /F "usebackq delims==" %i IN (`net use i:`) do FIND %i "\\имя сервера\имя шары" && if %ERRORLEVEL%==0 (ECHO "все ок") else (ECHO "все не ок")

результата тоже не дает

megaloman
05-03-2020, 13:15
tr011_tmn, А зачем столько сложностей? Всё равно собрались запускать скрипт. net use I: /Delete
net use I: \\Server\Test1 /persistent:yesЕсли очень хочется сделать так, как написано:@Echo Off
cls
Set "D=I:"
Set "Shr=\\Server\Test2"
2>&1 net use %D% |find /I "%Shr%" &&(Echo OK: the correct network drive is present %D%=%Shr% &Exit /B 0)
>nul 2>&1 net use %D% /Delete
>nul 2>&1 net use %D% %Shr% &&(Echo OK: the correct network drive mounted now %D%=%Shr% &Exit /B 1)
Echo Error: the correct network drive not mounted %D% ^<^> %Shr%
Exit /B 2

Elven
05-03-2020, 14:20
Я скажу что можно еще проще, и даже вовсе скрипты запускать ненадо, достаточно монтировать диск не скриптом, а политиками (сиречь GPO). Ну и в день X просто поменять одну настройку, и никакой беготни.

Charg
05-03-2020, 14:42
Если есть домен - подними DFS.
Если нет домена - подними домен а потом DFS :)
С DFS эти шары можно хоть каждый день туда-сюда менять, пользователи даже не заметят.

tr011_tmn
10-03-2020, 11:18
Если очень хочется сделать так, как написано: »

Спасибо за пинок в правильном направлении, решил вопрос следующим образом:

IF EXIST I: (
net use I: |find /I "\\Server\Test2" 1>Nul 2>&1 && if not errorlevel 1 (ECHO "Сетевой диск был успешно примонтирован ранее") ELSE (ECHO "Сетевой диск не был успешно примонтирован ранее" && net use I: /delete /yes && net use I: \\Server\Test2 /PERSISTENT:YES) 1>Nul 2>&1
) ELSE (
ECHO "Сетевой диск не был успешно примонтирован ранее" && net use I: \\Server\Test2 /PERSISTENT:YES 1>Nul 2>&1
) 1>Nul 2>&1


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




© OSzone.net 2001-2012