[英]PowerShell doesn't run as scheduled task when “Run whether user is logged on or not” is set
我有一个想要安排的 PowerShell 脚本。 尽管它似乎在 Task Scheduler 中运行,但实际上并没有运行我的脚本。 我发现这是因为我已将任务设置为“无论用户是否登录都运行”。 如果我关闭它,任务将运行脚本。
上周我发现一篇文章表明这是因为我使用了基于用户的变量,但没有建议我如何解决它。
任何人都可以帮助我下面的脚本吗?
#UPDATE DATA IN EXCEL FILES
#THEN CREATE PDF FILE
[string]$path = "\\server\folder\" #Path to Excel spreadsheets to save to PDF
[string]$savepath = "\\server\folder\Reports\"
[string]$dToday = Get-Date -Format "yyyyMMdd"
$xlFixedFormat = "Microsoft.Office.Interop.Excel.xlFixedFormatType" -as [type]
$excelFiles = Get-ChildItem -Path $path -include *.xls, *.xlsx -recurse
# Create the Excel application object
$objExcel = New-Object -ComObject excel.application
$objExcel.visible = $false #Do not open individual windows
foreach($wb in $excelFiles)
{
# Path to new PDF with date
$filepath = Join-Path -Path $savepath -ChildPath ($wb.BaseName + "_" + $dtoday + ".pdf")
# Open workbook - 3 refreshes links
$workbook = $objExcel.workbooks.open($wb.fullname, 3)
$workbook.RefreshAll()
# Give delay to save
Start-Sleep -s 5
# Save Workbook
$workbook.Saved = $true
"saving $filepath"
#Export as PDF
$workbook.ExportAsFixedFormat($xlFixedFormat::xlTypePDF, $filepath)
$objExcel.Workbooks.close()
}
$objExcel.Quit()
过去,我在通过Scheduled Task
使用Microsoft.Office.Interop.Excel
时也遇到了一些问题。 所以我们切换到使用以下模块:
该模块使用EPPLUS DLL ,它可以在计划任务中轻松使用,因为不需要安装Microsoft Excel
版本,无论如何,这在任何情况下都不是服务器上的理想解决方案。
所以我建议你看看这个,因为它肯定会对你有所帮助。
如果您仍希望使用Microsoft.Office.Interop.Excel
对象,则需要阅读本文,以便您知道需要手动创建以下 2 个文件夹:
C:\Windows\System32\config\systemprofile\Desktop
C:\Windows\SysWOW64\config\systemprofile\Desktop
当这些文件夹在您的系统上可用时, Scheduled Task
很可能会正确运行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.