【发布时间】:2013-07-03 09:34:13
【问题描述】:
我只想使用 Windows Server 2008 上的任务调度程序和 Powershell 脚本调用 URL。
所以我开发了以下脚本:
$url = "http://example.com"
$log_file = "${Env:USERPROFILE}\Desktop\Planification.log"
$date = get-date -UFormat "%d/%m/%Y %R"
"$date [INFO] Exécution de $url" >> $log_file
$request = [System.Net.WebRequest]::Create($url)
$response = $request.GetResponse()
$response.Close()
当我从 Powershell ISE、Powershell 控制台或使用以下命令执行脚本时,该脚本可以正常工作:
powershell PATH_TO_MY_SCRIPT.ps1
但是当我从调度程序任务中执行它时它不起作用,它返回代码 0xFFFD0000。我发现了这个:http://www.briantist.com/errors/scheduled-task-powershell-0xfffd0000/ 所以这可能是权限问题,所以我尝试了许多其他配置文件和选项(包括“使用所有权限执行”)来测试,但没有成功。
我还执行了另一个 Powershell 脚本,它只是挂载了一个网络驱动器并复制了两个文件,我对这个脚本没有任何问题。所以我认为问题来自使用 .NET 对象来调用我的 URL。
我看到我可能必须在我的脚本中包含任何其他命令之前的模块,但我不知道我必须做什么。 (我不知道Powershell,我只是尝试用它来解决我的问题)。
感谢您的帮助。
【问题讨论】:
-
我认为问题更可能出在访问
USERPROFILE目录 - 它可能不是您期望的那样。如果它是外部 URL,也可能是您的代理设置(或缺少代理设置)的问题。计划任务在哪个用户帐户下执行? -
不能更同意@alroc 在“用户配置文件”部分。当您手动(或以交互方式)运行它时,它是谁登录到系统并打开会话(例如,如果您以“Peter”身份登录,您将获得“Peter”的个人资料)。当通过计划任务运行它时,默认情况下它将是“SYSTEM”的配置文件,这可能会使
${Env:USERPROFILE}\Desktop\Planification.log毫无意义。但是“SYSTEM”帐户可以更改:在“计划任务”控制面板中右键单击它,然后转到属性,您将能够修改运行任务的用户帐户。 -
PowerShell 3+ 或更早版本的详细答案:stackoverflow.com/a/12081686/155687
标签: powershell scheduled-tasks