2017-02-15 1 views
1

ich einen einfachen Powershell-Skript, das ich bei C gespeichert habe: \ Benutzer Public \, die den folgenden Code enthält:Powershell-Skript nicht Datei auf Remote Desktop findet

#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() 

Wie Sie sehen können, wird das Skript öffnet eine Excel-Datei, die sich im selben Ordner wie die .ps1-Datei befindet. Die Excel-Datei soll eine E-Mail senden. Dies ist ein Testfall, den ich erstellt habe und der auf meinem lokalen Rechner funktioniert.

Ich versuche, dies auf einem RDP laufen zu lassen. Als ich die beiden Dateien von meinem lokalen Rechner an der gleichen Stelle auf dem RDP kopieren (C: \ Benutzer \ Öffentlich) und die PS1-Datei durch Powershell es laufen lasse, erhalte ich folgende Fehlermeldung:

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

Da diese funktioniert perfekt auf meinem Computer Ich habe keine Ahnung, warum es auf dem Remote-Computer nicht funktioniert. Irgendwelche Ideen?

Letztlich ist hier, was ich versuche zu tun: auf einer RDP eine Access-Datenbank

  • Ich habe
  • Ich habe eine Excel-

auf wiederkehrendes auf einem zugeordneten Laufwerk-Datei Ich muss die Excel-Datei automatisch öffnen, eine Tabelle aus der Access-Datenbank abrufen und die Daten in der Excel-Datei bearbeiten und eine E-Mail senden. Dies ist alles sehr spezifisch für die Besonderheiten meines Geschäfts, daher begrüße ich Vorschläge zu alternativen Ideen, aber "mach einfach alles in Access" ist keine Option.

Ich machte einen Testfall, wo alles auf dem zugeordneten Laufwerk war und alles funktioniert in diesem Fall, einschließlich der Ausführung als wiederkehrende geplante Aufgabe. Ich muss nur herausfinden, wie es funktioniert, wenn die Access-Datenbank auf einem RDP läuft.

Danke.

Antwort

2

Wenn

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

rufen Sie wirklich in einem vollständigen Pfad, nicht nur die Dateinamen übergeben sollen.

Wenn Sie nur den Dateinamen verwenden, dann verlassen Sie sich auf einen bestimmten Wert für das Standardverzeichnis, und das ist normalerweise kein guter Plan.

Siehe How do I get the directory of the PowerShell script I execute?, wie Sie, dass die vollständigen Pfad bekommen könnten (vorausgesetzt, Ihre Excel-Datei in dem gleichen Ordner wie das Skript ist)

+0

Dank. Gibt diese Zeile nicht den Pfad an? $ excelFiles = Get-ChildItem -Pfad "C: \ Users \ Public" -Include * .xls, * xlsm -Recurse. Von dieser Zeile an handelt es sich nicht um eine Sammlung von Excel-Dateien, die sich unter C: \ Users \ Public befinden? – tjnel

+0

Das sagt Excel nicht, wo Sie Ihre Makrodatei finden –

Verwandte Themen