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文件与您的脚本位于相同的文件夹中)