Глава 4. однострочные элементы кода и конвейеры

Импорт и экспорт

PowerShell позволяет импортировать и экспортировать данные в разных распространенных форматах, например, CSV или XML, а также перенаправлять вывод результата работы команды во внешний файл или на принтер.

  • Export-Csv – экспорт данных в формат CSV;
  • Import-Csv – импортирует данные из CSV файла;
  • Export-Clixml — экспорт данных в формат XML;
  • Import-Clixml — импортирует файл CLIXML и создает соответствующие объекты в оболочке Windows PowerShell;
  • Out-File — посылает вывод результата работы командлета во внешний файл (например, в TXT);
  • Out-Printer — вывод результата работы команды на принтер;
  • Import-Module — добавляет модули в текущей сессии.

Ручной режим начальной загрузки поставщика NuGet на автономный компьютер

В указанных выше случаях предполагается, что компьютер подключен к Интернету и может скачать файлы из общедоступного расположения. Если это невозможно, единственным вариантом является начальная загрузка на компьютере с помощью процессов, приведенных выше, и ручное копирование поставщика на изолированный узел с помощью автономного доверенного процесса. Наиболее распространенный случай использования такого сценария — это когда частная коллекция доступна для поддержки изолированной среды.

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

Структура папок или файлов поставщика NuGet будет следующей (возможно, с другим номером версии):

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

Установка модулей PowerShell из пакета NuGet

Примечание

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

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

Для этого необходимо выполнить следующие шаги:

  1. Разблокируйте скачанный из Интернета файл пакета NuGet (), например с помощью командлета .
  2. Извлечь содержимое пакета NuGet в локальную папку.
  3. Удалить характерные для NuGet элементы из папки.
  4. Переименовать папку. По умолчанию используется имя папки . Номер версии может содержать , если модуль помечен как предварительная версия. Задать для папки имя модуля. Например, преобразуется в .
  5. Скопируйте папку в одну из папок в .  — это набор разделенных точками с запятой путей, в которых оболочка PowerShell должна искать модули.

Важно!

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

Командлеты PowerShell для удаленного управления

С помощью Windows PowerShell можно выполнять команды не только на локальном компьютере, но и на одном или даже на нескольких удаленных компьютерах.

  • Enter-PSSession — запускает интерактивный сеанс с удаленным компьютером;
  • Exit-PSSession — завершает интерактивный сеанс с удаленным компьютером;
  • New-PSSession — создает постоянное подключение к локальному или удаленному компьютеру;
  • Remove-PSSession — закрывает один или несколько сеансов Windows PowerShell;
  • Disconnect-PSSession — отсоединяется от сеанса;
  • Connect-PSSession — подключается к отключенным сеансам;
  • Get-PSSession — получает сеансы Windows PowerShell на локальных и удаленных компьютерах;
  • Invoke-Command — выполняет команды на локальном и удаленных компьютерах.

Сохранение и отзыв последних расположений (Push-Location и Pop-Location)

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

Например, Windows PowerShell обычно запускается в корневом каталоге пользователя.

Примечание

Слово стек имеет специальное значение во многих параметрах программирования, включая .NET Framework.
Например, в физическом стеке элементов последний элемент, помещенный в стек, является первым элементом, который можно извлечь из него. Добавление элемента в стек в разговорной речи называется «проталкиванием» элемента в стек. Извлечение элемента из стека в разговорной речи называется «выводом» элемента из стека.

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

После этого можно передать расположение локальных параметров в стек и переместить его в папку Temp, введя следующее:

Чтобы убедиться, что каталоги изменены, введите команду :

После этого можно перейти в последний открытый каталог, введя команду , и проверить изменение, введя команду :

Как и в случае с командлетом , вы можете включить параметр PassThru при вводе командлета , чтобы открыть указанный каталог:

Кроме того, можно использовать командлеты расположения с сетевыми путями. Если у вас есть сервер FS01 с общей папкой Public, можно изменить расположение, введя

или

Для изменения расположения на любой доступный диск можно использовать команды и . Например, если у вас есть локальный дисковод компакт-дисков с буквой диска D, содержащий компакт-диск с данными, вы можете изменить расположение на дисковод компакт-дисков, введя команду .

Если дисковод пуст, вы получите следующее сообщение об ошибке:

Получение пакета с помощью скачивания вручную

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

Чтобы скачать пакет вручную, щелкните ссылку Скачать необработанный NUPKG-файл. Копия пакета копируется в папку загрузки с именем .

Пакет NuGet — это ZIP-архив с дополнительными файлами, содержащими сведения о содержимом пакета. Некоторые браузеры, например Internet Explorer, автоматически заменяют расширение на . Чтобы развернуть пакет, при необходимости переименуйте файл в , затем извлеките его содержимое в локальную папку.

Файл пакета NuGet содержит следующие характерные для NuGet элементы, которые не являются частью исходного упакованного кода:

  • Папка содержит файл со списком зависимостей.
  • Папка содержит характерные для NuGet данные.
  • Файл описывает работу расширений, например PowerShellGet, с помощью NuGet.
  • Файл содержит основной объем метаданных.

Работа с некоторыми интернет-приложениями офлайн

Изначально онлайновые приложения, такие как «Гугл документы», получили возможность работать в офлайн-режиме. Можно отметить, что это способствует здоровому соперничеству между создателями офисных приложений, прежде всего корпорациями Microsoft и Google, что должно повысить их конкурентоспособность.

Как включить офлайн-режим в «Гугл документах»? Этого возможно добиться, используя браузер Chrome или его открытый аналог Chromium. Открываем в нем свое «облако» в «Гугле» (Google Drive) — для этого нужен интернет, далее в панели навигации щелкаем по кнопке «Еще». Выбираем категорию «Автономные», в результате чего появится инструкция, в которой указано, что сначала нужно установить аддон для этих целей, после чего нажать кнопку доступа офлайн. Это приведет к тому, что файлы из «облака» будут скопированы на локальное устройство хранения. После этого можно отключать интернет и работать с «Гугл Документами» офлайн.

Таким образом, мы ответили на вопрос: «Как включить офлайн-режим в приложениях «Гугл Докс»?»

Подобным образом можно работать и с «Гугл картами». При нахождении в онлайн-режиме указывается область на карте, которая будет необходима при работе офлайн. Затем карта скачивается, и по данной области можно будет осуществлять поиск офлайн.

В мобильном телефоне офлайн-режим может быть включен не только полным отключением мобильной сети, но и отключением одного интернета с помощью снятия галочки с «Использования мобильных данных».

Используйте Документы без расширений

Часто конфликты с определенными расширениями могут вызывать всевозможные проблемы в Chrome. Если вы сталкиваетесь с периодически возникающими проблемами, когда Документы Google не работают должным образом в автономном режиме, попробуйте изолировать все проблемные расширения.

Для этого используйте Google Docs со всеми расширениями, кроме отключенного расширения Google Docs Offline. Перейдите на экран расширений (откройте меню Chrome, выберите Инструменты, а затем нажмите Расширения), чтобы отключить расширения.

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

Что делать, если IPv4 без доступа к интернету или без доступа к сети?

Для начала я советую выполнить несколько несложный рекомендаций, и попытаться определить причину:

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

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

Не исключено, что проблема у интернет-провайдера. Позвоните в поддержку своего провайдера и спросите.
Если у вас установлен роутер, и интернет не работает ни на одном устройстве, которое подключено через него, то причина в самом роутере, или провайдере. Звоним в поддержку и проверяем настройки роутера (после его перезагрузки). Если же интернет не работает только на одном компьютере, значит ищем причину на нем. Об этом ниже в статье.
Временно отключите антивирус.

Давайте рассмотрим несколько более серьезных решений.

Запускаем диагностику неполадок

Прямо в окне «Состояние» нажмите на кнопку «Диагностика».

Начнется «Диагностика неполадок», затем появится результат. Чаще всего удается найти вот такие ошибки:

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

  • DNS-сервер не отвечает, или «Параметры компьютера настроены правильно, но устройство или ресурс (DNS-сервер) не отвечает».
  • Шлюз, установленный по умолчанию, не доступен
  • Сетевой адаптер не имеет допустимых параметров настройки IP
  • На этом компьютере отсутствуют один или несколько сетевых протоколов

Если ошибка не была обнаружена, или советы из статьей по ссылкам выше вам не помогли, можно еще проверить настройки протокола TCP/IPv4.

Предупреждения и ошибки, связанные с модулем

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

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

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

Переменные среды PowerShell

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

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

  • PSExecutionPolicyPreference

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

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

    • Используйте командлет . Используйте параметр Scope со значением «Process».

      Подробнее см. в разделе about_Execution_Policies.

  • псмодулеаналисискачепас

    PowerShell обеспечивает контроль над файлом, используемым для кэширования данных о модулях и их командлетах. Кэш считывается при запуске во время поиска команды и записывается в фоновом потоке после импорта модуля.

    Расположение кэша по умолчанию:

    • Windows PowerShell 5.1: .
    • PowerShell 6,0 и более поздние версии:
    • значение по умолчанию не Windows:

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

    Примечание

    Если обнаружение команд работает неправильно, например, в IntelliSense отображаются несуществующие команды, можно удалить файл кэша. Кэш создается повторно при следующем запуске PowerShell.

    Чтобы изменить расположение кэша по умолчанию, задайте переменную среды перед запуском PowerShell. Изменения этой переменной среды влияют только на дочерние процессы. Значение должно быть полным путем (включая имя файла), на создание и запись файлов по которому у среды PowerShell есть разрешение.

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

    Это задает путь к устройству NUL . PowerShell не удается выполнить запись в путь, но ошибка не возвращается. Вы можете увидеть ошибки, о которых сообщили с помощью трассировки:

  • псдисаблемодулеаналисискачеклеануп

    При вызаписи кэша анализа модуля PowerShell проверяет наличие модулей, которые больше не существуют, чтобы избежать необязательного большого объема кэша. Иногда эти проверки нежелательны. в этом случае их можно отключить, задав для этого значения переменной среды значение .

    Установка этой переменной среды вступает в силу немедленно в текущем процессе.

  • PSModulePath

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

    По умолчанию действующие расположения, назначенные, являются:

    • Расположения на уровне системы. Эти папки содержат модули, поставляемые с PowerShell. Модули хранятся в расположении. кроме того, это расположение, в котором устанавливаются модули управления Windows.

    • Модули, установленные пользователем: это модули, установленные пользователем.
      имеет параметр области , который позволяет указать, установлен ли модуль для текущего пользователя или для всех пользователей. Дополнительные сведения см. в разделе Install-Module.

      • в Windows расположением определяемой пользователем области CurrentUser является папка. Областью ALLUSERS является расположение .
      • в системах, отличных от Windows, расположением определенной пользователем области CurrentUser является папка. Областью ALLUSERS является расположение .

    Кроме того, программы установки, устанавливающие модули в других каталогах, например каталог Program Files, могут добавлять свои расположения к значению .

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

  • POWERSHELL_UPDATECHECK

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

    • отключает функцию уведомления об обновлении
    • то же самое, что не определяет :
      • В общедоступных выпусках выводятся уведомления об обновлениях для общедоступных выпусков.
      • В предварительных выпусках и релизах-кандидатах выводятся уведомления об обновлениях для общедоступных и предварительных выпусков.
    • уведомления об обновлениях только для выпусков долгосрочного обслуживания (LTS)

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

  • POWERSHELL_TELEMETRY_OPTOUT

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

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

Windows Service Control Manager

Службы управляются Windows Service Control Manager (SCM). SCM отвечает за конфигурирование служб, их запуск и остановку и т. д.

Панель управления SCM доступна через Control Panel | System and Security | Administrative Tools | Services. Как показано на рис. 1, она отображает список всех сконфигурированных служб с их названиями, описаниями, состоянием, типом запуска и именем пользователя.

Рис. 1. Windows Service Control Manager GUI в Windows 10

Для SCM также имеются интерфейсы командной строки.

  • Старая утилита net.exe с хорошо известными командами net start и net stop, корнями уходящая аж в MS-DOS! Несмотря на такое название, ее можно использовать для запуска и остановки любой службы, а не только сетевых служб. Введите net help, чтобы получить подробное описание.
  • Более мощная утилита, sc.exe, введенная в Windows NT, дает тонкий контроль над всеми аспектами управления службами. Введите sc /?, чтобы получить подробное описание.

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

Подвох Как net.exe, так и sc.exe используют «короткие» имена служб в одно слово, которые, к сожалению, не совпадают с более описательными названиями, отображаемыми в панели управления SCM. Чтобы получить соответствие между двумя именами, используйте команду get-service из Windows PowerShell.

Работа с фоновыми заданиями

В Windows PowerShell есть возможность запускать задачи в фоновом режиме, для того чтобы, не дожидаясь окончания работы команды (для случаев, когда задача выполняется долго), продолжать работать в текущей сессии. Для работы с фоновыми заданиями в PowerShell есть следующие командлеты:

  • Start-Job – запустить фоновую задачу;
  • Stop-Job – остановить фоновую задачу
  • Get-Job – посмотреть список фоновых задач;
  • Receive-Job – посмотреть результат выполнения фоновой задачи;
  • Remove-Job – удалить фоновую задачу;
  • Wait-Job – перевести фоновую задачу на передний план, для того чтобы дожидаться ее окончания.

Перечисление файлов, папок и разделов реестра (Get-ChildItem)

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

Если необходимо вернуть все файлы и папки, которые находятся непосредственно в папке C:\Windows, введите:

Списки выглядят аналогично тем спискам, которые появляются при вводе команды в Cmd.exe или команды в командной оболочке UNIX.

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

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

Перечисление всех элементов в контейнере (-Recurse)

Чтобы увидеть оба элемента в папке Windows и все элементы во вложенных папках, используйте параметр Recurse для . В списке отображается все, что находится в папке Windows, а также элементы в ее вложенных папках. Пример:

Принудительное перечисление скрытых элементов (-Force)

В выходных данных команды не отображаются элементы, которые обычно невидимы в проводнике или Cmd.exe. Чтобы показать скрытые элементы, используйте параметр Force для .
Пример:

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

Сопоставление имен элементов с подстановочными знаками

Команда принимает подстановочные знаки в пути к элементам списка.

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

  • Звездочка () соответствует нулю или большему количеству вхождений любого символа.

  • Знак вопроса () соответствует ровно одному символу.

  • Открывающая квадратная скобка () и закрывающая квадратная скобка () заключают в себя набор символов для сопоставления.

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

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

Чтобы найти в каталоге Windows все файлы с именами, начинающимися на букву , введите следующее.

Чтобы найти все файлы с именами, начинающимися на x или z, введите следующее.

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

Исключение элементов (-Exclude)

Вы можете исключить определенные элементы с помощью параметра Exclude для . Это позволит вам выполнить сложную фильтрацию в одном операторе.

Например, вы пытаетесь найти библиотеку службы времени Windows в папке System32 и все, что вам известно об имени библиотеки, — то, что оно начинается с W и содержит 32.

Такое выражение, как , найдет все библиотеки DLL, которые отвечают этим условиям, но вам может потребоваться дополнительно отфильтровать файлы и пропустить все файлы win32. Эти файлы можно пропустить с помощью параметра Exclude с шаблоном .

Смешение параметров Get-ChildItem

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

Результаты отсутствуют, даже если существуют две библиотеки, которые начинаются на букву z в папке Windows.

Результаты не возвращены, так как подстановочный знак указан как часть пути. Хотя команда и была рекурсивной, командлет ограничил элементы до тех, которые находятся в папке Windows с именами, заканчивающимися на .

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

Установка средств администрирования RSAT в Windows 10 1809 с помощью PowerShell | Windows для систем

После обновления Windows 10 на моем компьютере с 1803 до 1809 (October Update) пропали установленные инструменты удаленного администрирования серверов RSAT (это всегда происходит при обновлении билда Win10, см. статью). Я как всегда собрался скачать и установить последнюю версию RSAT со страницы загрузки Microsoft, однако оказалось что на страницы загрузки висит следующая надпись

IMPORTANT: Starting with Windows 10 October 2018 Update, RSAT is included as a set of «Features on Demand» in Windows 10 itself.

Как оказалось, в Microsoft решили, что начиная с Windows 10 1809 (17763) теперь не нужно качать последнюю версию RSAT с сайта Майкрософт. Теперь пакет Remote Server Administration Tools встроен в образ Windows 10 и устанавливается в виде отдельной опции (функции по требованию). Установка RSAT возможно из приложения Параметры.

Чтобы установить RSAT в Windows 10 1809, нужно перейти в раздел Settings -> Apps -> Manage Optional Features -> Add a feature. Здесь вы можете выбрать и установить конкретные инструменты из пакета RSAT.

Однако на другом корпоративном компьютере с Windows 10 Enterprise, также обновленном до версии1809, список дополнительных опций оказался пуст. Единственный способ установить RSAT в таком случае – воспользоваться PowerShell. Рассмотрим как установить RSAT в Windows 10 1809 из командной строки PowerShell.

С помощью следующей команды можно проверить, установлены ли компоненты RSAT в вашем компьютере:

Можно представить статус установленных компонентов RSAT в более удобной таблице:

Как вы видите, компоненты RSAT не установлены (NotPresent).

Для установки данных опций Windows можно использовать командлет Add-WindowsCapacity.

Чтобы установить конкретный инструмент RSAT, например инструменты управления AD (в том числе консоль ADUC), выполните команду:

Для установки консоли управления DNS, выполните:

И т.д.

Чтобы установить сразу все доступные инструменты RSAT, выполните:

Чтобы доставить только отключенные компоененты RSAT, выоплните:

Теперь убедитесь, что инструменты RSAT установлены (статус Installed);

После этого установленные инструменты RSAT отобразятся в панели Manage Optional Features.

Если при установке RSAT вы столкнетесь с ошибкой Add-WindowsCapability failed. Error code = 0x800f0954, скорее всего ваш компьютер настроен на получение обновлений со внутреннего WSUS/SUP сервера.

Для установки компонентов RSAT из GUI нужно изменить временно отключить обновление со WSUS сервера в реестре (HKLMSOFTWAREPoliciesMicrosoftWindowsWindowsUpdateAU параметр UseWUServer= 0) и перезапустить службу обновления.

Можно воспользоваться таким скриптом:

Форматирование в Windows PowerShell

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

  • Format-List – вывод результата команды в формате списка свойств, где на каждой новой строке отдельное свойство;
  • Format-Table — вывод результата команды в виде таблицы;
  • Format-Wide — вывод результата команды в виде широкой таблицы, в которой отображается только одно свойство каждого объекта;
  • Format-Custom – в данном случае форматирование вывода происходит с использованием пользовательского представления.

Конфликты модулей и имен

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

Конфликты имен могут возникать в результате скрытия или замены команд.

Скрытый

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

Замененный текст

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

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

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

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

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

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

Даже если команда скрыта, можно выполнить ее, указав (помимо ее имени) имя модуля или оснастки, из которой она добавлена.

Правила очередности команд PowerShell определяют, какие команды выполняются, когда сеанс включает команды с тем же именем.

Например, если сеанс включает функцию и командлет с тем же именем, по умолчанию PowerShell выполняет эту функцию. Если сеанс содержит команды одинакового типа (например, два командлета) с одинаковым именем, по умолчанию выполняется команда, добавленная последней.

Дополнительные сведения, включая описание правил приоритета и инструкции по выполнению скрытых команд, см. в разделе about_Command_Precedence.

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

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