una tiempo tarea scripts script programar programada programa para ejecutar desde crear como cierto cada excel powershell com scheduled-tasks powershell-v2.0

excel - tiempo - programa para ejecutar script



La secuencia de comandos Powershell no puede acceder a un archivo cuando se ejecuta como una tarea programada (2)

La secuencia de comandos My Powershell (2.0) tiene el siguiente fragmento de código:

$fileName = "c:/reports/1.xlsx" $xl = new-object -comobject excel.application $xlFormat = [Microsoft.Office.Interop.excel.XlFileFormat]::xlWorkbookDefault $xl.displayalerts = $false $workbook = $xl.workbooks.open($fileName) #Code to manipulate a worksheet $workbook.SaveAs($fileName, $xlformat) $xl.quit() $error | out-file c:/reports/error.txt

Puedo ejecutar este script en el símbolo del sistema de Powershell sin problemas. La hoja de cálculo se actualiza y error.txt está vacío. Sin embargo, cuando lo ejecuto como una tarea en el Programador de tareas, obtengo errores con la primera línea.

Llamada de excepción "Abrir" con "1" argumento (s): "Microsoft Office Excel no puede acceder al archivo ''C: / reports / 1.xlsx''. Hay varios motivos posibles: El nombre o la ruta del archivo no existe. está siendo utilizado por otro programa. El libro de trabajo que está tratando de guardar tiene el mismo nombre que un libro abierto actualmente.

Ejecuto la tarea con las mismas credenciales que uso para ejecutar la secuencia de comandos en el símbolo del sistema de Powershell. Cuando ejecuto el script manualmente, puede abrir, actualizar y guardar la hoja de cálculo sin problemas. Cuando lo ejecuto en el Programador de tareas, no puede acceder a la hoja de cálculo.

El archivo en cuestión es legible / grabable para todos los usuarios. He verificado que puedo abrir el archivo en Excel con las mismas credenciales. Si hago una nueva hoja de cálculo y pongo su nombre como $ nombre de archivo, obtengo los mismos resultados. Comprobé que no hay instancias de Excel.exe en el Administrador de tareas.

Curiosamente, si uso get-content, no tengo ningún problema. Además, si hago una nueva hoja de cálculo, no tengo ningún problema.

$fileName = "c:/reports/1.xlsx" $xl = get-content $spreadsheet $xl = new-object -comobject excel.application $xlFormat = [Microsoft.Office.Interop.excel.XlFileFormat]::xlWorkbookDefault $xl.displayalerts = $false # Commented out $workbook = $xl.workbooks.open($fileName) $workbook = $xl.workbooks.add() #Code to manipulate a worksheet $workbook.SaveAs($fileName, $xlformat) $xl.quit() $error | out-file c:/reports/error.txt

Eso funciona bien Entonces Get-ChildItem puede abrir el archivo sin problemas. ComObject puede abrir el archivo si lo ejecuto manualmente, pero no si se ejecuta como tarea.

Estoy perdido ¿Algunas ideas?


Creo que has encontrado un error en Excel:

Tienes que crear una carpeta (o dos en una ventana de 64 bits):

(32 bits, siempre)

C: / Windows / System32 / config / systemprofile / Desktop

(64 bits)

C: / Windows / SysWOW64 / config / systemprofile / Desktop

He tenido el mismo problema y esta fue la única solución que he encontrado.

De los foros de TechNet (a través de PowerShell y el problema de Excel al automatizar )