预定的Powershell脚本不会运行

时间:2014-02-14 18:18:52

标签: windows powershell powershell-v2.0 powershell-v3.0

我有一个像下面这样的ps1脚本,它会过滤文件并输出格式化的HTML文件。

$a = "<style>"
$a = $a + "BODY{background-color:peachpuff;}"
$a = $a + "TABLE{border-width: 1px;border-style: solid;border-color: black;border-collapse: collapse;}"
$a = $a + "TH{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:thistle}"
$a = $a + "TD{border-width: 1px;padding: 0px;border-style: solid;border-color: black;background-color:PaleGoldenrod}"
$a = $a + "</style>"

$b = Get-Date -Format u    

Get-ChildItem -Recurse K:\AppData\*.* -Filter *.CATPart | Where{$_.LastWriteTime -gt (Get-Date).AddDays(-6)} | sort LastWriteTime -descending | select name,LastWriteTime,Directory | convertto-html -head $a -body "<H2>CATIA PAST 7 DAYS -- $b </H2>" | out-file C:\aaa\catia_result.htm

我可以手动运行此脚本,完全没有问题。但是当我安排它运行时,它只给我格式化的htm文件,其中没有任何过滤数据。这是我在任务调度程序中使用的参数:

powershell.exe -ExecutionPolicy Bypass -Command "C:\aaa\RLTP_HTML_FINAL.ps1"

我尝试将executionpolicy更改为Unrestricted,但它仍无效。任务历史记录显示任务已完成,但HTML文件中没有数据。

我还尝试使用批处理文件调用powershell来运行脚本,这与它只适用于手动操作但任务调度程序的结果相同。

1 个答案:

答案 0 :(得分:0)

最有可能的是,当您安排脚本执行时,它可能没有映射到K:\驱动器。确保:

  1. 使用Get-PSDrive cmdlet
  2. 在脚本中映射K驱动器
  3. 计划任务设置为使用的凭据可以访问K:\驱动器
  4. 或者,您只需指定一个UNC路径,而不是引用K:\驱动器。

    PS。干得好-ExecutionPolicy Bypass。这有助于避免执行策略的任何问题! :)只要您使用该参数,执行策略的设置无关紧要。

    如果您想捕获脚本中的任何错误,请将其设为最后一行:

    Add-Content -Path $PSScriptRoot\error.log -Value $error;
    

    您可能会看到K:\驱动器丢失的信息。