НАЗНАЧЕНИЯ
Сценарий должен выполнять итерацию по каждому файлу в папке, преобразовывать его в .txt и загружать текст в базу данных Azure
ПРОБЛЕМА
Все работает до тех пор, пока не попадет в защищенный паролем файл, я просто хочу пропустить эти файлы. Я запускаю это на сотнях тысяч документов, и сценарий будет останавливаться, если он попадет в файл, защищенный паролем, пока вы не введете пароль или не нажмете Отмена.
SCRIPT
Write-Output "Processing: $($file)"
Try {
$doc = $word.Documents.OpenNoRepairDialog($file)
}
Catch {
}
if ($doc) {
$fileName = [io.path]::GetFileNameWithoutExtension($file)
$fileName = $filename + ".txt"
$doc.SaveAs("$env:TEMP\$fileName", [ref]$saveFormat)
$doc.Close()
$4ID = $fileName.split('-')[-1].replace(' ', '').replace(".txt", "")
$text = Get-Content -raw "$env:TEMP\$fileName"
$text = $text.replace("'", "")
$query += "
('$text', $4ID),"
Remove-Item -Force "$env:TEMP\$fileName"
}
РЕШЕНИЕ
Для тех, у кого возникла та же проблема, решение было передать непустую строку в открытый вызов, например:
$wd.Documents.Open($file, $false, $falsel, $false, "ttt")
вместо
$wd.Documents.Open($file, $false, $falsel, $false, "")