我目前有一个 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
扩展 Mattisdada 的答案,此脚本将使修改任何驱动器映射变得更容易一些,只需添加、删除或更改函数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 t:\BOB\helpdesk 密码/PERSISTENT:NO
不完全确定它为什么会起作用,因为它不是用户的正确密码,但如果用户有访问权限,它似乎会映射它,如果没有访问权限,则抛出访问被拒绝并继续前进:)
答案4
解决方案:
net use t:\BOB\helpdesk 密码 /PERSISTENT:NO
似乎已经起作用但是在最近的更新后失败了。
如果 EXIST \BOB\helpdesk 则使用 t:\BOB\helpdesk /PERSISTENT:NO
对我来说这是一个一直有效的解决方案。如果用户没有足够的访问权限(适用于网络共享),它会跳过。