C#控制台应用程序在Powershell viaTask Scheduler中运行

时间:2016-04-22 00:12:41

标签: c# windows powershell

我正在尝试通过powersheell / task scheduler运行我的控制台应用程序。

如果我打开PowerShell并手动运行。\ startReport.ps1就行了。控制台应用程序无法打开,只能在后台静默运行。

然而,当我通过任务计划程序创建任务时,它失败了......告诉我它已成功完成。但它没有。

有什么想法吗?

  $r = Get-Date
  $fileName =  ".\Logs\" + $r.Date.Year + "-" + $r.Date.Month + "-"+ $r.Date.Day + ".txt"

  .\MyApp.exe > $fileName

2 个答案:

答案 0 :(得分:2)

以下是我在环境中执行此操作的方法,只需稍加修改即可。 我脚本中的代码如下。请注意,我使用绝对路径而不是相对路径,因为PowerShell将使用C:\ Windows \ System32作为默认路径启动,您可能无权在其中创建Logs文件夹和日志文件。

startReport.ps1脚本内容:

$r = Get-Date
$fileName =  "C:\Data\Logs\" + $r.Date.Year + "-" + $r.Date.Month + "-"+ $r.Date.Day + ".txt"

& C:\Data\MyApp.exe > $fileName

请注意,我正在使用&执行exe的表示法。如果您使用&amp ;.也可以用任何命令替换它。你在做什么也是正确的。我建议使用绝对路径。

然后在任务计划程序中,我有以下命令:

PowerShell.exe -File "C:\Data\startReport.ps1"

我再次使用绝对路径来引用ps1文件。您可以为"程序/脚本"提供PowerShell.exe;和-File "C:\Data\startReport.ps1"用于"添加参数"任务计划程序的“操作”选项卡中的部分。

其他注意事项

  1. 在任务计划程序中,尝试使用最高权限运行,方法是单击"以最高权限运行" “创建任务”对话框的“常规”选项卡如果您不想要,请确保任务计划程序具有创建日志文件的适当权限。
  2. 确保Logs文件夹存在。

答案 1 :(得分:0)

您的任务调度程序是如何配置的? 其中一种可能性是:

  1. 在操作中,选择"启动程序"。而程序是
  2.   

    %SYSTEMROOT%\ SYSTEM32 \ WindowsPowerShell \ V1.0 \ powershell.exe

    1. 然后,在"添加参数"你写了像
    2. 这样的东西
        

      cd d:\ folderWithTheScript; \ TheScript.ps1

      然后你可以使用相对于" d:\ folderWithTheScript" pathes