我有一个像下面这样的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来运行脚本,这与它只适用于手动操作但任务调度程序的结果相同。
答案 0 :(得分:0)
最有可能的是,当您安排脚本执行时,它可能没有映射到K:\
驱动器。确保:
Get-PSDrive
cmdlet K:\
驱动器 或者,您只需指定一个UNC路径,而不是引用K:\
驱动器。
PS。干得好-ExecutionPolicy Bypass
。这有助于避免执行策略的任何问题! :)只要您使用该参数,执行策略的设置无关紧要。
如果您想捕获脚本中的任何错误,请将其设为最后一行:
Add-Content -Path $PSScriptRoot\error.log -Value $error;
您可能会看到K:\
驱动器丢失的信息。