2

В последнее время я трачу больше времени на работу с PowerShell и обнаружил, что мне действительно нравится форма и функции кода Visual Studio с расширением PowerShell для этой работы над собственным PowerShell ISE, за исключением одного небольшого кусочка:

В ISE я могу вызывать и исследовать переменные, массивы и хэши и другие объекты в коде, над которым я сейчас работаю, в командной строке ISE, но в VS Code, используя либо интегрированную консоль PowerShell, либо powershell.exe консоль, я не получаю такой способности.

Например:

В ISE я построил хеш-таблицу и изучаю синтаксис для ссылки на нее, пробуя различные вещи в консоли и "выполняя" код, даже если он просто объявляет и строит хеш-таблицу, я могу затем сослаться на это и исследовать это в консоли:

PowerShell ISE с некоторым кодом и выводом

Когда я пытаюсь сделать это в VS Code (тот же код, запустить скрипт в любой из консолей), я получаю эту ошибку, в основном отмечая, что массив, который я пытаюсь исследовать, не существует:

вывод консоли PowerShell в VS Code

Как я мог получить подобную функцию в VS Code? Или это вообще возможно?

Возможно, большая часть моей проблемы заключается в том, что у меня возникают проблемы с описанием этого в том смысле, в котором Google "понимает", и поэтому я не смог найти подобные вопросы в Интернете.

2 ответа2

2

VS Code является открытым исходным кодом. То, что вы пытаетесь сделать, похоже, сейчас не поддерживается, поэтому, если вам нужна такая функция, исправления всегда приветствуются. :)

1

Проблема в том, что вы не используете точечный источник сценария, вы просто передаете путь сценария (согласно вашему комментарию к исходному сообщению)

Что вы делаете:. .\script.ps1 (просто указав путь, ничего не вызывая скрипт для его запуска)

То , что вы должны . .\script.ps1 (точечный источник для загрузки содержимого скрипта в сеанс).

Вот я повторяю вашу проблему:

Вот оно работает:

  1. Первая строка - я очищаю переменную от сессии
  2. Вторая строка - подтверждение того, что переменная повторяет вашу проблему (ожидается, так как переменная не существует в данный момент)
  3. Третья строка - это точечный источник сценария, который содержит приведенный ниже блок (такой же, как ваш скриншот), чтобы повторить, как вы к нему подходите.
  4. Выполнение точно того же поиска хеш-таблицы, приводящего к тому же самому выводу, который вы получаете от ISE

Блок скриптов в testHash.ps1:

$hash_agencyOffices = @{
    Agency1 = @{
        Agency1 = @(
            "Aberdeen"
            "Sacramento"
            "Dallas"
            "Long Beach"
            "Tampa"
            "Seattle"
            "Vancouver"
        )
    }
    Agency2 = @{
        SubAgency1 = @(
            "Aberdeen"
            "Sacramento"
            "Dallas"
            "Long Beach"
            "Tampa"
            "South Bend"
            "Stevenson"
            "Tumwater"
            "Vancouver"
        )
        SubAgency2 = @(
            "Dallas"
            "Seattle"
            "Vancouver"
        )
    }
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .