Próbuję przekonwertować plik na pdf, wywołując Shell.Application skojarzony z menu kontekstowym (na przykład po kliknięciu pliku prawym przyciskiem myszy).
Pożyczyłem i poprawiłem kod z innego forum:
$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() } }
Udało się to dokładnie raz, a potem nigdy więcej. Usunąłem wszystkie problemy związane z uprawnieniami związane z GPO i przetestowałem to, uruchamiając znacznie prostszy skrypt ( remove-item "c:\users\MyUserName\downloads\Welcome to NFPA.htm"
), który działał idealnie. Mam nadzieję, że jest to prosty problem z formatem / składnią. Czy ktoś wie, dlaczego to może zawieść?
Dziękuję Ci. Nie wiem też, jak sprawić, by ta cholerna rzecz miała ciężkie zwroty. Ale wygłupiłem się po raz pierwszy, zapomniałem przywrócić swoją rzeczywistą nazwę użytkownika.
Zmusiłem go do uruchomienia w PowerShellISE, próbowałem domyślnie ustawić cmd, mimo że powiedziałem to PowerShell.
Teraz, gdy mam to poprawnie, błąd brzmi:
PDF Convert verb was not found for this file
+ CategoryInfo : NotSpecified: (:) [Write-Error], WriteErrorException
+ FullyQualifiedErrorId : Microsoft.PowerShell.Commands.WriteErrorException
Program używany przez polecenie menu kontekstowego to destylator programu Acrobat.
Próbowałem poszukać programu lub polecenia, które faktycznie działa, nie było tam, gdzie powinno być w rejestrze, w rzeczywistości test, który pojawia się w menu kontekstowym „Konwertuj na Adobe PDF”, jest nigdzie w rejestrze.
Dangph - dzięki! Rzeczywiście doszłam do tego samego rozwiązania w domu ostatniej nocy. Jestem gotowy, dziękuję wszystkim!
$file.Verbs()
, czy jesteś pewien, że czasownik został faktycznie znaleziony i nadal istnieje dla tego typu pliku? Czasowniki takie jak te często wywołują inne polecenia, być może zamiast próbować uzyskać czasownik z powłoki, powinieneś sprawdzić polecenie, które faktycznie wykonuje, i po prostu wywołać to bezpośrednio?