Ich versuche, ein PowerShell-Skript über das Jenkins-Plugin zu starten, das Word-Dokumente in Text konvertiert, aber Null-Typ-Fehler bekommen. Der Slave ist eine Win 2008-Box, Jenkins läuft als Dienst darauf und der Dienst läuft als Administrator. Ich habe versucht:Jenkins PowerShell Plugin - Returning Null
- Überprüfen, dass die Befehle auf der Remote-Box funktionieren, indem Sie sie lokal ausführen.
- Ausführen des PowerShell-Skripts mit Windows-Batch (gleicher Fehler).
- Ausführen der Befehle über Jenkins-Plugin.
Script ($Doc
auf Null gesetzt wird):
$Files = Get-ChildItem 'PTX*.docx'
$Files
$Word = New-Object -ComObject Word.Application
$Word
foreach ($File in $Files) {
# open document in Word
$File.FullName
$Doc = $Word.Documents.Open($File.FullName)
$Doc
Start-Sleep -s 10
# swap out RTF for TXT in the filename
#$Name = ($Doc.FullName).Replace("docx", "txt")
#$Doc.SaveAs([ref] $Name, [ref] 2)
$Doc.Close()
}
bestätigt, dass a) eine Datei war und b), die ich habe ein Word-Objekt. Auch das funktioniert auf der Remote-Box.
$Word
:
Application : Microsoft.Office.Interop.Word.ApplicationClass Creator : 1297307460 Parent : Microsoft.Office.Interop.Word.ApplicationClass Name : Microsoft Word Documents : System.__ComObject Windows : System.__ComObject ActiveDocument : . . .
Der Fehler tritt in der Nähe, weil $Doc
wurde nie eingestellt. Als ich versuchte, die $Doc
während der Ausführung zu drucken, wurde nichts angezeigt.
C:\jenkins\workspace\eggplant-Test\DVA.docx You cannot call a method on a null-valued expression. At C:\Users\PENDAN~1.MDZ\AppData\Local\Temp\hudson1097244472905940013.ps1:19 char:12 + $Doc.Close <<<<() + CategoryInfo : InvalidOperation: (close:String) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
Aktualisiert:
Changed Skript wie von Andreas M .: vorgeschlagen
Foreach ($File in $Files) {
# open document in Word
echo File: $File.fullname
$Error.Clear() # Clear all other errors
$Doc = $Word.Documents.Open($File.FullName)
echo "Error count:" $Error.Count # Dump number of errors
$Error # Dump errors
echo "Doc:" $Doc
gleichen Fehler, aber merkwürdigerweise keine Fehler vom Word.Doc.Open Anruf gemeldet.
File:
C:\jenkins\workspace\eggplant-Test\DVA.docx
Error count:
0
Doc:
You cannot call a method on a null-valued expression.
At C:\Users\PENDAN~1.MDZ\AppData\Local\Temp\hudson3349169014447704754.ps1:23 ch
ar:12
+ $Doc.close <<<<()
+ CategoryInfo : InvalidOperation: (close:String) [], RuntimeExce
ption
+ FullyQualifiedErrorId : InvokeMethodOnNull
Aktualisierte erste Frage mit Fehlerausgabe. Ich habe mich mit dem gleichen Benutzernamen und Passwort wie Jenkins in die Remote-Box eingeloggt und kann das Skript ohne Probleme ausführen. – stackbacker
Vielen Dank für den Link. Ich bin zu 99% zuversichtlich, dass ich niemals alleine in diese Richtung geschaut hätte. Es war zwar nicht das DCOM-Problem, aber es wurde Desktop zum SysWow-Verzeichnis hinzugefügt (das in diesem Link erwähnt wird), das es behoben hat. Nochmals vielen Dank. – stackbacker
Freut mich hier. Bitte. – Moerwald