Windows 2003 - Как постоянно подключать диск к общему сетевому ресурсу

У меня есть сценарий VB, который обращается к общему сетевому ресурсу через сопоставление дисков (сценарий ниже), а затем копирует файлы для обработки. Как видите, сценарий проверяет, был ли уже сопоставлен диск, прежде чем он попытается сопоставить его снова. Я запланировал сценарий в разделе «Назначенные задачи Windows» и заставил его запускаться каждую минуту. Запланированная задача настроена для работы от имени пользователя домена.

Моя проблема в том, что отображаемый диск не сохраняется: каждый раз, когда запускается скрипт, он должен аутентифицироваться и снова отображать диск. Похоже, что сопоставление дисков потеряно после завершения сценария.

Я обнаружил, что если я войду на сервер, используя учетную запись пользователя домена, такую ​​же, как и в запланированной задаче, подключу диск вручную (используйте «NET USE») и продолжу сеанс входа в систему, то сценарий пропустит сопоставление диска, как ожидалось.

Мне не нравится идея поддерживать сеанс входа в систему в реальном времени только для того, чтобы подключать диск. Есть ли способ сохранить общий сетевой ресурс постоянно как локальный диск, независимо от сеанса входа пользователя.

Причина, по которой я не хочу отображать диск каждый раз, заключается в том, что я хочу избежать частой проверки подлинности Windows (каждую минуту). Мы обнаружили, что проверка подлинности Windows LSASS.exe приводит к утечке небольшого количества памяти каждый раз, когда мы запускаем инструкцию vbs «MapNetworkDrive». Конечно, эта проблема с утечкой памяти может стать предметом отдельного обсуждения. На данный момент, если бы у меня был постоянно подключенный диск (к общему сетевому ресурсу), я был бы очень счастлив.

[скрипт сопоставления дисков 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

person Chang    schedule 23.01.2012    source источник


Ответы (1)


person    schedule
comment
Спасибо, что ответили на мой вопрос, я пробовал, но, к сожалению, в моем случае это не работает. Насколько я понимаю, флаг / PERSISTENT: YES в NET USE совпадает с третьим параметром true в WshNetwork.MapNetworkDrive sDriveLetter, sUNC, True, как в моем исходном скрипте. Я думаю, что это заставляет Windows запоминать это сопоставление дисков, поэтому в следующий раз, когда тот же пользователь войдет в систему, Windows автоматически сопоставит диск для пользователя. Windows не сохраняет диск после выхода пользователя из системы. - person Chang; 31.01.2012
comment
Я начинаю думать, что то, о чем я прошу, невозможно. - person Chang; 03.02.2012
comment
О, я понимаю, о чем вы говорите. Извините за путаницу. Вы правы, вы не можете подключиться к сетевому диску без аутентификации. Это суть работы Kerberos. Вы аутентифицируетесь один раз и получаете токен для последующих запросов. Невозможно подключиться к диску и сделать его доступным для всех пользователей. Прости. - person Nathan Rice; 03.02.2012