У меня есть скрипт проверки работоспособности сервера, который я пытаюсь выполнить по запланированной задаче.Запланированное задание PowerShell не конвертировать CSV в EXCEL
Запланированная задача имеет следующий набор для «AddArguments»
Add Arguments: -NoLogo -ExecutionPolicy Bypass -File "C:\HealthCheck.ps1"
Все в части здоровья сервера полного сценария прекрасно работает, чтобы создать отчет в формате CSV, за исключением последней части, который делает CSV для excel conversion/save/close - я не включил предыдущий код, так как он содержит некоторые конфиденциальные данные, и я не думаю, что это релевантно.
Когда я запускаю скрипт с тем же идентификатором, но из GUI (а не как запланированная задача), он отлично работает.
Примечание. Последняя часть скрипта определенно запускает excel в кратчайшие сроки и выполняет функции и сохраняет/закрывает его - я думаю, что запланированная задача не делает этого, потому что она не поддерживается Microsoft?
Я нашел следующее SpiceWorks post, но указанное решение не разрешило проблему для меня в этом случае. Вот где вы создаете папку РАБОЧЕЙ под этими путями в зависимости от версии офиса (я использую Office 2010 32-бит на Windows 7 x64 Pro)
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()
Не звучит как проблема с кодированием. Можете ли вы запустить powershell.exe с теми же аргументами в CMD? у вас была бы такая же проблема? Если да, пожалуйста, поделитесь этой ошибкой, если нет, поделитесь своей запланированной конфигурацией задач. –
Странно, отлично работает на линии CMD, а не через запланированную задачу. Запланированная задача настроена так же, как и с той же учетной записью. Параметр Add Arguments для запланированной задачи выглядит следующим образом: -NoLogo -ExecutionPolicy Bypass -File "C: \ HealthCheck.ps1 – Kenny