小编Dan*_*nak的帖子

作为计划任务运行时,在 PowerShell 中使用 Excel.Application COM 对象时无法保存 Excel 工作簿

我遇到了一个问题,我已经自动创建了 Excel.Application COM 对象,将一些数据添加到工作簿中,然后将文档另存为 xlsx。

这在以下情况下工作正常:

  • 我已经在 Powershell 交互式主机中,要么按顺序运行每个命令,要么作为 ps1 执行。
  • 我从 cmd.exe 运行它,使用语法:powershell.exe -command "c:\path\to\powershellscript.ps1"
  • 我在 Windows 7 / Server 2008 R2 中创建计划任务,使用上面的 powershell.exe -command 语法,并使用“仅在用户登录时运行”模式。

当我修改相同的计划任务时,它会失败,但将其设置为“无论用户是否登录都运行”。

这是一个示例脚本,说明了我遇到的问题:

$Excel = New-Object -Com Excel.Application
$Excelworkbook = $Excel.Workbooks.Add()
$excelworkbook.saveas("C:\temp\test.xlsx")
$excelworkbook.close()
Run Code Online (Sandbox Code Playgroud)

我有一个理论,如果我的配置文件没有加载/如果它没有在命令窗口中执行,COM 对象会以某种方式失败。

关于在创建计划任务时选择哪些选项,或者在创建 Excel 对象或使用 SaveAs() 函数时使用哪些选项的任何想法?有人可以复制这个吗?我已经能够在 Server 2008 R2 机器和 Windows 7 上看到这种行为。还没有尝试过其他平台。

powershell windows-server-2008 scheduled-task microsoft-excel

3
推荐指数
1
解决办法
2万
查看次数