
我目前有一個 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
我始終無法找到問題的有限解。但是一個可用的(但非常hacky和不乾淨的)解決方法是使用這個命令:
::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
似乎有效,但在最近更新後失敗了。
如果存在 \BOB\helpdesk net use t: \BOB\helpdesk /PERSISTENT:NO
是一個對我來說一直有效的解決方案。如果使用者沒有足夠的存取權限(適用於網路共用),則會跳過。