1
我試圖通過Jenkins插件運行PowerShell腳本,該插件將Word文檔轉換爲文本,但獲取空類型錯誤。奴隸是一個Win 2008盒子,Jenkins作爲服務運行,服務以管理員身份運行。我試過了:Jenkins PowerShell插件 - 返回空
- 通過本地運行驗證命令是否在遠程盒子上工作。
- 使用Windows批處理(相同錯誤)運行PowerShell腳本。
- 通過Jenkins插件運行命令。
腳本($Doc
被設置爲NULL):
$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()
}
確認了)有一個文件和b),我得到了一個Word對象。再一次,所有這些在遠程盒子上都能正常工作。
$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 : . . .
錯誤發生在靠近因爲$Doc
從來沒有得到設定。當我在執行過程中試圖打印$Doc
時,沒有顯示任何內容。
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
更新時間:由Andreas中號
更改腳本的建議:
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
同樣的錯誤,但奇怪的是,無論從Word.Doc.Open調用報告的錯誤。
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
已更新的初始問題與錯誤輸出。我使用Jenkins使用的相同用戶名/密碼登錄到遠程盒子,並且能夠毫無問題地運行腳本。 – stackbacker
非常感謝您的鏈接。我感到99%有信心,我永遠不會在自己的方向看這個方向。雖然它不是DCOM問題,但是它將Desktop添加到修復它的SysWow目錄(在該鏈接中提到)。再次謝謝你。 – stackbacker
很高興在這裏。別客氣。 – Moerwald