В моем проекте у меня есть следующий код, который находит и заменяет номер версии и дату в документе Word, но по какой-то причине он не работает. Могу я получить от вас помощь, чтобы понять, почему он не работает? Это файл ps1, который я использую в Jenkins + MSBuild. Спасибо
<#
Uses Microsoft Word automation to substitute Version and ReleaseDate values, and yield a PDF.
#>
function UpdateDocumentation {
param (
[string] $Path,
[string] $Version,
[string] $ReleaseDate
)
$path = Resolve-Path -Path $Path;
$word = New-Object -ComObject Word.Application;
$doc = $word.Documents.Open($path);
$selection = $word.Selection
$Forward = $MatchWholeWord = $true;
$Format = $MatchAllWordForms = $MatchCase = $MatchSoundsLike = $MatchWildcards = $Wrap = $false;
$FindText = "%Version%";
$ReplaceWith = [System.Version]::Parse($Version).ToString(3);
$selection.Find.Execute($FindText, $MatchCase, $MatchWholeWord, $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward, $Wrap, $Format,
$ReplaceWith, [Microsoft.Office.Interop.Word.WdReplace]::wdReplaceAll);
$FindText = "%ReleaseDate%";
$ReplaceWith = [DateTime]::Today.ToString("MMMM yyyy");
$selection.Find.Execute($FindText, $MatchCase, $MatchWholeWord, $MatchWildcards, $MatchSoundsLike, $MatchAllWordForms, $Forward, $Wrap, $Format,
$ReplaceWith, [Microsoft.Office.Interop.Word.WdReplace]::wdReplaceAll);
$pdf = [System.IO.Path]::ChangeExtension($(Resolve-Path $Path), '.pdf');
$doc.SaveAs($pdf, [Microsoft.Office.Interop.Word.WdSaveFormat]::wdFormatPDF);
$doc.Close([Microsoft.Office.Interop.Word.WdSaveOptions]::wdDoNotSaveChanges);
$word.Quit();
}
и призыв к нему:
UpdateDocumentation -Path '.\assureid-documentation\assureid-word-pdf-docs\assureid-sentinel\AssureID Sentinel Deployment Guide.docx' `
-Version $Version -ReleaseDate [DateTime]::Today
Документ содержит этот текст: Version% VERSION%% RELEASEDATE%