ドライブマッピング(下記のスクリプト)を使用してネットワーク共有にアクセスし、処理のためにファイルをコピーするVBスクリプトがあります。ご覧のとおり、スクリプトは、ドライブをマップし直す前に、ドライブがすでにマップされているかどうかを確認します。 Windowsのスケジュールされたタスクでスクリプトをスケジュールし、毎分実行させました。スケジュールされたタスクは、ドメインユーザーとして実行されるように構成されています。Windows 2003 - ドライブをネットワーク共有に永続的にマッピングする方法
私の問題は、マッピングされているドライブが持続しないことです。スクリプトが実行されるたびに、ドライブを認証して再度マップする必要があります。スクリプトが完了すると、ドライブマッピングが失われているようです。
スケジュールされたタスクと同じドメインユーザーアカウントを使用してサーバーにログインすると、ドライブを手動でマップして(「NET USE」を使用して)ログインセッションを実行したままにすると、スクリプトはドライブのマッピングをスキップします予想通り。
ライブのログインセッションを維持して、ドライブをマップしたままにしておくのは嫌いです。ログインユーザーのセッションにかかわらず、ローカルドライブとしてネットワーク共有を永続的に保持する方法はありますか。
毎回ドライブをマップしたくない理由は、頻繁なWindows認証(毎分)を避けたいからです。私たちは、Windows認証LSASS.exeが "MapNetworkDrive" vbsステートメントを実行するたびに少量のメモリをリークすることを発見しました。もちろん、このメモリリークの問題は別のスレッドの議論になる可能性があります。現時点では、(ネットワーク共有への)永続的にマップされたドライブを持つことができれば、私は非常に満足しています。私の質問に答えるための
[ドライブマッピングVBスクリプト、FYI]
Function MapNetDrive (sDriveLetter, sUNC)
Dim TDriveExists: TDriveExists = False
Dim WshNetwork: Set WshNetwork = WScript.CreateObject("WScript.Network")
Dim oDrives: Set oDrives = WshNetwork.EnumNetworkDrives
'loop through all the currently mapped drives to see if T: exists
Dim i
For i = 0 to oDrives.Count - 1 Step 2
If oDrives.Item(i) = sDriveLetter Then
TDriveExists = True
End If
Next
'If not, map the T: drive
If TDriveExists <> True Then
WshNetwork.MapNetworkDrive sDriveLetter, sUNC, True, 'userName', 'password'
End If
'clean up
Set oDrives = Nothing
Set WshNetwork = Nothing
MapNetDrive = True
End Function
おかげで、私が試したが、残念ながらそれは私の場合のために動作しません。私の理解は、 "NET USE"の "/ PERSISTENT:YES"フラグは、 "WshNetwork.MapNetworkDrive sDriveLetter、sUNC、True"の3番目のパラメータ "true"と同じです。私はWindowsがこのドライブマッピングを覚えていると思うので、次回は同じユーザーがログオンすると、Windowsはユーザーのドライブを自動的にマップします。ユーザーがログオフした後、Windowsはドライブを「保持」しません。 – Chang
私は私が求めるものは不可能だと考え始めます。 – Chang
ああ、あなたが言っていることが分かります。混乱させて申し訳ありません。あなたは正しいです、認証せずにネットワークドライブに接続することはできません。これはケルベロスの働きの中核です。一度認証すると、後続の要求のトークンが取得されます。ドライブに接続してすべてのユーザーが使用できるようにする方法はありません。ごめんなさい。 –