
現在、ネットワーク ドライブをユーザー プロファイルにマップするために使用している 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 の引数としてパスワードを入力するだけです。
.. net use t:\BOB\helpdesk パスワード /PERSISTENT:NO
なぜこれが機能するのかは正確にはわかりません。ユーザーの正しいパスワードではないのですが、ユーザーがアクセスできる場合はとにかくマップされ、ドライブにアクセスできない場合はアクセスが拒否されて先に進むようです :)
答え4
ソリューション:
net use t:\BOB\helpdesk パスワード /PERSISTENT:NO
動作していたようですが、最近のアップデート後に動作しなくなりました。
\BOB\helpdeskが存在する場合、net use t: \BOB\helpdesk /PERSISTENT:NO
私にとってはうまく機能し続ける解決策です。ユーザーに十分なアクセス権がない場合はスキップされます (ネットワーク共有で機能します)。