计划任务在login时显示控制台窗口,但在未login时仍然运行

是否有可能(如果是这样,怎么样)在Server 2008中设置一个任务(控制台应用程序),以便在用户login时以及没有用户login时运行,并且 – 如果用户login(本地或通过RDP) – 程序运行时,控制台是否显示在屏幕上?

IE浏览器。 该程序应该在定义的用户上下文下运行,并将状态消息写入stdout,然后转到标准的控制台窗口。 此控制台窗口显示(如果定义的用户当前login本地或通过RDP),或未显示(但应用程序仍在运行)。

我可以访问控制台应用程序的源代码,所以如果它需要一些额外的代码(比如特意打开一个新的控制台窗口或你有什么),那么这不是一个问题。

目前,我可以将任务设置为“仅在用户login时运行”,在用户login时(本地或RDP)运行应用程序,然后我可以看到状态消息,或者我可以设置它如“运行用户是否login”和没有状态输出可见 – 即使用户login。

我会稍微有点不同。 我会将控制台程序的输出redirect到一个日志文件。

for /f "usebackq tokens=1,2,3,4,5,6,7 delims=/:. " %%a in (`echo %DATE% %TIME%`) do set NOW=%%d%%b%%c_%%e%%f%%g myprogram.exe > c:\logs\job_%NOW%.log 2>&1 rem if user is logged in, display the file type c:\logs\job_%NOW%.log 

如果没有人login,那么最后的“types”命令将是无关紧要的。 如前所述,使用“运行用户是否被logging”选项。

我没有Server 2008进行testing,但在所有以前的版本中,您只需以将要login的用户的身份运行任务。 当用户没有login但是不可见时,colsole / GUI将仍然运行。

您可以制作2个独立的计划任务,1个用于login,1个用于未login。 在“ General选项卡中, Run only while logged onRun only while logged on的选项, Run whether logged on or not

然后在未login时运行任务:如果服务器有注销计时器(即空闲10分钟后),则可以设置ConditionsStart the task only if the computer is idle for X minutes在10分钟后Start the task only if the computer is idle for X minutes空闲时间(由于不活动而被注销时),以及Stop if the computer ceases to be idle (当您重新login时) Stop if the computer ceases to be idle