1

Я пытаюсь преобразовать файл в PDF, вызвав Shell.Приложение, связанное с контекстным меню (например, когда вы щелкаете правой кнопкой мыши по файлу).

Я позаимствовал и настроил некоторый код с другого форума:

$o = new-object -com Shell.Application
$folder = $o.NameSpace("C:\Users\MyUserName\Downloads")
$file=$folder.ParseName("973.xfdl")
$file.Verbs() | %{ if($_.Name -eq 'Convert to Adobe PDF') { $_.DoIt() } }

Он успешно прошел ровно один раз, потом больше никогда. Я удалил все проблемы с разрешениями, связанные с объектом групповой политики, и проверил это, запустив гораздо более простой скрипт (remove-item "c:\users\MyUserName\downloads\Welcome to NFPA.htm"), который работал отлично. Я надеюсь, что это простая проблема формата / синтаксиса. Кто-нибудь знает, почему это может не сработать?

Спасибо. Я также не знаю, как заставить чертову вещь иметь твердую отдачу или что-то еще. Но я первый раз обманываю, забыл вернуть свое действительное имя пользователя.

Я заставил его работать в PowerShellISE, он пытался установить значение по умолчанию для cmd, хотя я сказал PowerShell.

Теперь, когда я все сделал правильно, ошибка гласит:

PDF Convert verb was not found for this file
    + CategoryInfo          : NotSpecified: (:) [Write-Error], WriteErrorException
    + FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException

Программа, используемая командой контекстного меню, - это acrobat дистиллятор.

Я пытался найти программу или команду, которая на самом деле выполняется, но не в том месте, где она должна была находиться в реестре. Фактически, сам тест, который отображается в контекстном меню «Преобразовать в Adobe PDF», нигде не существует. в реестре.

Дангф - спасибо! Я фактически достиг того же решения дома прошлой ночью. Мне хорошо идти, спасибо всем!

2 ответа2

1

Вы можете использовать инструмент командной строки, как PDFcreator

pdfcreator.exe /PrintFile="C:\test.doc"
0

Добавление некоторой обработки ошибок в ваш код, это может помочь вам найти проблему.

$o = new-object -com Shell.Application
$folder = $o.NameSpace("C:\Users\MyUserName\Downloads")
$file=$folder.ParseName("973.xfdl")
[array]$PdfConvertVerb = $file.Verbs() | Where-Object { $_.Name -eq 'Convert to Adobe PDF' }
If ($PdfConvertVerb -eq 1) {
    $PdfConvertVerb[0].DoIt()
} Else {
    Write-Error 'PDF Convert verb was not found for this file'
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .