Надання коду VS функціонувати більше, як PowerShell ISE


2

Останнім часом я витрачаю більше часу на роботу в PowerShell, і я виявив, що мені дуже подобається форма та функція Visual Studio Code з розширенням PowerShell для цієї роботи над рідним PowerShell ISE, за винятком одного невеликого шматочка:

У ISE я можу викликати та досліджувати змінні, масиви та хеші та інші об'єкти в коді, над яким я зараз працюю в командному рядку ISE, але в коді VS, використовуючи або інтегровану консоль PowerShell, або powerhell.exe консолі, я не маю такої здатності.

Наприклад:

У ISE я створив хеш-таблицю і вивчаю синтаксис для посилання на неї, пробуючи різні речі в консолі та "запускаючи" код, навіть якщо він просто декларує та створює хештелі, я можу потім посилатися на це і досліджуйте його в консолі:

PowerShell ISE з деяким кодом і висновком

Коли я намагаюся зробити це у коді VS (той самий код, запустити скрипт у будь-якій з консолей), я отримую цю помилку, в основному зазначаючи, що масив, який я намагаюся дослідити, не існує:

Вихід консолі потужності у коді VS

Як я міг отримати подібну функцію в коді VS? Або це навіть можливо?

Можливо, більша частина моєї проблеми полягає в тому, що я маю проблеми описати це способом, який Google "розуміє", і тому мені не вдалося знайти подібних питань в Інтернеті.


2
Не впевнений у відповіді на це. Ви можете запитати на каналі Vscode у цій слабі. Деякі з чортів там висять. slack.poshcode.org
Zoredache

Я не відчуваю цього питання. Щойно створив змінну, запустив налагодження, потім зміг отримати доступ до цієї змінної у вікні терміналу.
корінь

@root Я не пробував налагодження раніше, після того як я подав це питання, і побачив, що це робив. Зараз я намагаюся розібратися, чи може це бути режим «за замовчуванням» консолі при роботі з файлами PS у коді VS.
music2myear

Як ви виконували інші, ніж F5 (налагодження)? Я не розбираюся в VSC
корінь

Я виконував сценарій у консолі:. \ Scriptname.ps1 <enter> Я не використовував налагодження, оскільки принаймні пару класів програмування в молодшому коледжі.
music2myear

Відповіді:


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"
        )
    }
}

Це переходить у налагодження?
music2myear

це реплікація процесу, а не виклик F5 для налагодження / запуску поточного відкритого файлу в редакторі. Перевірте мою
редакцію,

ви можете побачити на моїй консолі, що я взагалі не завантажую вміст редактора між командами ... Я очищаю змінну, щоб повернутися до нуля, визначити крапковий файл сценарію, що містить змінну, щоб завантажити його в сеанс, потім
працюйте

і до того ж, на екрані ISE, останнє, що завантажується перед викликом змінної хештелю, - це вміст редактора. Дайте, що ви можете бачити ваш хештель як останнє, що запускалося в консолі до виклику індексів ;-)
ferrell_io

1
Приємно !! Раді допомогти! Насолоджуйтесь роботою у Кодексі VS з Powershell, це лише продовжить покращуватися! MS зараз докладає своїх зусиль з розробки Powershell у Кодекс VS та сумісність між платформами, і заявила, що в цей момент ISE лише перегляне оновлення за потребою, тому цікаво побачити, куди в кінцевому підсумку з'явиться Код. . Як тільки вони додадуть підтримку PSReadLine і отримають виділення синтаксису нарівні з ISE, це буде все, що є ISE, а потім і деякі (мені щонайменше). Ура!
ferrell_io

2

Код VS є відкритим кодом. Те, що ви намагаєтеся зробити, схоже, зараз не підтримується , тому якщо вам потрібна така функція, патчі завжди вітаються. :)


Я сподівався, що це не відповідь, але побоювався, що це можливо.
music2myear

1
О, я думаю, я, можливо, щойно зрозумів це. Ой. PowerShell ISE знаходиться в постійному стані налагодження. Запуск сесії налагодження у коді VS, здавалося, надає мені потрібні функції. Тепер, щоб побачити, чи є способи зробити це консольним режимом «за замовчуванням».
music2myear

Код VS може бути з відкритим кодом, але він цілком здатний це робити, якщо ви завантажуєте змінну в сеанс однаково в будь-якому редакторі. тобто ви можете запустити відкритий файл ("налагодження" w / F5), виділити весь хеш-таблицю і натиснути клавішу F8, щоб запустити вибір (працює однаково в обох редакторах), або крапкувати джерело збереженого файлу сценарію, щоб завантажити його вміст у сеанс (ключовий термін - це джерело крапок, тобто розміщення крапки [періоду], а потім пробіл, шлях до файлу сценарію)
ferrell_io

На щастя, nferrell вказав на з'єднання, які мені не вистачало, і тепер я можу працювати в VS Code приблизно так само, як і PS IDE.
music2myear
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.