Install-Package nie działa w PowerShell 7 wskazuje na moduł PackageManagement niezaimportowany domyślnie w tej wersji — trzeba go zaimportować ręcznie lub użyć PowerShell 5.1.
Komunikat „Install-Package nie działa w PowerShell 7” oznacza zazwyczaj, że polecenie odpowiedzialne za instalowanie pakietów nie jest dostępne w bieżącej sesji albo nie może odnaleźć wymaganego dostawcy pakietów. Sam PowerShell 7 jest środowiskiem uruchomieniowym, natomiast obsługa polecenia Install-Package jest związana z modułem PackageManagement oraz odpowiednim providerem, najczęściej NuGet. Z tego powodu problem nie musi oznaczać awarii systemu ani błędu konkretnego programu.
Czym jest problem z Install-Package w PowerShell 7
Install-Package służy do wyszukiwania i instalowania pakietów z dostępnych źródeł. W praktyce działanie tego polecenia zależy od kilku elementów: obecności modułu PackageManagement, załadowania jego komend do sesji, dostępności providera oraz poprawnej konfiguracji źródła pakietów. W PowerShell 5.1 część tych składników bywała dostępna w systemie w sposób bardziej oczywisty, dlatego polecenie mogło działać bez dodatkowych czynności. Po przejściu do PowerShell 7 środowisko może korzystać z innej ścieżki instalacji, innego profilu użytkownika lub osobnego zestawu modułów.
Najpierw można sprawdzić, czy polecenie jest rozpoznawane:
Get-Command Install-Package -ErrorAction SilentlyContinue
Brak wyniku wskazuje, że komenda nie została udostępniona w aktualnej sesji. W takiej sytuacji można spróbować jawnie załadować moduł:
Import-Module PackageManagement
Get-Command Install-Package
Jeżeli moduł nie zostanie znaleziony, należy zweryfikować jego obecność oraz lokalizacje modułów widoczne dla uruchomionej wersji PowerShell:
Get-Module -ListAvailable PackageManagement
$env:PSModulePath -split [IO.Path]::PathSeparator
Istotne jest także rozróżnienie między PowerShell 7 a klasycznym Windows PowerShell 5.1. Są to odrębne środowiska, które mogą mieć inne profile, moduły i uprawnienia. Uruchomienie polecenia w jednym z nich nie gwarantuje identycznego zachowania w drugim.
Kontekst techniczny i porównanie sposobów instalacji - Install-Package nie działa w PowerShell 7
W PowerShell 7 można spotkać dwa różne zastosowania słowa „pakiet”. Install-Package odnosi się do mechanizmu PackageManagement, który obsługuje źródła pakietów za pośrednictwem providerów. Z kolei Install-Module służy do instalowania modułów PowerShell z repozytoriów takich jak PowerShell Gallery. Próba instalowania modułu za pomocą niewłaściwego polecenia może prowadzić do niejasnych komunikatów albo do pobrania innego rodzaju zasobu, niż oczekiwano.
Dla modułu PowerShell właściwsze jest zwykle użycie:
Install-Module -Name NazwaModulu -Scope CurrentUser
Dla pakietu obsługiwanego przez PackageManagement można sprawdzić dostępne providery:
Get-PackageProvider -ListAvailable
Get-PackageSource
Jeżeli na liście nie ma providera potrzebnego do danego źródła, samo załadowanie PackageManagement nie wystarczy. Provider może wymagać osobnego zainstalowania, zaakceptowania warunków lub dostępu do repozytorium. W przypadku źródeł internetowych znaczenie mają również ustawienia połączenia, certyfikaty, proxy, rozwiązywanie nazw oraz możliwość nawiązania bezpiecznego połączenia z serwisem dostarczającym pakiety.
Przydatne jest również jawne wskazanie źródła i sprawdzenie, czy pakiet jest w nim widoczny:
Find-Package -Name NazwaPakietu -ProviderName NuGet
Jeżeli wyszukiwanie nie zwraca wyniku, problem może dotyczyć repozytorium, nazwy pakietu albo konfiguracji providera, a nie samego polecenia instalacyjnego. W środowisku z ograniczonym dostępem do internetu warto sprawdzić ustawienia proxy i reguły zapory, jednak nie należy zmieniać ich w ciemno, ponieważ może to naruszyć zasady bezpieczeństwa systemu.
Typowe problemy i błędy - Install-Package nie działa w PowerShell 7
Jednym z częstszych przypadków jest komunikat informujący, że termin Install-Package nie jest rozpoznawany jako nazwa polecenia, funkcji, skryptu lub programu. Zwykle oznacza to brak modułu w ścieżce wyszukiwania, brak importu albo uruchomienie innej wersji PowerShell niż ta, w której moduł został wcześniej skonfigurowany. Pomocne jest wtedy porównanie wyników poniższych poleceń:
$PSVersionTable
Get-Module -ListAvailable PackageManagement
Get-Command Install-Package -All
Inny wariant błędu pojawia się wtedy, gdy komenda istnieje, ale nie można odnaleźć providera lub źródła. Warto wtedy zweryfikować:
- czy provider
NuGet jest widoczny dla bieżącego użytkownika; - czy repozytorium jest zarejestrowane i nie zostało wyłączone;
- czy nazwa pakietu została wpisana poprawnie;
- czy połączenie z repozytorium nie jest filtrowane przez proxy lub zaporę;
- czy sesja ma uprawnienia wystarczające do zapisu w wybranej lokalizacji;
- czy nie jest używany profil PowerShell zawierający własne aliasy lub funkcje kolidujące z konfiguracją.
Problem może wystąpić także po aktualizacji PowerShell, zmianie konta użytkownika albo przeniesieniu konfiguracji na inny komputer. Moduł zainstalowany w jednej lokalizacji nie zawsze będzie dostępny dla wszystkich użytkowników, a moduł zainstalowany tylko dla bieżącego użytkownika może nie być widoczny podczas uruchamiania konsoli z innym kontem. Znaczenie ma również uruchomienie PowerShell w wersji 32-bitowej lub 64-bitowej, jeśli provider albo zależne narzędzie obsługuje tylko jeden wariant.
Nie zaleca się mechanicznego usuwania katalogów modułów ani wielokrotnego instalowania tych samych składników. Przed zmianą konfiguracji można zapisać bieżący stan poleceniami Get-Module, Get-PackageProvider i Get-PackageSource. Ułatwia to ustalenie, czy problem pojawił się po konkretnej aktualizacji oraz pozwala odtworzyć wcześniejsze ustawienia.
Kiedy trzeba skorzystać z pomocy serwisu - Install-Package nie działa w PowerShell 7
Do serwisu warto zgłosić problem, gdy Install-Package przestał działać po aktualizacji systemu, zmianie wersji PowerShell, instalacji oprogramowania zabezpieczającego lub migracji danych na nowy komputer. Szczególnej uwagi wymaga sytuacja, w której polecenie działa w jednej sesji, lecz nie działa w profilu użytkownika, podczas uruchamiania z podwyższonymi uprawnieniami albo w skrypcie wykonywanym automatycznie. Może to wskazywać na różnice w ścieżkach modułów, uprawnieniach, zmiennych środowiskowych lub konfiguracji repozytoriów.
Przy zgłoszeniu pomocne jest przekazanie pełnej treści komunikatu, wyniku $PSVersionTable, informacji o używanym koncie oraz nazwy pakietu, który miał zostać zainstalowany. Nie powinno się ujawniać haseł, tokenów ani kluczy zapisanych w konfiguracji. W Warszawskim Pogotowiu Komputerowym 24/7 można rozpocząć od darmowej diagnozy laptopa, podczas której sprawdzane są między innymi wersje środowisk, dostępność modułów, konfiguracja profilu oraz komunikacja z repozytoriami.
Po ustaleniu przyczyny można uporządkować moduły, przywrócić właściwego providera, poprawić źródło pakietów albo dobrać odpowiednie polecenie do rodzaju instalowanego zasobu. Dzięki temu rozwiązanie nie ogranicza się do jednorazowego obejścia błędu, lecz uwzględnia również sposób uruchamiania PowerShell i konfigurację, która będzie używana przy kolejnych instalacjach.