【问题标题】:Powershell Script not finding File on Remote DesktopPowershell脚本在远程桌面上找不到文件
【发布时间】:2020-07-07 00:06:54
【问题描述】:

我有一个简单的 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文件应该发送一封电子邮件。这是我创建的一个测试用例,它在我的本地机器上运行良好。

我正试图让它在 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 文件中的数据并发送电子邮件。这一切都非常具体到我的业务细节,所以我欢迎关于替代想法的建议,但“只在 Access 中做所有事情”不是一个选项。

我做了一个测试用例,所有东西都在映射的驱动器上,在这种情况下一切正常,包括让它作为重复的计划任务运行。我只需要弄清楚如何让它与 RDP 上的 Access 数据库一起工作。

谢谢。

【问题讨论】:

    标签: excel powershell ms-access


    【解决方案1】:

    调用时

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

    您应该真正传递完整路径,而不仅仅是文件名。

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

    请参阅How do I get the directory of the PowerShell script I execute?,了解如何获取完整路径(假设您的 Excel 文件与脚本位于同一文件夹中)

    【讨论】:

    • 谢谢。这条线不是指定路径吗? $excelFiles = Get-ChildItem -Path "C:\Users\Public" - 包括 *.xls, *xlsm -Recurse。从这一行开始,我们不是在处理位于 C:\Users\Public 的 excel 文件集合吗?
    • 这并没有告诉 Excel 在哪里可以找到你的宏文件
    猜你喜欢
    • 2018-08-16
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多