繁体   English   中英

计划的Powershell脚本不会运行

[英]Scheduled Powershell Script wont run

我有一个如下所示的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来运行脚本,这与仅使用手动操作但使用任务计划程序的结果相同。

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

  1. 使用Get-PSDrive cmdlet在脚本中映射K驱动器
  2. 您的计划任务将要使用的凭据可以访问K:\\驱动器

或者 ,您可以仅指定UNC路径,而不用引用K:\\驱动器。

ps。 使用-ExecutionPolicy Bypass很好。 这有助于避免执行策略出现任何问题! :)只要您使用该参数,执行策略设置为什么都没有关系。

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

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

您可能会看到有关K:\\驱动器的某些信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM