我正在运行 Windows 2016 任务计划程序中的 powershell 脚本,该脚本使用 UNC 路径或脚本中映射的驱动器执行程序。
两种变体在 powershell 中运行良好,但在从任务中运行时不起作用。
根据映射驱动器变体中的消息,我知道脚本正在执行。
我使用任务中使用的相同用户帐户在服务器上运行 powershell。
该应用程序需要位于脚本中显示的 ..\runtime 文件夹中的 DLL。
UNC 脚本为:
$Env:Path+=";\\myserver\apps\runtime
\\我的服务器\应用程序\myapp.exe
这只会默默地失败。
映射驱动器脚本是:
如果(!(测试路径 X:))
{
New-PSDrive -Name X -PSProvider FileSystem –Root "\\myserver\apps"
}
$Env:Path+=“;X:\runtime”
执行文件
此版本在 powershell 事件日志中生成警告“提供商健康:找不到驱动器‘X:\’。驱动器可能尚未准备好或可能未映射。”对于引用 X: 驱动器位置的两行
答案1
好吧,这原来是用户犯的一个重大错误。在任务“常规”选项卡下的“无论用户是否登录都运行”下,选中了“不存储密码”选项。这明确表示,如果选中此选项,则任务将只能访问本地资源。当我取消选中此选项并将任务设置为运行 \myserver\apps\myapp.exe 并从 \myserver\apps\runtime\ 启动时,它按预期工作。