1

Я работаю с Python 2.7.9 (64 бит) и Windows Server 2012 R2

Я пытаюсь настроить задачу Windows для запуска длинного скрипта Python каждый день. Мне удалось, вызвав python из сценария powershell, заставить его успешно работать, однако возникает проблема, когда он пытается получить доступ к подключенному диску.

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

bsd_runner.py:<module>:[Errno 2] No such file or directory: u'S:\\pre/RefAttendanceReason.csv'

Несмотря на то, что задача настроена на выполнение от имени моего пользователя, я подумал, что, возможно, задача расписания не имеет сопоставленного накопителя, поэтому я рассмотрел сопоставление накопителя в моем скрипте powershell. Я старался:

New-PSDrive –Name "S" –PSProvider FileSystem –Root "\\D-DWSQL01\Share\load" –Persist 2>&1 >> map_drive.log

которая дала мне результаты:

New-PSDrive : The specified drive root "â€Root \\D-DWSQL01\Share\load 
â€Persist" either does not exist, or it is not a folder.
At C:\Users\thomasa\Desktop\sandbox\BSD_ETL\run_bsd.ps1:8 char:5
+     New-PSDrive –Name "S" –PSProvider FileSystem –Root 
"\\D-DWSQL01\Share\ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~
    + CategoryInfo          : ReadError: (â€Name S â€PSProvider:PSDriveInfo) [ 
   New-PSDrive], IOException
    + FullyQualifiedErrorId : DriveRootError,Microsoft.PowerShell.Commands.New 
   PSDriveCommand

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

Я проверил наивысшие разрешения и сказал задаче убедиться, что у нее есть доступ к сети перед запуском, но безрезультатно.

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

2 ответа2

1

С помощью

net use S: \\D-DWSQL01\Share\load

Видимо позволил заданию по расписанию нормально видеть диск.

0

перед подключением PSdrive добавьте строку:

pushd \\D-DWSQL01\Share\load

перед отключением с помощью PSdrive добавьте строку:

popd

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .