У меня есть сценарий VB, который получает доступ к сетевому ресурсу посредством сопоставления дисков (сценарий ниже), а затем копирует файлы для обработки. Как видите, скрипт проверяет, был ли диск уже сопоставлен, прежде чем он попытается снова отобразить его. Я назначил сценарий в запланированных задачах Windows и запускал их каждую минуту. Запланированная задача настроена на работу как пользователь домена.Windows 2003 - Как привязать диск к сетевому ресурсу постоянно
Моя проблема заключается в том, что отображаемый диск не сохраняется: каждый раз, когда запускается скрипт, он должен аутентифицировать и снова отображать диск. Кажется, что отображение диска теряется после завершения скрипта.
Я обнаружил, что если я вхожу на сервер, используя учетную запись пользователя домена, такую же, как запланированная задача, сопоставьте диск вручную (используйте «NET USE») и продолжайте сеанс входа в систему, тогда скрипт пропустит отображение диска как и ожидалось.
Мне не нравится идея вести сеанс активного входа, чтобы сохранить отображаемый диск. Есть ли способ сохранить сетевой ресурс настойчиво в качестве локального диска, независимо от сеанса входа пользователя.
Причина, по которой я не хочу отображать диск каждый раз, потому что я хочу избежать частых проверок Windows (каждую минуту). Мы обнаружили аутентификацию Windows. LSASS.exe утечки небольшого объема памяти при каждом запуске оператора «MapNetworkDrive» vbs. Конечно, проблема с утечкой памяти может стать другим обсуждением темы. На данный момент, если у меня может быть постоянно привязанный диск (к сетевому ресурсу), я был бы очень доволен.
[диск отображение VB Script, 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
спасибо за ответ на мой вопрос, я пытался, но, к сожалению, это не работает для моего случая. Я понимаю, что флаг «/ PERSISTENT: YES» в «NET USE» аналогичен третьему параметру «true» в «WshNetwork.MapNetworkDrive sDriveLetter, sUNC, True», как в моем исходном скрипте. Я думаю, что это заставляет Windows помнить это отображение диска, поэтому в следующий раз, когда один и тот же пользователь войдет в систему, Windows автоматически отобразит диск для пользователя. Windows не «удерживает» диск после выхода пользователя из системы. – Chang
Я начинаю думать, что я прошу, невозможно. – Chang
О, я понимаю, о чем вы говорите. Извините за путаницу. Вы правы, вы не можете подключиться к сетевому диску без проверки подлинности. Это является основой того, как работает kerberos. Вы выполняете аутентификацию один раз, и вы получаете токен для последующих запросов. Невозможно подключиться к диску и предоставить его всем пользователям. Сожалею. –