Word.Application冻结/挂起某些文件

时间:2017-11-02 16:47:17

标签: powershell ms-word

我正在尝试批量创建.docx文档中的PDF文档。由于没有押韵或原因(文件权限相同,文件没有宏等),文件将挂起。我必须杀死Word进程并强行关闭PowerShell。

脚本在这里:

[CmdletBinding()]

Param(
    [Parameter(Mandatory=$true)]
    [string]$FilePath
)

$Files = Get-ChildItem -Recurse "$FilePath\*.docx"

$Word = New-Object -ComObject Word.Application

foreach ($File in $Files) {
    # open a Word document, filename from the directory
    $Doc = $Word.Documents.Open($File.FullName)
    Write-Verbose "Test $($File.FullName)"
    # Swap out DOCX with PDF in the Filename
    $Name = ($Doc.FullName).Replace("docx","pdf")

    # Save this File as a PDF in Word 2010/2013
    $Doc.SaveAs([ref] [string]$Name, [ref] 17)
    $Doc.Close()
}

这是PowerShell输出。您可以看到它挂起的文件:

Powershell Output

这可能是2-3%的文件。这与发布here的此问题非常相似。但是,他们的解决方案无法解决我的问题。

有没有人有任何建议?我还想知道是否有一种直观的方法来调试它。我无法看到程序丢失任何错误。

1 个答案:

答案 0 :(得分:0)

如何关闭整个应用程序(是的,速度较慢),而不是每个文档?像这样:

Foreach ($File in $Files) {

    $Word = New-Object -ComObject Word.Application 

    $Name = $File.FullName -replace ‘docx’,’pdf’

    ($Word.Documents.Open($File.FullName)).SaveAs([ref]$Name,[ref]17)

    $Word.Application.ActiveDocument.Close()

    $Word.Quit()
}