Migrating from windows powershell 5.1 to powershell 7

Содержание этого руководством

Раздел Определение
Как создать поставщика Windows PowerShell в этом разделе описано, как создать поставщик Windows PowerShell для Windows PowerShell.
создание ведущего приложения Windows PowerShell В этом разделе описывается написание ведущего приложения, управляющего пространством выполнения и написание ведущего приложения, реализующего собственный пользовательский узел.
Как создать оснастку Windows PowerShell В этом разделе описывается создание оснастки, которая используется для регистрации всех командлетов и поставщиков в сборке, а затем создание пользовательской оснастки.
Создание оболочки консоли В этом разделе описывается создание оболочки консоли, которая не является расширяемой.
Основные понятия Windows PowerShell в этом разделе содержатся общие сведения, которые помогут понять Windows PowerShell от точки зрения разработчика.

Создание задачи сборки

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

Настройте задачу сборки.

  1. В палитре команд выполните команду Настроить задачу сборки по умолчанию.

  2. В диалоговом окне Выбор задачи для настройки выберите Создать файл tasks.json из шаблона.

  3. В диалоговом окне Выбор шаблона задачи выберите .NET Core.

Если файл еще не существует, он будет создан.

Чтобы протестировать задачу сборки, выполните указанные ниже действия.

  1. В палитре команд выполните команду Выполнить задачу сборки.

  2. В диалоговом окне Выбор задачи сборки для выполнения выберите сборка.

Сведения о блокировке файлов DLL

По умолчанию в случае успешной сборки выходные данные в терминале не выводятся. Если вы видите выходные данные c текстом Файл проекта не существует, следует изменить файл . Включите явный путь к проекту C# в виде . В данном примере  — это имя папки проекта. Этот элемент должен следовать после элемента в списке следующим образом:

При отладке библиотека DLL модуля импортируется в сеанс PowerShell в терминале VS Code. При этом она блокируется. Если запустить задачу сборки, не закрывая сеанс терминала, появится следующее сообщение:

Перед перестроением необходимо закрыть сеансы терминала.

Начало работы

Перед запуском убедитесь, что оболочка PowerShell установлена в системе. Сведения о современных рабочих нагрузках для Windows, macOS и Linux см. по следующим ссылкам:

  • Установка PowerShell в Linux
  • Установка PowerShell в macOS
  • Установка PowerShell в Windows

Сведения о традиционных рабочих нагрузках Windows PowerShell см. в разделе Установка Windows PowerShell.

Важно!

Интегрированная среда сценариев Windows PowerShell по-прежнему доступна для Windows, но функции для нее больше не разрабатываются. Интегрированная среда сценариев (ISE) работает только с PowerShell 5.1 и более ранних версий. Как компонент Windows эта среда по-прежнему официально поддерживается для внесения критически важных исправлений, связанных с безопасностью и обслуживанием.
Пока что мы не планируем удалять ее из Windows.

Справочные статьи по командлетам форматирования

Справочные статьи по командлетам имеют определенную структуру. Она определяется модулем PlatyPS.
Платипс создает справку по командлетам для модулей PowerShell в Markdown. После редактирования файлов Markdown с помощью PlatyPS создаются MAML-файлы справки, используемые командлетом .

В коде PlatyPS жестко задана схема для справки по командлетам. Ее описание можно найти в файле platyPS.schema.md. Нарушения схемы приводят к ошибкам сборки, которые необходимо исправить, иначе ваше содержимое не будет принято.

  • Не удаляйте ни одну из структур заголовка ATX. PlatyPS требует определенного набора заголовков.
  • Под заголовками Input type (Тип входных данных) и Output type (Тип выходных данных) должен быть указан тип. Если командлет не принимает входные данные или не возвращает значение, используйте значение .
  • Встроенные фрагменты кода можно использовать в любом абзаце.
  • Блоки кода с ограждением разрешены только в разделе » примеры «.

В схеме Платипс в качестве примера используется заголовок H2. Каждый пример является заголовком H3. В этом примере схема не позволяет разделять блоки кода абзацами. Схема позволяет выполнять следующую структуру:

Пронумеруйте все примеры и снабдите их краткими заголовками.

Пример:

Среда отладчика

При достижении точки останова вы вводите среду отладчика. Командная строка изменится так, чтобы она начиналась с «:».

Дополнительные сведения о настройке командной строки см. в разделе about_Prompts.

кроме того, в некоторых ведущих приложениях, таких как консоль PowerShell (но не в Windows PowerShell интегрированной среде сценариев ), открывается вложенный запрос для отладки. Вложенные запросы можно обнаружить по повторяющимся символам «больше чем» (ASCII 62), которые отображаются в командной строке.

Например, в консоли PowerShell по умолчанию используется следующая строка отладки:

Уровень вложенности можно найти с помощью автоматической переменной.

Кроме того, в локальной области определена автоматическая переменная,. Наличие переменной можно использовать для определения того, находится ли вы в отладчике.

Пример:

Значение переменной можно использовать в отладке.

VSCode и Powershell Pro Tools

VSCode — это современный редактор кода от Microsoft. Он поддерживает множество языков через разные расширения, в том числе и Powershell. Одно из таких расширений, Powershell Pro Tools, позволяет выполнять конвертацию ps1 в exe. Единственный плюс этого способа в том, если вы пользователь VSCode. Минут — расширение платное.

Выглядит это расширение следующим образом:

После установки расширения и открытии вашего скрипта вам нужно нажать кнопку в правом-верхнем углу экрана для создания .exe файла. При первом нажатии на кнопку, в корневой директории VSCode создается файл конфигурации с расширением «psd1». В этом файле, будет указан путь куда будет сохранен .exe файл:

Создание конвейера

Класс System. Management. Automation. PowerShell предоставляет несколько методов для добавления команд, параметров и скриптов в конвейер. Конвейер можно вызвать синхронно, вызвав перегрузку метода System. Management. Automation. PowerShell. Invoke * или асинхронно, вызвав перегрузку метода System. Management. Automation. PowerShell. BeginInvoke * , а затем метод System. Management. Automation. PowerShell. EndInvoke * .

AddCommand

  1. Создайте объект System. Management. Automation. PowerShell .

  2. Добавьте команду, которую требуется выполнить.

  3. Вызовите команду.

Если метод System. Management. Automation. PowerShell. AddCommand * вызывается более одного раза перед вызовом метода System. Management. Automation. PowerShell. Invoke * , результат первой команды передается второму и т. д. Если вы не хотите передавать результат предыдущей команды команде, добавьте ее, вызвав метод System. Management. Automation. PowerShell. аддстатемент * .

аддпараметер

В предыдущем примере выполняется одна команда без параметров. Можно добавить параметры в команду с помощью метода System. Management. Automation. пскомманд. аддпараметер *. например, следующий код возвращает список всех процессов, именованных на компьютере.

Можно добавить дополнительные параметры путем многократного вызова System. Management. Automation. пскомманд. аддпараметер * .

Также можно добавить словарь имен и значений параметров, вызвав метод System. Management. Automation. PowerShell. аддпараметерс * .

аддстатемент

Пакетную обработку можно имитировать с помощью метода System. Management. Automation. PowerShell. аддстатемент * , который добавляет дополнительный оператор в конец конвейера. следующий код возвращает список запущенных процессов с именем , а затем получает список запущенных служб.

аддскрипт

Можно запустить существующий скрипт, вызвав метод System. Management. Automation. PowerShell. аддскрипт * . В следующем примере в конвейер добавляется скрипт и выполняется его выполнение. В этом примере предполагается, что в папке уже есть скрипт с именем .

Существует также версия метода System. Management. Automation. PowerShell. аддскрипт * , принимающая логический параметр с именем . Если этот параметр имеет значение , скрипт выполняется в локальной области. Следующий код запустит скрипт в локальной области.

Синхронный вызов конвейера

После добавления элементов в конвейер вы вызываете его. Для синхронного вызова конвейера вызывается перегрузка метода System. Management. Automation. PowerShell. Invoke * . В следующем примере показано, как синхронно вызвать конвейер.

Асинхронный вызов конвейера

Асинхронный вызов конвейера вызывает перегрузку System. Management. Automation. PowerShell. BeginInvoke * для создания объекта IAsyncResult и последующего вызова метода System. Management. Automation. PowerShell. EndInvoke * .

В следующем примере показано, как вызвать конвейер асинхронно.

v2021.9.0

Thursday, September 09, 2021

This release includes changes from both and .

A new notification was added that allows PowerShell Editor Services,
the LSP module, to stop an attached UI debugger (such as VS Code’s)
for debugger sessions started by executing code with a attached.
This may not work in all cases but should improve usability.

The PowerShell status bar indicator no longer uses custom coloring but instead pulls from the user’s theme.
A formatting bug was fixed by community maintainer Patrick Meinecke.
A regression in the debug launch configuration’s parameter was fixed and covered with a test.
And finally, the bundled PSScriptAnalyzer
was updated to .

vscode-powershell

  • vscode-powershell #3544 — Document the trace server setting is valid (despite Code’s warning). (Thanks @michal037!)
  • vscode-powershell #3522 — Allow PowerShell session to start and stop the debugger interface.
  • vscode-powershell #2436 — Use status bar colors from theme instead of hardcoded values.
  • vscode-powershell #3529 — Extend CI test matrix and update readme(s).

PowerShellEditorServices

  • PowerShellEditorServices #24977523 — Implement to fix ANSI formatting. (Thanks @SeeminglyScience!)
  • vscode-powershell #3522 — Send notification when appropriate.
  • vscode-powershell #3537 — Fix bug with when is a command.
  • ‍️ PowerShellEditorServices #1562 — Pin PSScriptAnalyzer to , Plaster to and PSReadLine to .

Выполнение сценария

Прежде чем можно будет запустить сценарий в Windows, необходимо изменить политику выполнения PowerShell по умолчанию. Политика выполнения не применяется к PowerShell, работающему на платформах, отличных от Windows.

Политика выполнения по умолчанию предотвращает выполнение всех скриптов, включая скрипты, которые вы пишете на локальном компьютере. Подробнее см. в разделе about_Execution_Policies.

Политика выполнения сохраняется в реестре, поэтому ее необходимо изменить только один раз на каждом компьютере.

Чтобы изменить политику выполнения, используйте следующую процедуру.

В командной строке введите:

или

Изменение вступает в силу немедленно.

Чтобы выполнить сценарий, введите полное имя файла скрипта и полный путь к нему.

Например, чтобы запустить сценарий Get-ServiceLog.ps1 в каталоге C:\Scripts, введите:

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

Например, чтобы запустить сценарий ServicesLog.ps1 в локальном каталоге, введите:

Если у скрипта есть параметры, введите параметры и значения параметров после имени файла скрипта.

Например, следующая команда использует параметр ServiceName скрипта Get-ServiceLog, чтобы запросить журнал действия службы удаленного управления Windows.

В качестве функции безопасности PowerShell не выполняет сценарии при двойном щелчке значка скрипта в проводнике или при вводе имени сценария без полного пути, даже если сценарий находится в текущем каталоге. Дополнительные сведения о выполнении команд и сценариев в PowerShell см. в разделе about_Command_Precedence.

Запуск с помощью PowerShell

Начиная с PowerShell 3,0 можно запускать сценарии из проводника.

Чтобы использовать функцию «Запуск с помощью PowerShell», сделайте следующее:

Запустите проводник, щелкните правой кнопкой мыши имя файла скрипта и выберите команду «запустить с помощью PowerShell».

Функция «запустить с помощью PowerShell» предназначена для выполнения скриптов, которые не имеют обязательных параметров и не возвращают выходные данные в командную строку.

Дополнительные сведения см. в разделе about_Run_With_PowerShell.

Выполнение сценариев на других компьютерах

Чтобы запустить сценарий на одном или нескольких удаленных компьютерах, используйте параметр FilePath командлета.

Введите путь и имя файла скрипта в качестве значения параметра FilePath . Скрипт должен находиться на локальном компьютере или в каталоге, к которому локальный компьютер может получить доступ.

Следующая команда запускает сценарий на удаленных компьютерах с именем Server01 и Server02.

Отображение групп объектов в представлении списка

Можно разделить объекты, отображаемые представлением списка, на группы. это не означает, что вы определяете группу, а только это Windows PowerShell запускает новую группу всякий раз, когда изменяется значение определенного свойства или сценария. В следующем примере новая группа запускается всякий раз, когда изменяется свойство System. ServiceProcess. ServiceController. serviceType .

Следующие XML-элементы используются для определения времени запуска группы:

  • Элемент GroupBy определяет свойство или скрипт, который запускает новую группу и определяет, как будет отображаться группа.

  • Элемент PropertyName указывает свойство, которое запускает новую группу при изменении ее значения. Необходимо указать свойство или скрипт для запуска группы, но нельзя указать и то, и другое.

  • Элемент ScriptBlock указывает скрипт, который запускает новую группу при изменении ее значения. Необходимо указать скрипт или свойство для запуска группы, но нельзя указать и то, и другое.

  • Элемент Label определяет метку, которая отображается в начале каждой группы. в дополнение к тексту, указанному этим элементом, Windows PowerShell отображает значение, вызвавшее новую группу, и добавляет пустую строку до и после метки. Этот элемент является необязательным.

  • Элемент Ошибка customcontrol определяет элемент управления, используемый для вывода данных. Этот элемент является необязательным.

  • Элемент кустомконтролнаме указывает общий элемент управления или представление, которое используется для отображения данных. Этот элемент является необязательным.

Пример полного файла форматирования, определяющего группы, см. в разделе представление списка (GroupBy).

Отладка и область

Переход в отладчик не влияет на область, в которой работает, но при достижении точки останова в скрипте вы переходите в область скрипта. Область скрипта является дочерней для области, в которой запущен отладчик.

Чтобы найти переменные и псевдонимы, определенные в области скрипта, используйте параметр scope командлета или.

Например, следующая команда получает переменные в локальной области (скрипт):

Вы можете сократить команду следующим образом:

Это удобный способ просмотра только переменных, определенных в скрипте и определенных во время отладки.

Отладка в командной строке

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

Например, если задать точку останова в переменной, отладчик остановится на любой переменной в любом скрипте, команде, функции, командлете или выражении, которое выполняется до отключения или удаления точки останова.

Это позволяет выполнять отладку скриптов в более реалистичном контексте, в котором они могут зависеть от функций, переменных и других сценариев в сеансе и в профиле пользователя.

Точки останова строки зависят от файлов скриптов, поэтому они задаются только в файлах скриптов.

Аргументы командной строки

Чтобы упростить использование, скрипт поддерживает аргументы командной строки, которые соответствуют переходам во все состояния, как показано в табл. 4.

Табл. 4. Аргументы командной строки для переходов состояний

Ключ Описание
-Start Запуск службы
-Stop Остановка службы
-Setup Установка себя как службы
-Remove Удаление службы

(Поддержка состояния paused не реализована, но ее легко добавить, используя соответствующий ключ для перехода в это состояние.)

В табл. 5 показано еще несколько аргументов для управления, поддерживаемых скриптом.

Табл. 5. Поддерживаемые аргументы для управления

Ключ Описание
-Restart Остановка службы и ее повторный запуск
-Status Отображение текущего состояния службы
-Service Запуск экземпляра службы (только для применения заглушкой service.exe)
-Version Отображение версии службы
Общие параметры –? , –Verbose , –Debug и т. д.

Каждый ключ перехода состояния имеет два режима работы.

  • При вызове конечным пользователем С помощью функций управления службами в Windows PowerShell для инициации перехода состояния.
  • При вызове из SCM (косвенно, через заглушку service.exe) Соответствующее управление экземпляром службы service.ps1.

Эти два случая можно различить в период выполнения, проверив имя пользователя: в первом случае это обычный пользователь (системный администратор), а во втором — реальный системный пользователь Windows. Системного пользователя можно идентифицировать примерно так:

Собираем все воедино

Возможности PSService.ps1 На основе всего того, что мы обсудили на данный момент, я могу создать ту службу Windows PowerShell, о которой я мечтал, — скрипт PSService.ps1, который:

  • может сам себя устанавливать и удалять (используя функции Windows PowerShell для управления службами);
  • может сам себя запускать и останавливать (используя тот же набор функций);
  • включает короткий фрагмент C#-кода, создающий PSService.exe для SCM (с помощью команды Add-Type);
  • делает обратный вызов из заглушки PSService.exe в скрипт PSService.ps1 для выполнения реальной операции службы (в ответ на события OnStart, OnStop и др.);
  • управляется из панели SCM и всех утилит командной строки (благодаря заглушке PSService.exe);
  • является отказоустойчивым и успешно обрабатывает любую команду, находясь в любом состоянии. Например, он может автоматически остановить службу перед ее удалением или ничего не делать, если ему поступит запрос запустить уже выполняемую службу;
  • поддерживает Windows 7 и все более поздние версии Windows (используя функциональность только Windows PowerShell v2).

Заметьте, что в этой статье я затронул лишь критически важные части проекта и реализации PSService.ps1. Скрипт-пример также содержит отладочный код и в какой-то мере поддерживает необязательную функциональность служб, но их описание здесь усложнило бы пояснения безо всякой необходимости.

Архитектура PSService.ps1 Скрипт организуется в серию разделов:

  • комментарий-заголовок, описывающий файл;
  • справочный блок в виде комментариев;
  • блок Param, определяющий ключи командной строки;
  • глобальные переменные;
  • вспомогательные процедуры: Now и Log;
  • блок исходного кода на C# для создания заглушки PSService.exe;
  • основную процедуру, обрабатывающую все ключи командной строки.

Запуск

За управление службами отвечает SCM. Каждая операция запуска должна проходить через SCM, чтобы он мог отслеживать состояния служб. Поэтому, даже если пользователь хочет вручную инициировать запуск через скрипт службы, этот запуск должен быть выполнен как запрос к SCM. В этом случае последовательность операция перечислена ниже.

  1. Пользователь (администратор) запускает первый экземпляр: PSService.ps1 –Start.
  2. Этот первый экземпляр сообщает SCM запустить службу: Start-Service $serviceName.
  3. SCM выполняет PSService.exe. Ее процедура Main создает объект службы, а затем вызывает его метод Run.
  4. SCM вызывает метод OnStart объекта службы.
  5. C#-метод OnStart запускает второй экземпляр скрипта: PSService.ps1 –Start.
  6. Этот второй экземпляр, теперь выполняемый в фоне как системный пользователь, запускает третий экземпляр, который останется в памяти как настоящая служба: PSService.ps1 –Service. Этот экземпляр и работает как служба.

В итоге будут выполняться две задачи: PSService.exe и экземпляр PowerShell.exe, выполняющий PSService.ps1 –Service.

За управление службами отвечает SCM.

Все это реализуется тремя частями кода в скрипте.

Определение ключа –Start в блоке Param в начале скрипта:

В процедуре Main в конце скрипта блок if обрабатывает ключ –Start:

Фрагмент исходного кода на C#, процедура Main и обработчик для OnStart, который выполняет команду PSService.ps1 –Start, как показано на рис. 4.

Рис. 4. Обработчик стартового кода

Install VS Code and the PowerShell Extension

  1. Install Visual Studio Code. For more information, see the overview
    Setting up Visual Studio Code.

    There are installation instructions for each platform:

    • Running Visual Studio Code on Windows
    • Running Visual Studio Code on macOS
    • Running Visual Studio Code on Linux
  2. Install the PowerShell Extension.

    1. Launch the VS Code app by typing in a console or if you installed
      Visual Studio Code Insiders.
    2. Launch Quick Open on Windows or Linux by pressing Ctrl+P. On macOS,
      press Cmd+P.
    3. In Quick Open, type and press Enter.
    4. The Extensions view opens on the Side Bar. Select the PowerShell extension from Microsoft.
    5. Click the Install button on the PowerShell extension from Microsoft.
    6. After the install, if you see the Install button turn into Reload, Click on
      Reload.
    7. After VS Code has reloaded, you’re ready for editing.

For example, to create a new file, click File > New. To save it, click File > Save and then
provide a file name, such as . To close the file, click the next to the file
name. To exit VS Code, File > Exit.

Installing the PowerShell Extension on Restricted Systems

Some systems are set up to require validation of all code signatures. You may receive the following
error:

This problem can occur when PowerShell’s execution policy is set by Windows Group Policy. To
manually approve PowerShell Editor Services and the PowerShell extension for VS Code, open a
PowerShell prompt and run the following command:

You’re prompted with Do you want to run software from this untrusted publisher? Type to run
the file. Then, open VS Code and check that the PowerShell extension is functioning properly. If you
still have problems getting started, let us know on GitHub issues.

Choosing a version of PowerShell to use with the extension

With PowerShell installing side-by-side with Windows PowerShell, it’s now possible to use a specific
version of PowerShell with the PowerShell extension. This feature looks at a few well-known paths on
different operating systems to discover installations of PowerShell.

Use the following steps to choose the version:

  1. Open the Command Palette on Windows or Linux with
    Ctrl+Shift+P. On macOS, use
    Cmd+Shift+P.
  2. Search for Session.
  3. Click on PowerShell: Show Session Menu.
  4. Choose the version of PowerShell you want to use from the list.

If you installed PowerShell to a non-typical location, it might not show up initially in the Session
Menu. You can extend the session menu by
as described
below.

Note

The PowerShell session menu can also be accessed from the green version number in the bottom right
corner of status bar. Clicking this version number opens the session menu.

Параметры конфигурации режима ISE

Режим ISE вносит следующие изменения в параметры VS Code.

  • Сочетания клавиш

    Компонент Привязка интегрированной среды сценариев Привязка VS Code
    Прерывание и остановка отладчика CTRL+B F6
    Выполнение текущей строки / выделение текста F8 F8
    Список доступных фрагментов CTRL+J CTRL+ALT+J

    Примечание

    В VS Code также можно .

  • Упрощенный интерфейс, как в интегрированной среде сценариев

    Если вы хотите упростить пользовательский интерфейс Visual Studio Code, чтобы он стал больше похож на интерфейс интегрированной среды сценариев, примените эти два параметра:

    Эти параметры позволяют скрыть разделы с панелью действий и боковой панелью отладки, которые очерчены красной линией на следующей иллюстрации.

    В итоге представление будет выглядеть так:

  • Заполнение нажатием клавиши TAB

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

  • Отсутствие фокуса в консоли во время выполнения

    Чтобы сохранить фокус в редакторе во время выполнения с помощью клавиши F8, выполните следующее.

    Значение по умолчанию устанавливается в соответствии с требованиями к поддержке специальных возможностей.

  • Интегрированную консоль не следует запускать при начальной загрузке

    Чтобы остановить запуск интегрированной консоли при начальной загрузке, установите следующий параметр.

    Примечание

    Фоновый процесс PowerShell все равно запустится, так как он предоставляет IntelliSense, анализ скриптов, навигацию по символам и т. д., но консоль не будет запущена.

  • Предположим, что по умолчанию файлы относятся к PowerShell

    Чтобы создать новые файлы без имени, по умолчанию следует зарегистрироваться в качестве PowerShell.

  • Цветовая схема

    Существует большое количество тем ISE, доступных для VS Code. Они позволяют сделать редактор более похожим на интегрированную среду скриптов.

    В введите , чтобы получить , а затем нажмите ВВОД. В раскрывающемся списке выберите .

    Эту тему можно установить в параметрах следующим образом.

  • Команды обозревателя PowerShell

    Благодаря работе, проделанной @corbob, теперь расширение PowerShell обладает начальными командами обозревателя.

    В введите и нажмите ВВОД.

  • Открытие в интегрированной среде сценариев

    Если вы хотите открыть файл в интегрированной среде скриптов Windows PowerShell, откройте , выполните поиск по запросу open in ise (Открыть в интегрированной среде скриптов) и выберите PowerShell: Open Current File in PowerShell ISE (Открыть текущий файл в интегрированной среде скриптов PowerShell).

Импорт модуля с Import-Module (PowerShell 2,0)

Для импорта модулей в PowerShell 2,0 используется командлет Import-Module с соответствующим именем. при запуске этого командлета Windows PowerShell ищет указанный модуль в каталогах, указанных в переменной. при обнаружении указанного каталога Windows PowerShell выполняет поиск файлов в следующем порядке: файлы манифеста модуля (. psd1), файлы модулей скриптов (. psm1), двоичные файлы модулей (.dll). Дополнительные сведения о добавлении каталогов в поиск см. в разделе about_PSModulePath.
В следующем примере кода показано, как импортировать модуль:

Если предположить, что она была размещена в , PowerShell загрузит myModule в активную память. Если она не была расположена по пути, можно по-прежнему указать PowerShell, где его найти:

Можно также использовать параметр, чтобы определить, что экспортируется из модуля и что импортируется в активную память. Экспорт и импорт ограничивают содержимое, доступное пользователю. разница заключается в том, кто управляет видимостью. По сути, экспорты управляются кодом внутри модуля. В отличие от этого, управление импортом осуществляется с помощью вызова. Дополнительные сведения см. в разделе запрещение импортируемых элементов ниже.

Неявный импорт модуля (PowerShell 3,0)

Начиная с Windows PowerShell 3.0, модули импортируются автоматически, когда любой командлет или любая функция из модуля используются в команде. Эта функция работает для любого модуля в каталоге, который включен в значение переменной среды PSModulePath . Если вы не сохраните модуль по действительному пути, вы по-прежнему можете загрузить их с помощью явного параметра Import-Module , описанного выше.

Следующие действия активируют автоматический импорт модуля, также известный как «Автоматическая загрузка модуля».

  • Использование командлета в команде. Например, при вводе импортируется модуль Microsoft. PowerShell. Security, содержащий командлет.

  • Использование командлета Get-Command для получения команды. Например, при вводе импортируется модуль PSScheduledJob , содержащий командлет. Команда, содержащая подстановочные знаки, считается обнаружением и не инициирует импорт модуля.

  • Использование командлета Get-Help для получения справки по командлету. Например, при вводе импортируется модуль Microsoft. PowerShell. Diagnostics, содержащий командлет.

Для поддержки автоматического импорта модулей командлет получает все командлеты и функции во всех установленных модулях, даже если модуль не импортируется в сеанс. Дополнительные сведения см. в разделе справки по командлету Get-Command .

How to write and edit text in the Script Pane

You can copy, cut, paste, find, and replace text in the Script Pane. You can also undo and redo the
last action you just performed. The keyboard shortcuts for these actions are the same shortcuts
used for all Windows applications.

To enter text in the Script Pane

  1. Move the cursor to the Script Pane by clicking anywhere in the Script Pane, or by clicking Go
    to Script Pane in the View menu.
  2. Create a script. Syntax coloring and tab completion provide a richer editing experience in
    Windows PowerShell ISE.
  3. See How to Use Tab Completion in the Script Pane and Console Pane
    for details about using the tab completion feature to help in typing.

To find text in the Script Pane

  1. To find text anywhere, press CTRL+F or, on the Edit menu, click Find
    in Script.
  2. To find text after the cursor, press F3 or, on the Edit menu, click Find Next in
    Script.
  3. To find text before the cursor, press SHIFT+F3 or, on the Edit menu,
    click Find Previous in Script.

To find and replace text in the Script Pane

Press CTRL+H or, on the Edit menu, click Replace in Script. Enter the
text you want to find and the replacement text, then press ENTER.

To copy text in the Script Pane

  1. In the Script Pane, select the text that you want to copy.

  2. Press CTRL+C or, on the toolbar, click the Copy icon, or on the
    Edit menu, click Copy.

To cut text in the Script Pane

  1. In the Script Pane, select the text that you want to cut.
  2. Press CTRL+X or, on the toolbar, click the Cut icon, or on the Edit
    menu, click Cut.

Процесс импорта

При импорте модуля для модуля создается новое состояние сеанса, а в памяти создается объект System. Management. Automation. PSModuleInfo . Состояние сеанса создается для каждого импортируемого модуля (включая корневой модуль и все вложенные модули). Элементы, экспортированные из корневого модуля, включая все элементы, экспортированные в корневой модуль любыми вложенными модулями, затем импортируются в состояние сеанса вызывающего.

Метаданные элементов, экспортированных из модуля, имеют свойство ModuleName. Это свойство заполняется именем модуля, в котором они были экспортированы.

Предупреждение

Если имя экспортированного элемента использует неутвержденную команду или если имя члена использует ограниченные символы, то при выполнении командлета Import-Module отображается предупреждение.

По умолчанию командлет Import-Module не возвращает ни одного объекта в конвейер. Однако командлет поддерживает параметр PassThru , который можно использовать для возврата объекта System. Management. Automation. PSModuleInfo для каждого импортируемого модуля. Для отправки выходных данных на узел Пользователи должны запустить командлет Write-Host .

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: