【问题标题】:C# Console Application run in Powershell viaTask SchedulerC# 控制台应用程序通过任务计划程序在 Powershell 中运行
【发布时间】:2016-04-22 00:12:41
【问题描述】:

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

如果我打开 powershell 并手动运行 .\startReport.ps1 它可以工作。控制台应用程序没有打开,只是在后台静默运行。

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

有什么想法吗?

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

  .\MyApp.exe > $fileName

【问题讨论】:

    标签: c# windows powershell


    【解决方案1】:

    以下是我如何在我的环境中执行此操作,只需稍作修改。 我的脚本中的代码如下。请注意,我使用的是绝对路径而不是相对路径,因为 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。如果你使用 &,你也可以用任何命令替换它。你所做的也是正确的。我只是建议使用绝对路径。

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

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

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

    其他注意事项

    1. 在任务计划程序中,通过单击“创建任务”对话框的“常规”选项卡上的“以最高权限运行”复选框尝试以最高权限运行。如果您不希望这样,请确保任务计划程序具有创建日志文件的适当权限。
    2. 确保存在 Logs 文件夹。

    【讨论】:

      【解决方案2】:

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

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

      %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe

      1. 然后,在“添加参数”中编写类似

      cd d:\folderWithTheScript; .\TheScript.ps1

      然后你可以使用相对于“d:\folderWithTheScript”的路径

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-16
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        • 2017-05-28
        • 1970-01-01
        • 2017-11-07
        相关资源
        最近更新 更多