Como executar um comando do menu de contexto do PowerShell?

1

Estou tentando converter um arquivo em pdf chamando o Shell.Application associado ao Context Menu (como quando você clica com o botão direito em um arquivo).

Eu peguei emprestado e ajustei um código de outro fórum:

$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() } }

Ele foi executado com sucesso exatamente uma vez e nunca mais. Limpei todos os problemas de permissões associados ao GPO e testei isso executando um script muito mais simples ( remove-item "c:\users\MyUserName\downloads\Welcome to NFPA.htm" ) que funcionava perfeitamente. Espero que seja um problema simples de formato / sintaxe. Alguém sabe por que isso pode estar falhando?

Obrigado. Eu também não sei como fazer a maldita coisa ter retornos difíceis ou o que for. Mas, eu gozou a primeira vez, eu esqueci de colocar de volta o meu nome de usuário real.

Obriguei-o a executar no PowerShellISE, ele estava tentando usar o padrão cmd, embora eu tenha dito isso ao PowerShell.

Agora que estou correto, o erro é:

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

O programa usado pelo comando do menu de contexto é o acrobat destilador.

Eu tentei procurar o programa ou comando que ele realmente executa, não era onde deveria estar no registro, na verdade, o teste real que aparece no menu de contexto, 'Convert to Adobe PDF' , não está em nenhum lugar no registro.

Dangph - obrigado! Eu realmente cheguei a mesma solução em casa ontem à noite. Eu estou pronto para ir, obrigado a todos!

    
por adriancombe 26.04.2017 / 22:20

2 respostas

1

Você pode usar a ferramenta de linha de comando como PDFcreator

pdfcreator.exe /PrintFile="C:\test.doc"
    
por 26.04.2017 / 22:57
0

Adicionando algum tratamento de erros ao seu código, isso pode ajudá-lo a encontrar o problema.

$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'
}
    
por 27.04.2017 / 01:18