2012-01-23 3 views
0

드라이브 매핑 (아래 스크립트)을 통해 네트워크 공유에 액세스하는 VB 스크립트가 있으며 처리를 위해 파일을 복사합니다. 보시다시피, 스크립트는 드라이브가 이미 매핑을 시도하기 전에 이미 매핑되어 있는지 확인합니다. Windows 예약 된 작업에서 스크립트를 예약하고 매분마다 실행되도록했습니다. 예약 된 작업은 도메인 사용자로 실행되도록 구성됩니다.Windows 2003 - 드라이브를 네트워크 공유에 영구적으로 매핑하는 방법

내 문제는 매핑되는 드라이브가 지속되지 않는다는 것입니다. 스크립트가 실행될 때마다 드라이브를 인증하고 다시 매핑해야합니다. 스크립트가 끝나면 드라이브 매핑이 손실 된 것 같습니다.

예약 된 작업과 동일한 도메인 사용자 계정을 사용하여 서버에 로그인하면 드라이브를 수동으로 매핑하고 ('NET USE'사용) 로그인 세션을 계속 실행하면 스크립트가 드라이브 매핑을 건너 뜁니다. 예상대로

드라이브 로그인 상태를 유지하기 위해 실시간 로그인 세션을 유지하는 것이 좋지 않습니다. 로그인 사용자의 세션에 관계없이 네트워크 공유를 로컬 드라이브로 영구히 유지할 수있는 방법이 있습니까?

드라이브를 매번 매핑하지 않으려는 이유는 자주 Windows 인증 (매분마다)을 피하기 위해서입니다. 우리는 Windows 인증 LSASS.exe가 "MapNetworkDrive"vbs 문을 실행할 때마다 소량의 메모리 누출을 발견했습니다. 물론이 메모리 누수 문제는 다른 스레드 토론이 될 수 있습니다. 잠시 동안 (네트워크 공유에) 지속적으로 매핑 된 드라이브를 가질 수 있다면 매우 행복 할 것입니다.

[드라이브 매핑 VB 스크립트, 참고하시기 바랍니다] 내 질문에 회신에 대한

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"의 세 번째 매개 변수 "true"와 같습니다. 나는 그것이 Windows가이 드라이브 맵핑을 기억하게 만들 것이라고 생각한다. 그래서 다음 번에 같은 사용자가 로그온 할 때, Windows는 사용자를 위해 드라이브를 자동으로 맵핑 할 것이다. Windows는 사용자가 로그 오프 한 후에 드라이브를 "보관"하지 않습니다. – Chang

+0

나는 내가하는 것이 불가능하다는 것을 생각하기 시작한다. – Chang

+0

아, 네가 무슨 말하는지 알 겠어. 혼란을 드려 죄송합니다. 맞습니다. 인증하지 않고 네트워크 드라이브에 연결할 수 없습니다. 이것은 kerberos가 작동하는 방식의 핵심입니다. 한 번만 인증하면 후속 요청에 대한 토큰을받습니다. 드라이브에 연결하여 모든 사용자가 사용할 수있는 방법이 없습니다. 죄송합니다. –

관련 문제