Назад | Перейти на главную страницу

Сопоставить сетевое пространство с диском Windows в запланированном задании (скрипте)?

Мне нужно сопоставить с сетевым пространством подключенный диск, например S: для некоторых других заданий. Мой ящик - Windows Server 2008. В Windows Server 2008 я могу создать запланированную задачу с помощью задания bat, и я могу указать, что оно запускается, когда Windows перезагружается, или Вход в систему без указанного пользователя. Это вроде службы с локальной системой. Бат содержит net cmd для отображения диска:

net use S: \\netdrive1\space1 pwd /user:oneUser

Потом перезагружаю бокс. Похоже, что запланированное задание было выполнено. Я могу проверить по истории заданий планировщика заданий. Однако диск S: не может быть сопоставлен. Если просто запустить биту из командной строки. Работает нормально. Кажется, мне нужно войти в систему, чтобы подключить диск. Не уверены, можно ли разрешить Windows выполнять задание как локальную систему при перезагрузке, чтобы диск стал доступным?

В моем случае сетевой диск находится в ящике Unix.

Как я упоминал выше, у меня есть некоторые другие запланированные задания зависимостей в локальной системе Windows. Следовательно, я должен сделать сетевое пространство доступным без входа пользователя в систему.

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

Шаги, которые я сделал:

  1. Открыть планировщик заданий

  2. Создайте новую задачу со всеми необходимыми деталями, триггерами и т. Д.

  3. Перейдите к действиям -> Выберите действие из раскрывающегося списка -> Нажмите «Обзор»

(Это открыло окно просмотра)

  1. Щелкните правой кнопкой мыши Компьютер -> Подключить сетевые диски -> Подключить требуемый диск

  2. Прикрепите файл к работе

Готово

Ура !!

Подключенные диски доступны только в интерактивном сеансе. Вы не можете подключить диск во время работы в качестве службы, вам нужно использовать пути UNC.

Вы застряли в затруднительном положении ... планировщик выполняет ваш bat-файл в «режиме администратора», что на самом деле не влияет на среду пользовательского режима. Я знаю, что это звучит странно, но мое собственное тестирование показывает, что это могут быть две отдельные пользовательские среды. Возможно, вы захотите попробовать запустить быстрый и грязный сценарий vbs в папке автозагрузки профиля пользователя ... и посмотреть, делает ли это то, что вы хотите.

set WshShell = WScript.CreateObject("WScript.Shell")
Set objNetwork = CreateObject("WScript.Network")
do while true
  objNetwork.MapNetworkDrive "S:", "\\netdrive1\space1", false, "oneUser", "pwd"
  WScript.Sleep(12000)
loop

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

On Error Resume Next
before the loop.

Вы можете настроить время сна по мере необходимости ... или использовать более продвинутый механизм проверки времени / даты ... но это должно дать вам представление.

net use S: \\netdrive1\space1 pwd /user:oneUser /persistent:yes

Это может избавить от необходимости в запланированной задаче, но я не уверен, будет ли она поддерживать соединение без входа пользователя в систему.

Пути UNC в вашем приложении - намного лучший способ, чем сопоставление диска, поэтому, если возможно, вам следует сделать это вместо этого.

http://technet.microsoft.com/en-us/library/bb490717.aspx

РЕДАКТИРОВАТЬ

Это не очень элегантно, но может работать (полностью непроверено)

NET USE \\netdrive1\space1 /USER:oneUser pwd && PUSHD \\netdrive1\space1
COPY C:\path\to\files\*.dat Z:\
POPD && NET USE \\netdrive1\space1 /DELETE

Попробуйте это как свой командный файл. Происходит то, что NET USE аутентифицирует пользователя по общему ресурсу, PUSHD автоматически подключает диск к букве диска (в обратном порядке, поэтому, если другие диски не смонтированы, чего нет в данном случае, это будет Z :). Скопируйте файлы, затем отключите соединение с общим ресурсом. Понятия не имею, будет ли это работать без интерактивного сеанса входа в систему, но попробовать стоит.

Рассматривали ли вы использование пути UNC вместо попытки сопоставить букву диска? В 98% случаев использование \\ server \ share \ везде, где вы видите s:, не вызывает проблем.

Я смог запустить запланированную задачу от имени желаемого пользователя и просто использовал NET USE Q: \\192.168.7.1\space как первая строка запущенного пакетного скрипта.

К сожалению, у меня не было возможности напрямую использовать пути UNC из-за того, как сторонние библиотеки обрабатывали пути UNC.