Powershell-Skript kann nicht auf eine Datei zugreifen, wenn sie als geplante Aufgabe ausgeführt wird

8

Mein Powershell (2.0) -Skript hat das folgende Code-Snippet:

%Vor%

Ich kann dieses Skript ohne Probleme in der Powershell-Eingabeaufforderung ausführen. Die Tabelle wird aktualisiert und error.txt ist leer. Wenn ich es jedoch als Task im Taskplaner ausführe, erhalte ich Fehler mit der ersten Zeile.

  

Ausnahme beim Aufrufen von "Öffnen" mit "1" Argument (en): "Microsoft Office Excel kann nicht auf die Datei 'C: \ reports \ 1.xlsx' zugreifen. Es gibt mehrere mögliche Gründe:   Der Dateiname oder Pfad existiert nicht.   Die Datei wird von einem anderen Programm verwendet.   Die Arbeitsmappe, die Sie speichern möchten, hat denselben Namen wie eine aktuell geöffnete Arbeitsmappe.

Ich führe die Aufgabe mit den gleichen Anmeldeinformationen aus, mit denen ich das Skript in der Powershell-Eingabeaufforderung ausgeführt habe. Wenn ich das Skript manuell ausführe, kann es die Tabelle ohne Probleme öffnen, aktualisieren und speichern. Wenn ich es im Taskplaner ausführe, kann es nicht auf die Tabelle zugreifen.

Die fragliche Datei ist lesbar / schreibbar für alle Benutzer. Ich habe überprüft, dass ich die Datei in Excel mit den gleichen Anmeldeinformationen öffnen kann. Wenn ich eine neue Tabelle anlege und ihren Namen als $ filename eintrage, bekomme ich dieselben Ergebnisse. Ich habe überprüft, dass im Task-Manager keine Instanzen von Excel.exe vorhanden sind.

Seltsam, wenn ich get-content verwende, habe ich keine Probleme. Auch wenn ich eine neue Tabelle anlege, habe ich kein Problem.

%Vor%

Das funktioniert gut. So kann Get-ChildItem die Datei ohne Probleme öffnen. ComObject kann die Datei öffnen, wenn ich sie manuell ausführe, aber nicht, wenn sie als Task ausgeführt wird.

Ich bin ratlos. Irgendwelche Ideen?

    
Bagheera 26.03.2014, 18:46
quelle

2 Antworten

15

Ich glaube, Sie haben einen Fehler in Excel gefunden:

  

Sie müssen einen Ordner erstellen (oder zwei in einem 64bit-Fenster):

     

(32Bit, immer)

     

C: \ Windows \ System32 \ config \ Systemprofil \ Desktop

     

(64Bit)

     

C: \ Windows \ SysWOW64 \ Konfiguration \ Systemprofil \ Desktop

     

Ich hatte das gleiche Problem und das war die einzige Lösung, die ich habe   gefunden.

Von TechNet-Foren (über PowerShell und Excel Problem beim Automatisieren )

    
TessellatingHeckler 26.03.2014, 20:05
quelle
1

Die obigen Lösungen haben in meiner SCSM 2012 Scorch-Umgebung nicht funktioniert, stattdessen habe ich PSExcel ( Ссылка ) verwendet, das keine Abhängigkeit hat nachdem Excel installiert wurde oder das ComObject.

    
lovedatsnow 31.05.2016 21:58
quelle