0

在旧机器(Windows 2008)上,我有:

PS P:\> $psversiontable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.3623
BuildVersion                   6.0.6002.18111
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

使用以下脚本:

$document = "C:\\Temp\\test.docx"
$word = new-object -comobject word.application
$word.Visible = $false
$doc = $word.Documents.Open($document)
$extensionSize = 3;
if ($document.EndsWith("docx")) {
    $extensionSize = 4;
}
$dest = $document.Substring(0, $document.Length - $extensionSize) + "pdf"
$saveAsPath = [ref] $dest
$formatPDF = [ref] 17
$doc.SaveAs($saveAsPath, $formatPDF)
$doc.Close([ref]$false)
$word.quit()

在新机器上(Windows 2008 R2):

PS H:\> $psversiontable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.5466
BuildVersion                   6.1.7601.17514
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

我不得不将脚本更改为:

$document = "c:\\Temp\\test.docx"
$word = new-object -comobject word.application
$doc = $word.Documents.Open($document)
$extensionSize = 3;
if ($document.EndsWith("docx")) {
    $extensionSize = 4;
}
$dest = $document.Substring(0, $document.Length - $extensionSize) + "pdf"
Add-Type -AssemblyName "Microsoft.Office.Interop.Word"
$formats = "Microsoft.Office.Interop.Word.WdSaveFormat" -as [type]
$doc.SaveAs($dest, $formats::wdFormatPDF)
$doc.Close($false)
$word.quit()

谁能解释为什么脚本需要更改?

4

0 回答 0