
No momento, tenho um script logon.cmd que estou usando para mapear unidades de rede para o perfil dos usuários. Se parece com isso:
::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
Ele funciona bem até chegar a uma pasta que o usuário atual não pode acessar e, em seguida, solicita um nome de usuário e uma senha em vez de errar e continuar.
Notas: Este mesmo script costumava funcionar em outra rede Samba PDC, mas eu o mudei para outro servidor (Still Samba PDC) e agora está quebrado.
Existe alguma maneira de ignorar o prompt de nome de usuário/senha e simplesmente continuar?
Responder1
Nunca consegui encontrar uma solução finita para o problema. Mas uma solução utilizável (mas muito hackeada e impura) é usar este comando:
::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
Explicação básica: Ele verifica primeiro se uma pasta é gravável, copiando um arquivo em branco .writable, se tiver sucesso, executa o comando, se falhar, pula o comando e continua.
Isso é puramente uma solução alternativa ....
Responder2
Estendendo a resposta de Mattisdada, este script tornará um pouco mais fácil modificar qualquer mapeamento de unidade simplesmente adicionando, excluindo ou alterando as mapDrive
chamadas de função. Além disso, esta função verifica o acesso de leitura chamando DIR
(em vez de gravar o arquivo temporário) e mapeia adequadamente:
@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
Responder3
Parece que já descobri isso, apenas insiro uma senha como argumento de uso da rede, após a pasta a ser mapeada, conforme abaixo:
.. net use t: \BOB\senha do helpdesk /PERSISTENTE:NÃO
não sei exatamente por que funciona, já que não é a senha correta para o usuário, mas parece mapeá-la de qualquer maneira se o usuário tiver acesso e apenas lançar um acesso negado se não houver acesso à unidade e seguir em frente :)
Responder4
A solução:
net use t: \BOB\senha do helpdesk /PERSISTENTE:NÃO
parece ter funcionado, mas falha após atualizações recentes.
se EXISTE \BOB\helpdesk net use t: \BOB\helpdesk /PERSISTENT:NO
é uma solução que continua funcionando para mim. Ele é ignorado se o usuário não tiver direitos de acesso suficientes (funciona para compartilhamentos de rede).