banzai123
Goto Top

Powershell-Skript funktioniert nur in Debug-Modus

Hallo zusammen,

ich hab ein Powershell-Skript, das in eine Excel-Tabelle ein paar leere Spalten einfügen soll. Als ich es vor ein paar Tagen geschrieben hab, hat es einwandfrei funktioniert. Gestern hab ich es in ein anderes Powershell-Skript eingebettet und seitdem funktioniert es nicht mehr. Wenn ich das "neue Gesamt-Skript" normal laufen lasse, dann wird die Excel-Datei zwar geöffnet, aber das Spalteneinfügen komplett ignoriert. Starte ich das Skript nun im Debug-Modus und klicke mich schrittweise durch, werden die Spalten ohne Probleme eingefügt.
Da war dann mein erster Gedanke, dass sich irgendwas verschluckt und ich hab ein paar "Stoppsekunden" nach jedem Excel-Befehl eingebaut. Leider ohne Wirkung. Dann dachte ich, es liegt vielleicht an vs code, aber auch in ISE funktioniert das Skript nicht, und nun weiß ich mir keinen Rat mehr.

Hat von euch vielleicht jemand eine Idee, woran das liegen könnte?

Danke vorab und ein schönes Wochenende!
banzai123

Content-Key: 667163

Url: https://administrator.de/contentid/667163

Ausgedruckt am: 28.03.2024 um 17:03 Uhr

Mitglied: banzai123
banzai123 29.05.2021 um 07:19:35 Uhr
Goto Top
Nun hab ich zwar die Stelle gefunden, an der es hakt, aber das Problem bleibt.
Der Code-Teil ist:
$max = [int]$si * 2
for($i=2; $i -le $max; $i++) {
    $tabelle.cells(1, $i).entireColumn.insert(-4161)
    $i += 1
}
Das Seltsame daran: wenn ich im Kopf der for-Schleife $max durch bspw. 10 ersetze, dann läuft das Skript durch, mit $max nicht. Wenn ich das Skript aber nun schrittweise im Debug-Modus laufen lasse, dann geht das auch mit $max.

Jemand eine Idee?
Mitglied: banzai123
banzai123 29.05.2021 um 09:28:47 Uhr
Goto Top
So, mittlerweile konnte ich den Fehler "beheben", verstehe aber trotzdem nicht, warum das ganze nicht funktioniert hat.

Hintergrund: Die Variable $si bekommt ihren Wert aus einer Funktion und hat auch den richtigen Wert an o.g. Stelle - kann man im Debugger ja bestens erkennen. Allerdings wird während der Ausführung der Funktion eine Fehlermeldung geworfen, die ich aber ignoriert hatte, da $si ja den erwarteten Wert zurückbekommen hat. So, nun hab ich den Fehler in der Funktion behoben, $si bekommt aber immer noch denselben Wert zurück, wird jetzt aber richtig weiter verwendet.
Ich muss nicht alles verstehen.. :-S

Schönes Wochenende!