Как «игнорировать» запрос имени пользователя и пароля в net use

Как «игнорировать» запрос имени пользователя и пароля в net use

У меня сейчас есть скрипт logon.cmd, который я использую для сопоставления сетевых дисков с профилем пользователя. Выглядит он так:

::Onboarding
net use m: /delete
net use m: \\BOB\onboarding 
::Bookings
net use n: /delete
net use n: \\BOB\bookings 

::Accounts
net use j: /delete
net use j: \\BOB\accounts 

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

Примечания: Этот же скрипт раньше работал в другой сети Samba PDC, но я перенес его на другой сервер (все еще Samba PDC), и теперь он сломался.

Можно ли как-то проигнорировать запрос имени пользователя/пароля и просто продолжить?

решение1

Я так и не смог найти конечного решения этой проблемы. Но пригодный (но очень хакерский и нечистый) обходной путь — использовать эту команду:

::Helpdesk
copy /Y NUL "\\BOB\helpdesk\.writable"
IF %ERRORLEVEL%==0 ( 
    del \\BOB\helpdesk\.writable
    GOTO:ALLOWEDHELPDESK
 ) 

GOTO:SECT2
:ALLOWEDHELPDESK
net use k: /delete
net use k: \\BOB\helpdesk 
:SECT2

::Onboarding
copy /Y NUL "\\BOB\onboarding\.writable" 
IF %ERRORLEVEL%==0 ( 
    del \\BOB\onboarding\.writable
    GOTO:ALLOWEDONBOARDING
 ) 

GOTO:SECT3
:ALLOWEDONBOARDING
net use m: /delete
net use m: \\BOB\onboarding 
:SECT3

::Etc,etc,etc

Базовое объяснение: сначала он проверяет, доступна ли для записи папка, копируя пустой файл .writable, если это удается, то он выполняет команду, если нет, то он пропускает команду и продолжает работу.

Это всего лишь обходной путь...

решение2

Расширяя ответ Маттисдады, этот скрипт немного упростит изменение любых отображений дисков, просто добавляя, удаляя или изменяя mapDriveвызовы функций. Кроме того, эта функция проверяет доступ на чтение, вызывая DIR(вместо записи временного файла) и отображает соответствующим образом:

@ECHO off

setlocal
set SHARE=BOB
CALL:mapDrive K: helpdesk
CALL:mapDrive M: onboarding
CALL:mapDrive Z: watercooler
endlocal

net use
ECHO Mapping Complete. Thank You.
PAUSE&GOTO:EOF

:mapDrive
DIR \\%SHARE%\%~2 > nul 2>&1
IF %ERRORLEVEL%==0 ( 
    net use %~1 /DELETE > nul 2>&1
    net use %~1 \\%SHARE%\%~2
)
GOTO:eof

решение3

Кажется, я разобрался с этим со своей стороны, я просто ввожу пароль в качестве аргумента net use после папки, которую нужно сопоставить, как показано ниже:

.. net use t: \BOB\helpdesk пароль /PERSISTENT:NO

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

решение4

Решение:

net use t: \BOB\helpdesk пароль /PERSISTENT:NO

кажется, работало, но после недавних обновлений перестало работать.

если СУЩЕСТВУЕТ \BOB\helpdesk net используйте t: \BOB\helpdesk /PERSISTENT:NO

это решение, которое продолжает работать для меня. Он пропускает, если у пользователя нет достаточных прав доступа (работает для сетевых ресурсов).

Связанный контент