2012-01-23 9 views
0

ドライブマッピング(下記のスクリプト)を使用してネットワーク共有にアクセスし、処理のためにファイルをコピーする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 

答えて

0
Sub MapNetDrive(sDriveLetter, sUNC) 
    Set oShell = CreateObject("WScript.Shell") 
    oShell.Run "%comspec% /c NET USE /PERSISTENT:YES " & sDriveLetter & _ 
       ": """ & sUNC & """", 0, True 
    Set oShell = Nothing 
End Sub 
+0

おかげで、私が試したが、残念ながらそれは私の場合のために動作しません。私の理解は、 "NET USE"の "/ PERSISTENT:YES"フラグは、 "WshNetwork.MapNetworkDrive sDriveLetter、sUNC、True"の3番目のパラメータ "true"と同じです。私はWindowsがこのドライブマッピングを覚えていると思うので、次回は同じユーザーがログオンすると、Windowsはユーザーのドライブを自動的にマップします。ユーザーがログオフした後、Windowsはドライブを「保持」しません。 – Chang

+0

私は私が求めるものは不可能だと考え始めます。 – Chang

+0

ああ、あなたが言っていることが分かります。混乱させて申し訳ありません。あなたは正しいです、認証せずにネットワークドライブに接続することはできません。これはケルベロスの働きの中核です。一度認証すると、後続の要求のトークンが取得されます。ドライブに接続してすべてのユーザーが使用できるようにする方法はありません。ごめんなさい。 –

関連する問題