У меня есть задание планировщика заданий для запуска Robocopy для резервного копирования локальных файлов на сетевой ресурс. Я должен использовать учетные данные домена для доступа к общему сетевому ресурсу, но локальный компьютер не входит в домен, а задание запускается от имени локального администратора. Это решениевременное сопоставление и отключение общего сетевого ресурса работает, но он оставляет мой пароль открытым для всех, кто смотрит на действия задания планировщика заданий. Я бы предпочел, чтобы сетевой диск обычно отображался на полупостоянной основе, поэтому заданию планировщика заданий просто нужно запустить Robocopy и обратиться к соответствующей букве диска. Однако я всегда получаю сообщение об ошибке «Система не может найти указанный путь». в журнале Robocopy при запуске из планировщика задач, даже если команда работает нормально из командной строки с повышенными правами (задание настроено на выполнение с наивысшими привилегиями). Также обратите внимание, что я сделал эту настройку реестра для доступа к подключенным дискам из командной строки с повышенными правами.
РЕДАКТИРОВАТЬ: Чтобы уточнить, вошел в систему как локальный администратор, я запускаю Windows Explorer как администратор. Я сопоставляю сетевой ресурс с буквой Y. Я запускаю командную строку от имени администратора и запускаю
C:\Windows\System32\Robocopy.exe C:\temp Y:\temp
Работает отлично. Я создаю задание планировщика заданий для запуска одной и той же команды, независимо от того, вошел ли пользователь в систему или нет, с самыми высокими привилегиями. Я запускаю его и получаю ошибку. Я пишу в журнал и получаю
ERROR 3 (0x00000003) Getting File System Type of Destination Y:\temp\
The system cannot find the path specified.
с последующим
ERROR 3 (0x00000003) Creating Destination Directory Y:\temp\
The system cannot find the path specified.
источник
Ответы:
Сопоставленные диски представляют собой концепцию пользовательского интерфейса и недоступны для таких фоновых задач. Получите доступ к цели через UNC и убедитесь, что у пользователя, выполняющего задачу, есть доступ к цели.
источник
В моем случае все, что мне нужно было сделать, это снять
run with highest privileges
флажок, но я запускаю задачу на том же пользователе, что и пользователь, который подключил диск.источник
Попробуйте использовать:
в пакетном файле вашей запланированной задачи. Сетевые общие диски доступны только из пользовательской среды. «pushd» позволит запустить его в контексте скрипта.
Когда вы закончите использовать:
разархивировать диск.
Ссылка: https://blog.adrianbanks.co.uk/windows/2007/03/08/accessing-network-file-shares-from-a-command-prompt.html
источник
Другой вариант - просто использовать полный сетевой путь, поскольку Robocopy их поддерживает. то есть robocopy c: \ temp \\ server \ share \ temp
Или, что еще лучше, запустите резервное копирование на самом сервере. Создайте учетную запись администратора домена только для процесса резервного копирования. Feed robocopy пароль из текстового файла, к которому имеют доступ только администраторы домена.
Несколько лет назад я создал несколько сценариев .cmd, которые бы таким образом создавали резервные копии важных файлов для каждой системы в сети. Единственной внешней программой, которую я использовал, была команда Cgywin Grep и командная строка smtp отправителя почты.
Я сделал один скрипт, который сканировал бы сеть на наличие систем. Он создаст текстовый файл со всеми именами систем и сообщит мне по электронной почте о любых новых обнаруженных системах. (У меня был файл конфигурации, который он будет анализировать для пропуска систем.) В каждой новой системе был создан каталог для резервных копий и файл конфигурации для резервных копий. Пользователь может изменить этот файл и перечислить любые каталоги, для которых необходимо создать резервную копию. Они также могли указать время для своих резервных копий, чтобы этого не случилось, когда они были в офисе. Я запускал этот скрипт на сервере каждые 5 минут, так как он не занимал время обработки, и мне нравится функция безопасности, предупреждающая меня о подключении новой системы к сети.
Другой сценарий будет анализировать все отдельные файлы конфигурации резервного копирования и планировать задачу для запуска резервного копирования в этой системе. Это было запущено ежедневно в 0:01 утра.
Наконец, скрипт резервного копирования проанализирует файл конфигурации, который был передан ему планировщиком, и с помощью robocopy скопирует все файлы. У меня была полная проверка ошибок в файлах конфигурации, так как пользователи редактировали их, и я получал электронные письма о любых проблемах.
Пользователи могли читать свои резервные файлы, но не могли удалить резервную копию. Это обеспечило некоторую защиту от возможного недовольства работника.
Возможно, что-то гораздо более элегантное можно было бы сделать в .vbs или powershell, но я на самом деле не программист. Мои классы программирования включали в себя Cobal и JCL. Я помню, что я скопировал сценарии, когда ушел, но кто знает, где они сейчас.
источник
Я преодолел проблему, изменив параметр «Запускать, вошел ли пользователь в систему или нет» на «Запускать только после входа в систему». Попробуйте это может помочь вам.
источник
Создание этого сценария powershell, планирование задания как SYSTEM и настройка его запуска при перезагрузке позволили мне использовать буквы дисков в моих сценариях, поскольку UNC не подходит из-за головной боли из-за других проблем.
источник
cmd /c net use
запись о работе до записи о копировании в задачу, и это решило мою проблему. Ваш пост был первым после четырех часов, в котором были предложены зеркальные учетные записи, которые давали простое решение. Продолжайте хорошую работу!\\ServerName\ShareName
логику такого рода. Кроме того, это не обязательно должен быть PowerShell, поскольку он такжеNET USE
запускается через пакет, и что касается планирования с помощью Task Scheduler и учетной записи SYSTEM, вы можете делать это независимо от того, какой тип сценария, логики и т. Д. Вы планируете запускать с помощью Task. Планировщик.NET USE \\<ServerName>\<ShareName> <password> /user:<domain>\<username>
именно это и не нужно указывать букву диска вообще, если требуется только аутентификация для общего ресурса, а не фактическая буква диска.Попробуйте изменить местоположение «начало в» на «c: \». Это, кажется, исправило это для меня, поэтому возможно система препятствовала выполнению cmd.exe из файла \ windows \ system32 \ по умолчанию в качестве функции безопасности.
источник
У меня была такая же проблема при попытке доступа к r: /xxxfilename.txt с подключенного к Windows диска r: \ server \ share при вызове скрипта из планировщика задач Windows.
Я решил использовать //server/share/xxxfilename.txt
Пожалуйста, обратите внимание, что обратная косая черта преобразована в прямую косую черту.
Теперь мой скрипт bash cygwin работает в планировщике задач Windows и оболочке cygwin.
Примечание: команда « net use » может получить доступ к карте накопителей в оболочке, но показывает Unavailable R: когда я запускаю эту команду в планировщике задач Windows.
источник
Как заметил другой пользователь, установка опции «Запускать независимо от того, вошел пользователь в систему или нет» на «Запускать только после входа в систему», похоже, работает. Затем вы можете использовать либо сопоставленный путь (например, Z :), либо путь к серверу (например, \\ ServerName \ Path).
Конечно, если вы используете эту опцию, то вы должны сделать, как говорится, и убедиться, что вы вошли на сервер как пользователь с доступом к соответствующему диску. Я помню, как работал в более старой компании с множеством рабочих мест, подобных этой. Однажды кто-то «отключился» от основного сервера заданий, не ожидая, что это окажет какое-либо влияние, поскольку они никак не выключали машину ...
Кроме того, в наши дни Windows любит много перезагружать систему самостоятельно. Так что используйте это решение на свой страх и риск.
источник
Также обратите внимание, что если вы выполняете сопоставление в сценарии, а пароль содержит%, то для сценария должно быть записано %% для работы сценария из планировщика заданий, а% для работы из команды commandprompt
источник
Можно использовать следующие команды, которые будут добавлены в сам пакетный скрипт, чтобы запустить пакетный скрипт из задачи расписания Windows, чтобы получить каталог, файл скопирован в локальную систему с помощью задачи расписания Windows; net use Y: "\\ xxx \ xxx \ xxx cd / d Y: net user / d Y: / Y
источник
Спасибо, я думаю, что с помощью «запуска в c: \» решена моя проблема, я буду отслеживать эту проблему, чтобы подтвердить, решена.
У меня возникла та же проблема, если я нажимал прямо на пакет, он работал без сбоев, но не под запланированной задачей.
источник