Excel宏通过powershell运行,但在windows任务计划程序运行时不运行

Excel宏通过powershell运行,但在windows任务计划程序运行时不运行,excel,vba,powershell,windows-server-2012,Excel,Vba,Powershell,Windows Server 2012,我有一个脚本,用于检查文件夹中的excel文件,如果此“阈值”大于0,则会运行另一个excel文件中的宏,该宏与这些excel文件夹交互 当我通过powershell ISE手动运行该进程时,它工作正常,但当我使用windows任务调度器时,powershell脚本会运行,但调用的excel宏不会运行。为什么会出现这种情况,有什么建议吗?此进程以前在windows 2008服务器上运行,但已迁移到windows server 2012,无法正常运行 if ($count -gt $thres

我有一个脚本,用于检查文件夹中的excel文件,如果此“阈值”大于0,则会运行另一个excel文件中的宏,该宏与这些excel文件夹交互

当我通过powershell ISE手动运行该进程时,它工作正常,但当我使用windows任务调度器时,powershell脚本会运行,但调用的excel宏不会运行。为什么会出现这种情况,有什么建议吗?此进程以前在windows 2008服务器上运行,但已迁移到windows server 2012,无法正常运行

  if ($count -gt $threshold){
    $excel = new-object -comobject excel.application

    $workbook = $excel.workbooks.open("D:\TimesheetService\IS-FS - AutoTimesheetLoader v2.3 - UAT.xlsm")

    $worksheet = $workbook.worksheets.item(1)

    $excel.Run("ImportTime")

    $workbook.close($false)

    $excel.quit()
    [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
    Remove-Variable excel
}

不能从计划任务中使用COM Automation Excel库(
新对象-comobject Excel.application
),除非该任务在当前登录用户的窗口站(会话)中运行

也就是说,为了从计划任务中使用COM Excel库,您必须选择“仅当用户登录时才运行”选项,出于两个原因,您可能不希望该选项:

  • 它限制您的任务仅在有人登录时运行

  • 当前登录的用户将在任务运行时看到该任务的窗口,除非您采取额外步骤将其隐藏(这不能通过
    powershell.exe
    本身完成)

注意:目前有一个有效的解决方法,但它不受支持,这就是为什么最好避免it-请参阅相关的superuser.com问题

因此,考虑没有此限制的替代方案,例如


有关背景信息,请参见。

除非该任务在当前登录用户的窗口站(会话)中运行,否则您无法从计划任务中使用COM Automation Excel库(
新建对象-comobject Excel.application

也就是说,为了从计划任务中使用COM Excel库,您必须选择“仅当用户登录时才运行”选项,出于两个原因,您可能不希望该选项:

  • 它限制您的任务仅在有人登录时运行

  • 当前登录的用户将在任务运行时看到该任务的窗口,除非您采取额外步骤将其隐藏(这不能通过
    powershell.exe
    本身完成)

注意:目前有一个有效的解决方法,但它不受支持,这就是为什么最好避免it-请参阅相关的superuser.com问题

因此,考虑没有此限制的替代方案,例如


有关背景信息,请参阅。

我也在尝试做同样的事情。这让它为我工作

最后两步是我需要的。检查以确保这些文件夹存在

在32位和64位操作系统上:

C:\Windows\System32\config\systemprofile\Desktop

在64位操作系统上:


C:\Windows\SysWOW64\config\systemprofile\Desktop

我也在尝试做同样的事情。这让它为我工作

最后两步是我需要的。检查以确保这些文件夹存在

在32位和64位操作系统上:

C:\Windows\System32\config\systemprofile\Desktop

在64位操作系统上:

C:\Windows\SysWOW64\config\systemprofile\Desktop

请查看。顺便说一句:你为什么要使用
MacOS
-标签?看看。顺便问一下:为什么要使用
MacOS
-标签?