Powershell脚本没有在远程桌面上find文件

我有一个简单的PowerShell脚本,我保存在C:\ Users \ Public包含以下代码:

#run program $excel = new-object -comobject excel.application $excelFiles = Get-ChildItem -Path "C:\Users\Public" -Include *.xls, *xlsm -Recurse Foreach($file in $excelFiles) { $workbook = $excel.workbooks.open("sendEmail.xlsm") $worksheet = $workbook.worksheets.item(1) $excel.Run("CDO_Mail_Small_Text") $workbook.save() $workbook.close() } $excel.quit() 

如您所见,该脚本将打开一个与.ps1文件位于同一文件夹中的excel文件。 Excel文件应该发送一封电子邮件。 这是我创build的一个testing用例,它在我的本地机器上正常工作。

我试图让这个在RDP上运行。 当我从本地机器上将这两个文件复制到RDP(C:\ Users \ Public)上的相同位置并通过powershell运行.ps1文件时,出现以下错误:

 Exception calling "Open" with "1" argument(s): "'sendEmail.xlsm' could not be found. 

由于这完美地在我的电脑上工作,我不知道为什么它无法在远程计算机上工作。 有任何想法吗?

最终,这是我想要做的:

  • 我有一个RDP上的Access数据库
  • 我有一个映射驱动器上的Excel文件

经常性地,我需要自动打开Excel文件,从Access数据库中提取一个表格,然后处理Excel文件中的数据并发送电子邮件。 这是我的业务细节所有非常具体的,所以我欢迎关于替代想法的build议,但“只是做一切在访问”不是一个选项。

我做了一个testing用例,其中所有东西都在映射的驱动器上,并且在这种情况下一切正常,包括将其作为定期执行的任务运行。 我只需要弄清楚如何使它与RDP上的Access数据库一起工作。

谢谢。

打电话时

 $excel.workbooks.open("sendEmail.xlsm") 

你应该确实传递一个完整的path,而不仅仅是文件名。

如果你只是使用文件名,那么你依赖于默认目录的具体值,这通常不是一个好的计划。

请参阅如何获取我执行的PowerShell脚本的目录? 对于如何获得完整path(假设您的Excel文件与您的脚本位于相同的文件夹中)