Windows 计划任务无法访问映射驱动器

Windows 计划任务无法访问映射驱动器

我正在使用 python 2.7.9(64 位)和 windows server 2012 R2

我正在尝试设置一个 Windows 计划任务,每天运行一个很长的 Python 脚本。我已设法通过从 powershell 脚本调用 Python 来让 Python 成功运行,但是当它尝试访问映射驱动器时出现问题。

我可以从命令行或交互式 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 脚本,但出现相同的错误,驱动器根目录不存在。但我自己映射了它,一切正常。

答案1

使用

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

显然允许计划任务正常查看驱动器。

答案2

在 PSdrive 连接之前添加一行:

pushd \\D-DWSQL01\Share\load

在通过 PSdrive 断开连接之前添加一行:

popd

如果您不需要映射特殊驱动器号,可以删除 PSdrive 命令。

相关内容