Ошибка Команда Get не распознана как командлет в PowerShell.

Устраняем ошибку "Имя \'Get\' не распознано как имя командлета" в PowerShell. Пошаговое руководство и разбор причин. Быстро и эффективно вернём PowerShell к жизни!

Если при выполнении команды в PowerShell вы получили сообщение вида «Имя ‘Get’ не распознано как имя командлета», не спешите паниковать. Такая ошибка встречается часто и обычно устраняется последовательной диагностикой. Ниже — развернённое руководство: причины, проверочные шаги, конкретные команды и рекомендации, которые помогут найти и исправить проблему.

Почему появляется ошибка «…не распознано как имя командлета»

Сообщение означает, что среда PowerShell не нашла команду или исполняемый файл с указанным именем. Возможные причины:

  • Неполное или некорректное имя команды. В PowerShell имена командлетов (например, Get-ChildItem) обычно нечувствительны к регистру, но опечатки, пропуски или обрезанные имена (например, «Get» вместо «Get-ChildItem») приведут к ошибке.
  • Команда — не встроенный командлет, а функция, алиас или внешний исполняемый файл, который недоступен. Например, вы могли ожидать, что функция из пользовательского профиля или модуль доступен, но он не загружен.
  • Не установлен нужный модуль или он находится в директории, не включённой в PSModulePath. Многие команды поставляются в виде модулей (например, модули Azure, VMware и т. п.). Если модуль отсутствует или повреждён — команда не найдётся.
  • Проблемы с путём к исполняемым файлам (PATH). Если вы запускаете внешнюю программу (exe) и она не в PATH, PowerShell не найдёт её; запуск из текущей директории требует явного указания (.).
  • Повреждён профиль PowerShell или конфигурация автозагрузки модулей. В профиле могут быть определены функции/алиасы, без которых ожидаемая команда недоступна.
  • Версия PowerShell не поддерживает командлет. Некоторые команды появились в более новых версиях PowerShell; в старой версии их будет нет.

Шаги диагностики — что проверить в первую очередь

  1. Проверьте правильность написания.

    Используйте автодополнение: начните вводить команду и нажмите Tab. Пример опечатки: Get-ChildItm вместо Get-ChildItem.

  2. Уточните, что вы хотите выполнить: командлет, функция, алиас или внешний файл.

    Команды можно искать так:

    Get-Command -Name Get-ChildItem
    Get-Command -Name имя_команды -All

    Если Get-Command ничего не возвращает, команда недоступна.

  3. Проверьте наличие модуля и автозагрузку.

    Список доступных модулей:

    Get-Module -ListAvailable

    Если нужного модуля нет в списке, установите его (если он доступен в репозитории) или импортируйте вручную:

    Install-Module -Name ИмяМодуля -Scope CurrentUser
    Import-Module ИмяМодуля

    Примечание: начиная с PowerShell 3, модуль обычно автозагружается при первом обращении к командлету, но если модуль лежит не в PSModulePath — автозагрузка не сработает.

  4. Проверка пути модулей (PSModulePath).
    $env:PSModulePath -split ';'

    В результате вы увидите директории, где PowerShell ищет модули. Если модуль хранится в другой папке — либо переместите его в одну из этих директорий, либо добавьте путь в PSModulePath.

  5. Если команда — внешний exe, проверьте PATH.

    Выведите переменную PATH:

    $env:PATH -split ';'

    Ищите нужную папку. Для поиска конкретного исполняемого файла можно использовать:

    Get-Command -Name имя_программы -Type Application

    Чтобы запустить программу из текущей папки, используйте .имя.exe.

  6. Проверьте профиль PowerShell.

    Путь к профилю и содержание:

    $profile
    Get-Content $profile

    Запустите PowerShell с отключённым профилем, чтобы проверить, не в нём ли проблема:

    powershell -NoProfile
    pwsh -NoProfile

    Если ошибка уходит — правьте или восстановите профиль.

  7. Проверьте версию PowerShell.
    $PSVersionTable.PSVersion

    Если командлет появился в более новой версии, обновление PowerShell решит проблему.

  8. Посмотрите помощь и события ошибок.
    Get-Help ИмяКоманды -Full
    Get-EventLog -LogName Application -Newest 50

    Get-Help полезен, когда команда найдена, но вызывает ошибки из-за синтаксиса. Системные журналы помогут при проблемах с модулями или загрузкой.

Читайте также:  🔥 DOOM запустили на беговой дорожке. И это прекрасно

Практические примеры и типичные сценарии

  • Опечатка в имени:

    Ошибка: Get-ChildItm : Имя 'Get-ChildItm' не распознано...
    Решение: исправить на Get-ChildItem или использовать Tab.

  • Команда из модуля не установлена:

    Пример: вы пытаетесь использовать командлет из модуля Az или VMware, но он не найден.

    Install-Module -Name Az -Scope CurrentUser
    Import-Module Az

    Проверьте наличие и версию модуля через Get-Module -ListAvailable Az.

  • Вызов exe в текущей папке:

    Если в папке есть исполняемый файл tool.exe, попытка запустить просто tool может не сработать. Нужно: .tool.exe.

  • Алиасы и пользовательские функции:

    Если вы привыкли запускать функцию из старого профиля, но она больше не определена, посмотрите алиасы: Get-Alias, и функции: Get-Command -CommandType Function.

  • Проверка доступности команды во всех местах:
    Get-Command -Name имя* -All

    Команда покажет все совпадения: командлеты, функции, приложения и т. п., и их путь.

Дополнительные рекомендации

  • Используйте Get-Help и Get-Command как первые инструменты при непонятных сообщениях об ошибке.
  • Для установки модулей из репозиториев применяйте Install-Module (требуются права и, возможно, регистрация репозитория).
  • Если в системе несколько версий PowerShell, убедитесь, что вы используете ту версию, где доступны нужные модуль и командлеты.
  • При отсутствии явных причин попробуйте выполнить PowerShell от имени администратора — некоторые операции требуют повышенных прав.
  • Если не удаётся разобраться — опишите точную команду и полное сообщение об ошибке и обратитесь к сообществу: при наличии конкретики специалистам намного проще помочь.

Короткая сводка для быстрого решения: проверьте орфографию и автодополнение, выполните Get-Command и Get-Module -ListAvailable, проверьте $env:PSModulePath и $env:PATH, запустите PowerShell без профиля и убедитесь в версии PowerShell. Системный и пошаговый подход обычно позволяет быстро найти причину и устранить ошибку.

Понравилась статья? Поделиться с друзьями:
CyberSafe: компьютерная безопасность