Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa

Darmowa diagnoza laptopa

Dojazd do klienta bezpłatnie

Dojazd do klienta bezpłatnie

Laptopy zastępcze bezpłatnie

Laptopy zastępcze bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Odbiór i zwrot sprzętu bezpłatnie

Invoke-Item – otwarcie pliku/aplikacji

Termin Definicja
Invoke-Item – otwarcie pliku/aplikacji

Invoke-Item to polecenie PowerShell otwierające plik lub folder domyślną skojarzoną aplikacją — odpowiednik dwukrotnego kliknięcia w Eksploratorze.

Czym jest Invoke-Item i do czego służy

Invoke-Item to polecenie środowiska PowerShell przeznaczone do uruchamiania elementu wskazanego w systemie plików. Może otworzyć dokument, obraz, archiwum, skrót, folder albo plik wykonywalny, korzystając z działania przypisanego do danego typu obiektu w systemie Windows. W praktyce oznacza to wywołanie podobnego mechanizmu jak otwarcie elementu z poziomu Eksploratora plików, lecz z użyciem polecenia wpisanego w konsoli lub umieszczonego w skrypcie.

Najprostsza postać polecenia wygląda następująco:

Invoke-Item "C:\Dokumenty\instrukcja.pdf"

Jeżeli dla rozszerzenia .pdf ustawiono domyślną aplikację, PowerShell przekaże plik właśnie do tego programu. Analogicznie można otworzyć katalog:

Invoke-Item "C:\Użytkownicy\Publiczne\Dokumenty"

W ścieżkach zawierających spacje należy stosować cudzysłowy. Polecenie przyjmuje także ścieżki względne, na przykład .\raport.xlsx, oraz ścieżki zapisane w zmiennych:

$plik = "C:\Raporty\zestawienie.xlsx"
Invoke-Item $plik

Wbudowanym aliasem jest ii, dlatego ten sam efekt można uzyskać przez:

ii "C:\Raporty\zestawienie.xlsx"

Alias jest wygodny podczas pracy interaktywnej, natomiast w skryptach często korzysta się z pełnej nazwy Invoke-Item, ponieważ dokładniej opisuje intencję kodu i ułatwia jego późniejsze odczytanie.

Kontekst techniczny i porównanie z innymi poleceniami - Invoke-Item – otwarcie pliku/aplikacji

Invoke-Item nie interpretuje zawartości dokumentu ani nie wykonuje operacji edycyjnych na pliku. Jego zadaniem jest przekazanie wskazanego elementu do mechanizmu powłoki systemu Windows, który sprawdza skojarzenie danego rozszerzenia lub rodzaj obiektu. Jeżeli plik tekstowy jest przypisany do Notatnika, zostanie otwarty w Notatniku. Jeżeli dokument biurowy ma skojarzenie z odpowiednim edytorem, zostanie przekazany do tego programu.

Różni się to od polecenia Start-Process. Start-Process pozwala bardziej szczegółowo sterować uruchamianiem procesu, przekazywać argumenty, wskazywać konkretny program oraz określać sposób jego działania. Przykładowo:

Start-Process "notepad.exe" -ArgumentList "C:\Notatki\plan.txt"

Invoke-Item jest natomiast wygodne wtedy, gdy istotne jest użycie domyślnego skojarzenia systemowego, a nie wybór konkretnego programu. Przy otwieraniu folderu można użyć również Start-Process z podaną ścieżką, lecz Invoke-Item lepiej odzwierciedla zamiar „otwórz ten element tak, jak robi to użytkownik”.

Polecenie dobrze współpracuje z potokiem PowerShell. Można najpierw wyszukać pliki, a następnie przekazać wybrany wynik do otwarcia:

Get-ChildItem "C:\Raporty" -Filter "*.pdf" |
    Select-Object -First 1 |
    Invoke-Item

Przy takim zastosowaniu trzeba pamiętać, że otwarty może zostać każdy obiekt przekazany przez potok. Warto więc ograniczyć wynik wyszukiwania, sprawdzić jego liczbę i upewnić się, że wybrany element ma oczekiwany typ. W przeciwnym razie polecenie może uruchomić nie ten dokument, który był zamierzony, albo otworzyć wiele plików równocześnie.

W przypadku plików wykonywalnych mechanizm skojarzeń może prowadzić do uruchomienia programu. Z tego powodu Invoke-Item nie powinno być traktowane jako neutralny podgląd dowolnej zawartości. Przed wykonaniem polecenia warto zweryfikować pełną ścieżkę, nazwę pliku i jego pochodzenie.

Typowe problemy i błędy podczas używania Invoke-Item

Jednym z częstszych problemów jest komunikat informujący o tym, że podana ścieżka nie istnieje. Przyczyną może być literówka, nieaktualny katalog roboczy, brak zamknięcia ścieżki w cudzysłowie albo wskazanie dysku, który nie jest obecnie dostępny. Bieżącą lokalizację można sprawdzić poleceniem:

Get-Location

Przed otwarciem elementu pomocne jest również zweryfikowanie jego istnienia:

Test-Path "C:\Dokumenty\instrukcja.pdf"

Wynik True oznacza, że PowerShell odnalazł wskazany obiekt, lecz nie gwarantuje jeszcze, że można go poprawnie otworzyć. Plik może być uszkodzony, zablokowany przez inny proces, pozbawiony właściwego skojarzenia albo niedostępny z powodu uprawnień.

Jeżeli ścieżka zawiera nawiasy, znaki narodowe lub inne znaki specjalne, zwykle należy przekazywać ją jako zwykły tekst ujęty w cudzysłowy. W przypadku ścieżek budowanych dynamicznie warto dodatkowo wyświetlić ich rzeczywistą wartość:

$ścieżka = Join-Path $env:USERPROFILE "Downloads\plik.pdf"
$ścieżka
Test-Path $ścieżka
Invoke-Item $ścieżka

Inny błąd pojawia się wtedy, gdy rozszerzenie nie ma przypisanej aplikacji albo skojarzenie zostało usunięte. PowerShell może wtedy zgłosić brak programu obsługującego dany typ pliku. Rozwiązaniem jest ustawienie właściwej aplikacji domyślnej w systemie lub jawne użycie programu przez Start-Process.

Problemy mogą też wynikać z różnicy między ścieżką lokalną a zasobem sieciowym. Folder udostępniony pod literą dysku może nie być dostępny w każdej sesji PowerShell, zwłaszcza gdy mapowanie zostało utworzone dla innego konta użytkownika. W takiej sytuacji należy sprawdzić, czy zasób jest widoczny, czy konto ma uprawnienia oraz czy można otworzyć go bezpośrednio z Eksploratora plików.

Podczas automatyzacji trzeba uważać na zaufanie do danych wejściowych. Jeśli ścieżka pochodzi od użytkownika, formularza, pliku konfiguracyjnego lub zewnętrznego źródła, może wskazywać na niebezpieczny program zamiast na zwykły dokument. Bezpieczniejsze jest ograniczenie dozwolonych katalogów i rozszerzeń oraz sprawdzenie właściwości pliku przed wywołaniem polecenia.

W jakich sytuacjach warto umówić wizytę serwisową - Invoke-Item – otwarcie pliku/aplikacji

Pomoc serwisowa może być potrzebna wtedy, gdy Invoke-Item przestało otwierać pliki mimo prawidłowych ścieżek, system zgłasza brak aplikacji domyślnej, foldery uruchamiają się w niewłaściwy sposób albo polecenia PowerShell działają inaczej niż wcześniej. Diagnozy wymagają także sytuacje, w których problem dotyczy większej liczby rozszerzeń, pojawiają się nieznane programy uruchamiane po otwarciu dokumentów lub dostęp do plików jest blokowany przez uprawnienia systemowe.

Przed zgłoszeniem można przygotować dokładny komunikat błędu, użyte polecenie, przykładową ścieżkę oraz informację, czy problem występuje tylko w PowerShell, czy również po dwukrotnym kliknięciu pliku w Eksploratorze. Takie dane ułatwiają rozdzielenie problemu ze składnią polecenia od usterki skojarzeń plików, konta użytkownika, dysku lub samego systemu Windows.

W przypadku laptopa można skorzystać z usługi, w ramach której wykonywana jest zawsze darmowa diagnoza LAPTOPA. Pozwala to sprawdzić, czy przyczyną są ustawienia PowerShell, uszkodzone skojarzenia typów plików, problemy z profilem użytkownika, złośliwe oprogramowanie lub szersza awaria systemowa. Przy komputerze stacjonarnym warto wcześniej opisać objawy i sposób ich odtworzenia, aby zakres sprawdzenia mógł zostać właściwie dobrany.

Nie należy wielokrotnie uruchamiać nieznanych plików tylko po to, aby ustalić, czy polecenie działa. Jeżeli po otwarciu dokumentu pojawiają się nietypowe okna, przekierowania, komunikaty o konieczności włączenia makr albo niespodziewane procesy, bezpieczniej przerwać testy i przekazać urządzenie do sprawdzenia. Dzięki temu można ocenić zarówno konfigurację PowerShell, jak i stan systemu oraz plików, które były otwierane.