Копирование файлов на сетевой диск с помощью сценария PowerShell и расписания задач

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

New-Item -Path "Z:\DBBackups\" -Name testfile -Value "test123" -ItemType file -force

Этот сценарий работает через PowerShell с путем к подключенному сетевому диску и работает с планировщиком задач, когда путь находится на локальном диске, но не работает, когда путь - на сетевой диск.

Настройки планировщика заданий: Действие: Запустите программу

Программа / сценарий: powershell.exe

Добавьте аргументы: -ExecutionPolicy Bypass -File "E: \ t.ps1"

Учетная запись для запуска задачи, которую я установил как Администратор, имеющий права на доступ к сети диск также настроен на запуск сценария, когда пользователь не вошел в систему, не хранит пароль и имеет наивысшие привилегии

Что я могу сделать, чтобы использовать планировщик задач со сценарием, который использует сетевой диск?

0
задан 17 September 2018 в 21:40
2 ответа

Вы не указали, находитесь ли вы в Домене или в Рабочей группе. Основная проблема заключается в том, что вы запускаете сценарий от имени администратора, а это не та же учетная запись «Администратор» в общей сетевой папке.

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

Если это домен активного каталога, то вам повезло. Вам необходимо изменить запланированную задачу и запустить ее под учетной записью службы. В этом случае учетная запись администратора не имеет доступа к сетевым ресурсам, и, поскольку это не та же учетная запись на удаленном сервере, она не может пройти аутентификацию на удаленном общем ресурсе. Учетная запись службы должна быть учетной записью службы, управляемой пользователем / группой домена. Вам нужно будет предоставить доступ к этой учетной записи на удаленном общем ресурсе и на уровне NTFS.

Как уже предлагал Питер Хандорф, вам следует изменить аргумент -Path, чтобы использовать сетевой путь к удаленному общему ресурсу, а не букву диска. Буква диска уникальна для каждого пользователя, если это подключенный диск, а также недоступна для учетной записи администратора, если вы подключили его под своим логином.

ripvlan также сделал очень хорошее предложение о подписании вашего скрипта. Это не только избавляет вас от необходимости изменять свою политику выполнения, но также предотвращает добавление лишнего / вредоносного кода в ваш скрипт и его выполнение без вашего ведома. После подписания сценария любые изменения в этом сценарии потребуют отказа от него, прежде чем вы сможете его снова использовать.

0
ответ дан 5 December 2019 в 05:17

Могу я предложить подписать ваш скрипт? Я выполнил эти инструкции для аналогичного сценария, который у меня есть, который создает пакет развертывания. Мой сценарий должен быть переносимым, и я устал от необходимости менять политику выполнения. Он также получает доступ к защищенным ресурсам, которые были заблокированы политикой по умолчанию (например, архивирует папки перед отправкой в ​​общий ресурс). После подписания вам необходимо развернуть один из сертификатов на сервере, на котором выполняется ваш скрипт.

Вот инструкции, которые нужно держать в руках (у меня работало в Windows 10 и даже было развернуто на сервере Windows 2008 R2).

https://www.hanselman.com/blog/SigningPowerShellScripts.aspx

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

И в качестве альтернативного решения вы можете попробовать Robocopy. Зачем изобретать велосипед: -)

0
ответ дан 5 December 2019 в 05:17

Теги

Похожие вопросы