0

ドライブ マッピング (以下のスクリプト) を介してネットワーク共有にアクセスし、処理のためにファイルをコピーする VB スクリプトがあります。ご覧のとおり、スクリプトは、ドライブを再度マップする前に、ドライブが既にマップされているかどうかを確認します。Windows のスケジュールされたタスクでスクリプトをスケジュールし、毎分実行するようにしました。スケジュールされたタスクは、ドメイン ユーザーとして実行されるように構成されています。

私の問題は、マップされているドライブが持続しないことです。スクリプトを実行するたびに、ドライブを認証して再度マップする必要があります。スクリプトが終了すると、ドライブ マッピングが失われるようです。

スケジュールされたタスクと同じドメイン ユーザー アカウントを使用してサーバーにログインし、ドライブを手動でマップし (「NET USE」を使用)、ログイン セッションを実行し続けると、スクリプトは期待どおりにドライブのマッピングをスキップすることがわかりました。

ドライブのマッピングを維持するためだけにライブログインセッションを維持するという考えは好きではありません。ログインユーザーのセッションに関係なく、ネットワーク共有をローカルドライブとして永続的に保持する方法はありますか?

毎回ドライブをマップしたくない理由は、頻繁な Windows 認証 (毎分) を避けたいからです。「MapNetworkDrive」vbs ステートメントを実行するたびに、Windows 認証 LSASS.exe が少量のメモリをリークすることがわかりました。もちろん、このメモリ リークの問題は別のスレッドの議論になる可能性があります。今のところ、永続的にドライブを (ネットワーク共有に) マッピングできれば、とてもうれしいです。

[ドライブ マッピング 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
4

1 に答える 1

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
于 2012-01-24T21:11:44.480 に答える