【发布时间】:2016-08-16 19:44:56
【问题描述】:
我有一个服务器运行状况检查脚本,我正在尝试按计划任务开始工作。
计划任务具有以下“AddArguments”集
Add Arguments: -NoLogo -ExecutionPolicy Bypass -File "C:\HealthCheck.ps1"
完整脚本的服务器运行状况部分中的所有内容都可以正常创建 .csv 报告,除了最后一部分,它执行 CSV 到 excel 转换/保存/关闭 - 我没有包含前面的代码,因为它包含一些机密的东西,我不相信它是相关的。
当我使用相同的 ID,但从 GUI(不是作为计划任务)运行脚本时,它工作正常。
注意:脚本的最后一部分确实会短暂启动 excel 并执行功能,然后保存/关闭它 - 我认为计划任务没有这样做,因为它不受 Microsoft 支持?
我确实找到了以下SpiceWorks post,但在这种情况下,所提到的解决方案并没有为我解决问题。根据您的 Office 版本,您可以在这些路径下创建一个 DESKTOP 文件夹(我在 Windows 7 x64 Pro 上使用 Office 2010 32 位)
C:\windows\system32\config\systemprofile
C:\windows\syswow64\config\systemprofile
无论如何,这是代码 - 任何帮助表示赞赏!
#Convert CSV to EXCEL, format, and save
#Create excel object
$xl = new-object -comobject excel.application
$xl.visible = $true
#Input
$Workbook = $xl.workbooks.open(“$Dir\Reports\SeverHealth-Results- $CurrentDate.csv”)
$worksheet = $workbook.worksheets.Item(1)
$xl.Rows.Item("2:2").Select()
$xl.ActiveWindow.FreezePanes = $true
$HeaderRow = $Worksheet.Range("A1:L1")
$HeaderRow.Font.Bold = $True
$HeaderRow.Font.Underline = $True
$range = $worksheet.UsedRange
$range.AutoFilter() | Out-Null
$range.EntireColumn.AutoFit() | Out-Null
$rowc = $WorkSheet.UsedRange.Rows.Count
$colc = $WorkSheet.UsedRange.Columns.Count
#Coloring
for ($z = 1; $z -le $rowc; $z++) {
$ActionReqCol = $worksheet.cells.item($z,7)
$ServerCol= $worksheet.cells.item($z,1)
if ($ActionReqCol.text -eq "YES") {
$ActionReqCol.interior.colorindex=3
$ACtionReqCol.font.colorindex=2
$ServerCol.interior.colorindex=3
$ServerCol.font.colorindex=2}}
#Save and close!
$EndDate = Get-Date
$EndDate = $EndDate.ToString('MM-dd-yyyy_hhmm')
$Worksheets = $Workbooks.worksheets
$xlFixedFormat = [Microsoft.Office.Interop.Excel.XlFileFormat]::xlWorkbookDefault
$Workbook.SaveAs($Dir + "\Reports\SeverHealth-Results-$EndDate.xls”, $XLFixedFormat)
$Workbook.Saved = $True
$xl.Quit()
【问题讨论】:
-
听起来不像是编码问题。您可以在 CMD 中使用相同的参数运行 powershell.exe 吗?你会有同样的问题吗?如果是,请分享错误,如果不是,请分享您的计划任务配置。
-
这很奇怪,从 CMD 行可以正常工作,只是不能通过计划任务。计划任务也配置为使用相同的帐户运行。计划任务的 Add Arguments 如下: -NoLogo -ExecutionPolicy Bypass -File "C:\HealthCheck.ps1
标签: powershell automation excel-2010 scheduled-tasks windows-7-x64