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

Обновлено: 23.11.2024

Несмотря на то, что были приложены все усилия для соблюдения правил стиля цитирования, могут быть некоторые расхождения. Если у вас есть какие-либо вопросы, обратитесь к соответствующему руководству по стилю или другим источникам.

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

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

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

Компьютеры размещают веб-сайты, состоящие из HTML, и отправляют текстовые сообщения так же просто, как. РЖУ НЕ МОГУ. Взломайте этот тест, и пусть какая-нибудь технология подсчитает ваш результат и раскроет вам его содержание.

Типы языков

Машинные и ассемблерные языки

Машинный язык состоит из числовых кодов операций, которые конкретный компьютер может выполнять напрямую. Коды представляют собой строки из нулей и единиц или двоичные цифры («биты»), которые часто преобразуются как из шестнадцатеричной системы счисления, так и в шестнадцатеричную (с основанием 16) для просмотра и модификации человеком. Инструкции машинного языка обычно используют некоторые биты для представления операций, таких как сложение, и некоторые для представления операндов или, возможно, местоположения следующей инструкции. Машинный язык трудно читать и писать, так как он не похож на обычную математическую запись или человеческий язык, а его коды различаются от компьютера к компьютеру.

Язык ассемблера на один уровень выше машинного языка. Он использует короткие мнемонические коды для инструкций и позволяет программисту вводить имена для блоков памяти, которые содержат данные. Таким образом, вместо «0110101100101000» можно написать «добавить оплату, всего» для инструкции, которая складывает два числа.

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

Алгоритмические языки

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

ФОРТРАН

Первым важным алгоритмическим языком был FORTRAN (formula translation), разработанный в 1957 году группой IBM под руководством Джона Бэкуса. Он был предназначен для научных вычислений с вещественными числами и их коллекциями, организованными в виде одномерных или многомерных массивов. Его управляющие структуры включали условные операторы IF, повторяющиеся циклы (так называемые циклы DO) и оператор GOTO, который допускал непоследовательное выполнение программного кода. FORTRAN упростил использование подпрограмм для общих математических операций и создал их библиотеки.

FORTRAN также был разработан для перевода на эффективный машинный язык. Он сразу стал успешным и продолжает развиваться.

АЛГОЛ

АЛГОЛ (алгоритмический, lязык) был разработан комитетом американских и европейских ученых-компьютерщиков в 1958–1960 годах для публикации алгоритмов, а также для выполнения вычислений. Подобно LISP (описанному в следующем разделе), ALGOL имел рекурсивные подпрограммы — процедуры, которые могли вызывать сами себя для решения проблемы, сводя ее к меньшей задаче того же типа. Алгол представил блочную структуру, в которой программа состоит из блоков, которые могут содержать как данные, так и инструкции и иметь ту же структуру, что и вся программа.Блочная структура стала мощным инструментом для создания больших программ из небольших компонентов.

ALGOL предоставил нотацию для описания структуры языка программирования, форму Бэкуса-Наура, которая в некоторых вариантах стала стандартным инструментом для определения синтаксиса (грамматики) языков программирования. Алгол широко использовался в Европе и в течение многих лет оставался языком, на котором публиковались компьютерные алгоритмы. Его потомками являются многие важные языки, такие как Паскаль и Ада (оба описаны ниже).

Язык программирования C был разработан в 1972 году Деннисом Ритчи и Брайаном Керниганом в корпорации AT&T для программирования компьютерных операционных систем. Его способность структурировать данные и программы посредством составления более мелких единиц сравнима с возможностями Алгола. Он использует компактную запись и предоставляет программисту возможность оперировать как с адресами данных, так и с их значениями. Эта способность важна в системном программировании, и язык C разделяет с языком ассемблера способность использовать все возможности внутренней архитектуры компьютера. C, наряду с его потомком C++, остается одним из самых распространенных языков.

Бизнес-ориентированные языки

КОБОЛ

COBOL (комоно, ббизнес, оориентированный яязык) активно использовался предприятиями с момента его в 1959 году. Комитет производителей и пользователей компьютеров и правительственных организаций США учредил CODASYL (Комитет по Данныета, системы и языков) для разработки языкового стандарта и контроля за ним, чтобы обеспечить его переносимость между различными системами.

COBOL использует нотацию, похожую на английскую, но новую при введении. Бизнес-вычисления организуют и обрабатывают большие объемы данных, и COBOL представил структуру данных записи для таких задач. Запись объединяет разнородные данные, такие как имя, идентификационный номер, возраст и адрес, в единый элемент. Это контрастирует с научными языками, в которых распространены однородные массивы чисел. Записи — это важный пример «объединения» данных в единый объект, и они есть почти во всех современных языках.

Tэта страница содержит примеры ответов на тест по главе 1 книги Введение в программирование с использованием Java. Обратите внимание, что обычно существует множество правильных ответов на заданный вопрос.

Одним из компонентов компьютера является его ЦП. Что такое ЦП и какую роль он играет в компьютере?

ЦП или центральный процессор — это активная часть компьютера. Его функция заключается в выполнении программ, написанных на машинном языке и хранящихся в основной памяти (ОЗУ) компьютера. Он делает это, повторяя цикл выборки и выполнения снова и снова; то есть он многократно извлекает инструкцию машинного языка из памяти и выполняет ее.

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

Асинхронное событие — это событие, которое происходит в непредсказуемое время вне контроля программы, запущенной ЦП. Он не "синхронизируется" с программой. Например, когда пользователь нажимает клавишу на клавиатуре или щелкает кнопку мыши. (Эти события генерируют «прерывания», которые заставляют ЦП прерывать свою работу и предпринимать некоторые действия для обработки асинхронного события. После обработки события ЦП возвращается к тому, что он делал до того, как оно было прервано.)

В чем разница между "компилятором" и "интерпретатором"?

Компиляторы и интерпретаторы имеют схожие функции: они берут программу, написанную на некотором языке программирования, и переводят ее на машинный язык. Компилятор выполняет перевод сразу. Он создает полную программу на машинном языке, которую затем можно выполнить. Интерпретатор, с другой стороны, просто переводит одну инструкцию за раз, а затем немедленно выполняет эту инструкцию. (Java использует компилятор для перевода программ Java в байт-код Java, который является машинным языком для воображаемой виртуальной машины Java. Затем программы байт-кода Java выполняются интерпретатором.)

Объясните разницу между языками высокого уровня и машинным языком.

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

Если у вас есть исходный код программы Java и вы хотите запустить эту программу, вам потребуются как компилятор, так и интерпретатор. Что делает Java компилятор и что делает интерпретатор Java?

Компилятор Java переводит программы Java на язык, называемый байт-кодом Java.Хотя байт-код похож на машинный язык, он не является машинным языком реального компьютера. Интерпретатор Java используется для запуска скомпилированной программы байт-кода Java. (Каждому типу компьютеров требуется свой собственный интерпретатор байт-кода Java, но все эти интерпретаторы интерпретируют один и тот же язык байт-кода.)

Что такое подпрограмма?

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

Java – это объектно-ориентированный язык программирования. Что такое объект?

Объект состоит из некоторых данных вместе с набором подпрограмм, которые манипулируют этими данными. (Объект — это своего рода «модуль» или автономный объект, который взаимодействует с остальным миром через четко определенный интерфейс. Объект должен представлять некоторую связную концепцию или объект реального мира.)

Что такое переменная? (Есть четыре различных понятия, связанных с переменными в Java. Постарайтесь упомянуть все четыре аспекта в своем ответе. Подсказка: один из аспектов — это имя переменной.)< /p>

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

Java — это "платформенно-независимый язык". Что это значит?

Программу Java можно один раз скомпилировать в программу Java Bytecode. Затем скомпилированную программу можно запустить на любом компьютере, на котором есть интерпретатор виртуальной машины Java. Другие языки должны быть перекомпилированы для каждой платформы, на которой они будут работать. Суть Java в том, что ее можно выполнять на самых разных компьютерах без перекомпиляции.

Что такое "Интернет"? Приведите несколько примеров его использования. (Какие услуги он предоставляет?)

Интернет – это сеть, объединяющая миллионы компьютеров по всему миру. Компьютеры, подключенные к Интернету, могут взаимодействовать друг с другом. Интернет можно использовать для электронной почты (которая позволяет пользователю одного компьютера отправить сообщение пользователю другого компьютера), обмена файлами (который используется для копирования файлов между компьютерами) и всемирной паутины (которая позволяет пользователю просматривать "страницы" информации, опубликованные на компьютерах по всему миру).

Смотреть сейчас Это руководство содержит связанный с ним видеокурс, созданный командой Real Python. Посмотрите его вместе с письменным учебным пособием, чтобы углубить свое понимание: Модули и пакеты Python: введение

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

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

Существует несколько преимуществ модуляризации кода в большом приложении:

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

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

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

Область действия. Модули обычно определяют отдельное пространство имен, что помогает избежать конфликтов между идентификаторами в разных областях программы. (Один из принципов дзен Python: Пространства имен — это отличная идея — давайте сделаем больше таких!)

Функции, модули и пакеты — это конструкции Python, способствующие модульности кода.

Бесплатная загрузка в формате PDF: шпаргалка по Python 3

Модули Python: обзор

На самом деле существует три разных способа определения модуля в Python:

  1. Модуль можно написать на самом Python.
  2. Модуль можно написать на C и загрузить динамически во время выполнения, как модуль re (регулярное выражение).
  3. Встроенный модуль встроен в интерпретатор, как и модуль itertools.

Доступ к содержимому модуля осуществляется одинаково во всех трех случаях: с помощью оператора импорта.

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

Например, предположим, что вы создали файл с именем mod.py, содержащий следующее:

Несколько объектов определены в mod.py:

  • s (строка)
  • а (список)
  • foo() (функция)
  • Foo (класс)

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

Путь поиска модуля

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

Когда интерпретатор выполняет приведенный выше оператор импорта, он ищет mod.py в списке каталогов, собранных из следующих источников:

  • Каталог, из которого был запущен входной скрипт, или текущий каталог, если интерпретатор запускается в интерактивном режиме
  • Список каталогов, содержащихся в переменной среды PYTHONPATH, если она задана. (Формат PYTHONPATH зависит от ОС, но должен имитировать переменную среды PATH.)
  • Зависящий от установки список каталогов, настроенный во время установки Python

Результирующий путь поиска доступен в переменной Python sys.path , полученной из модуля с именем sys :

Примечание. Точное содержимое sys.path зависит от установки. Приведенное выше почти наверняка будет выглядеть немного иначе на вашем компьютере.

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

  • Поместите mod.py в каталог, где находится входной скрипт, или в текущий каталог, если он интерактивный.
  • Измените переменную среды PYTHONPATH, чтобы она содержала каталог, в котором находится mod.py, перед запуском интерпретатора
    • Или: поместите mod.py в один из каталогов, уже содержащихся в переменной PYTHONPATH.

    На самом деле существует еще один дополнительный вариант: вы можете поместить файл модуля в любой каталог по вашему выбору, а затем изменить sys.path во время выполнения, чтобы он содержал этот каталог. Например, в этом случае вы можете поместить mod.py в каталог C:\Users\john, а затем выполнить следующие инструкции:

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

    Каталог __file__ должен быть одним из каталогов в sys.path .

    Заявление об импорте

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

    импорт

    Самая простая форма уже показана выше:

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

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

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

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

    Но s и foo остаются в частной таблице символов модуля и не имеют значения в локальном контексте:

    Для доступа в локальном контексте имена объектов, определенных в модуле, должны начинаться с префикса mod :

    В одном операторе импорта можно указать несколько модулей, разделенных запятыми:

    из импорта

    Альтернативная форма оператора импорта позволяет импортировать отдельные объекты из модуля непосредственно в таблицу символов вызывающего объекта:

    После выполнения приведенного выше оператора на него можно ссылаться в среде вызывающего объекта без префикса:

    Поскольку эта форма импорта помещает имена объектов непосредственно в таблицу символов вызывающего объекта, любые уже существующие объекты с таким именем будут перезаписаны:

    Можно даже без разбора импортировать все из модуля одним махом:

    Это поместит имена всех объектов из в локальную таблицу символов, за исключением тех, которые начинаются с символа подчеркивания ( _ ).

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

    из импорта как

    Также можно импортировать отдельные объекты, но вводить их в локальную таблицу символов с альтернативными именами:

    Это позволяет размещать имена непосредственно в локальной таблице символов, избегая при этом конфликтов с ранее существовавшими именами:

    импортировать как

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

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

    Однако Python 3 не допускает неразборчивого синтаксиса импорта * из функции:

    Наконец, оператор try с предложением exclude ImportError можно использовать для защиты от неудачных попыток импорта:

    Функция dir()

    Встроенная функция dir() возвращает список определенных имен в пространстве имен. Без аргументов он создает отсортированный по алфавиту список имен в текущей локальной таблице символов:

    Обратите внимание, что первый вызов dir() выше перечисляет несколько имен, которые определены автоматически и уже находятся в пространстве имен при запуске интерпретатора. По мере определения новых имен (qux, Bar, x) они появляются при последующих вызовах dir().

    Это может быть полезно для определения того, что именно было добавлено в пространство имен оператором импорта:

    Когда аргументом является имя модуля, dir() выводит список имен, определенных в модуле:

    Выполнение модуля как скрипта

    Любой файл .py, содержащий модуль, по сути, также является скриптом Python, и нет никаких причин, по которым он не может быть выполнен как скрипт.

    Здесь снова находится mod.py, как было определено выше:

    Это можно запустить как скрипт:

    Ошибок нет, значит, все заработало. Согласитесь, это не очень интересно. Как написано, он только определяет объекты. Он ничего не делает с ними и не генерирует никаких выходных данных.

    Давайте изменим приведенный выше модуль Python, чтобы он генерировал некоторый вывод при запуске в виде скрипта:

    Теперь должно быть немного интереснее:

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

    Возможно, это не то, что вам нужно. Обычно модуль не генерирует выходные данные при импорте.

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

    Просите, и вам будет дано.

    Когда файл .py импортируется как модуль, Python присваивает специальной переменной dunder __name__ имя модуля. Однако, если файл запускается как отдельный скрипт, __name__ (творчески) устанавливается в строку '__main__' . Используя этот факт, вы можете определить, что имеет место во время выполнения, и соответствующим образом изменить поведение:

    Теперь, если вы запустите скрипт, вы получите результат:

    Но если вы импортируете как модуль, вы не будете:

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

    fact.py

    Файл можно рассматривать как модуль, а функцию fact() импортировать:

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

    Перезагрузка модуля

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

    Рассмотрите следующий файл mod.py :

    Операция print() не выполняется при последующем импорте. (Если уж на то пошло, то и оператор присваивания не является, но, как показывает финальное отображение значения mod.a, это не имеет значения. Как только присваивание выполнено, оно сохраняется.)

    Если вы вносите изменения в модуль и вам нужно перезагрузить его, вам нужно либо перезапустить интерпретатор, либо использовать функцию reload() из модуля importlib:

    Пакеты Python

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

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

    Создать пакет довольно просто, так как он использует присущую операционной системе иерархическую файловую структуру. Рассмотрим следующую схему:

    Объясняет, как устанавливать, импортировать и использовать модули PowerShell.

    Подробное описание

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

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

    В этом разделе объясняется, как использовать модули PowerShell. Сведения о том, как писать модули PowerShell, см. в разделе Написание модуля PowerShell.

    Что такое модуль?

    Модуль — это пакет, содержащий элементы PowerShell, такие как командлеты, поставщики, функции, рабочие процессы, переменные и псевдонимы. Члены этого пакета могут быть реализованы в сценарии PowerShell, скомпилированной библиотеке DLL или в комбинации того и другого. Эти файлы обычно группируются в одном каталоге. Дополнительные сведения см. в разделе Общие сведения о модуле Windows PowerShell в документации SDK.

    Автозагрузка модуля

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

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

    В каждом из следующих примеров модуль CimCmdlets, содержащий Get-CimInstance , импортируется в ваш сеанс.

    Выполнить команду

    Получить команду

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

    Команды Get-Command, содержащие подстановочный знак ( * ), считаются предназначенными для обнаружения, а не для использования и не импортируют никаких модулей.

    Автоматически импортируются только модули, хранящиеся в расположении, указанном переменной среды PSModulePath. Модули в других местах необходимо импортировать с помощью командлета Import-Module.

    Кроме того, команды, использующие поставщиков PowerShell, не импортируют модуль автоматически. Например, если вы используете команду, для которой требуется диск WSMan:, например командлет Get-PSSessionConfiguration, вам может потребоваться запустить командлет Import-Module, чтобы импортировать модуль Microsoft.WSMan.Management, включающий диск WSMan:.< /p>

    Вы по-прежнему можете запускать команду Import-Module для импорта модуля и использовать переменную $PSModuleAutoloadingPreference для включения, отключения и настройки автоматического импорта модулей. Дополнительные сведения см. в разделе about_Preference_Variables.

    Как использовать модуль

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

    1. Установите модуль. (Это часто делается для вас.)
    2. Найдите команды, добавленные модулем.
    3. Используйте команды, добавленные модулем.

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

    Как установить модуль

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

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

    Используйте следующую команду, чтобы создать каталог модулей для текущего пользователя:

    Скопируйте всю папку модуля в папку Modules. Вы можете использовать любой метод для копирования папки, включая Windows Explorer и Cmd.exe, а также PowerShell.В PowerShell используйте командлет Copy-Item. Например, чтобы скопировать папку MyModule из C:\ps-test\MyModule в каталог Modules, введите:

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

    Как найти установленные модули

    Чтобы найти модули, которые установлены в расположение модулей по умолчанию, но еще не импортированы в ваш сеанс, введите:

    Чтобы найти модули, которые уже были импортированы в ваш сеанс, в командной строке PowerShell введите:

    Дополнительную информацию о командлете Get-Module см. в разделе Get-Module.

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

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

    Чтобы найти все команды в модуле, введите:

    Например, чтобы найти команды в модуле BitsTransfer, введите:

    Дополнительную информацию о командлете Get-Command см. в разделе Get-Command.

    Как получить справку по командам в модуле

    Если модуль содержит файлы справки для экспортируемых им команд, командлет Get-Help отобразит разделы справки. Используйте тот же формат команды Get-Help, что и для получения справки по любой команде в PowerShell.

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

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

    Чтобы получить онлайн-справку по команде в модуле, введите:

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

    Дополнительную информацию см. в разделах Get-Help и Update-Help.

    Как импортировать модуль

    Возможно, вам придется импортировать модуль или импортировать файл модуля. Импорт необходим, если модуль не установлен в местах, указанных переменной среды PSModulePath, $env:PSModulePath, или модуль состоит из файла, например файла .dll или .psm1, вместо обычного модуля, поставляемого в виде папка.

    Вы также можете импортировать модуль, чтобы использовать параметры команды Import-Module, такие как параметр Prefix, который добавляет отличительный префикс к именам существительных всех импортируемых команд, или параметр NoClobber, что не позволяет модулю добавлять команды, которые скрывают или заменяют существующие команды в сеансе.

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

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

    Например, следующая команда импортирует модуль BitsTransfer в текущий сеанс.

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

    Например, чтобы добавить в сеанс модуль TestCmdlets из каталога C:\ps-test, введите:

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

    Например, чтобы добавить в сеанс модуль TestCmdlets.dll из каталога C:\ps-test, введите:

    Дополнительную информацию о добавлении модулей в сеанс см. в разделе Import-Module.

    Как импортировать модуль в каждую сессию

    Команда Import-Module импортирует модули в текущий сеанс PowerShell. Чтобы импортировать модуль в каждый запускаемый вами сеанс PowerShell, добавьте команду Import-Module в свой профиль PowerShell.

    Дополнительную информацию о профилях см. в разделе about_Profiles.

    Как удалить модуль

    При удалении модуля добавленные им команды удаляются из сеанса.

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

    Например, следующая команда удаляет модуль BitsTransfer из текущего сеанса.

    Удаление модуля меняет операцию импорта модуля. Удаление модуля не удаляет модуль. Дополнительные сведения см. в разделе Remove-Module.

    Расположения модулей и ресурсов DSC, а также PSModulePath

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

    Расположения в системе: $PSHOME\Modules

    Эти папки содержат модули, поставляемые с Windows и PowerShell.

    Ресурсы DSC, включенные в PowerShell, хранятся в папке $PSHOME\Modules\PSDesiredStateConfiguration\DSCResources.

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

    Местоположение CurrentUser для конкретного пользователя в Windows — это папка PowerShell\Modules, расположенная в папке Documents в вашем профиле пользователя. Конкретный путь к этому местоположению зависит от версии Windows и от того, используете ли вы перенаправление папок. Microsoft OneDrive также может изменить расположение папки «Документы».

    По умолчанию в Windows 10 и более поздних версиях это расположение $HOME\Documents\PowerShell\Modules . В Linux или Mac расположение CurrentUser — $HOME/.local/share/powershell/Modules .

    Вы можете проверить расположение папки "Документы" с помощью следующей команды: [Environment]::GetFolderPath('MyDocuments') .

    Расположение AllUsers: $env:PROGRAMFILES\PowerShell\Modules в Windows. В Linux или Mac модули хранятся в /usr/local/share/powershell/Modules .

    Чтобы добавить или изменить файлы в каталоге $env:Windir\System32, запустите PowerShell с параметром «Запуск от имени администратора».

    Вы можете изменить расположение модулей по умолчанию в вашей системе, изменив значение переменной среды PSModulePath, $Env:PSModulePath . Переменная среды PSModulePath создана на основе переменной среды Path и имеет тот же формат.

    Чтобы просмотреть расположение модулей по умолчанию, введите:

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

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

    Например, чтобы добавить каталог C:\ps-test\Modules, введите:

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

    Например, чтобы добавить каталог /usr/local/Fabrikam/Modules в значение переменной среды PSModulePath, введите:

    В Linux или MacOS двоеточие ( : ) в команде отделяет новый путь от пути, предшествующего ему в списке.

    При добавлении пути к PSModulePath команды Get-Module и Import-Module включают модули в этот путь.

    Установленное значение влияет только на текущий сеанс. Чтобы сделать изменение постоянным, добавьте команду в свой профиль PowerShell или используйте «Система» на панели управления, чтобы изменить значение переменной среды PSModulePath в реестре.

    Кроме того, чтобы сделать изменение постоянным, вы также можете использовать метод SetEnvironmentVariable класса System.Environment, чтобы добавить путь к переменной среды PSModulePath.

    Дополнительную информацию о переменной PSModulePath см. в разделе about_Environment_Variables.

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

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

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

    Скрыто

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

    Заменено

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

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

    Чтобы обнаружить конфликты имен, используйте параметр All командлета Get-Command. Начиная с PowerShell 3.0 командлет Get-Command получает только те команды, которые запускаются при вводе имени команды. Параметр All получает все команды с определенным именем в сеансе.

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

    Вы также можете использовать параметры Alias, Cmdlet, Function и Variable командлета Import-Module, чтобы выбрать только те команды, которые вы хотите импортировать, и вы можете исключить команды, которые вызывают конфликты имен в вашем сеансе.

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

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

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

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

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

    Модули и оснастки

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

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

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

    Например, чтобы найти источник командлета Get-Date, введите:

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

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

    ВНИМАНИЕ! Некоторые импортированные имена команд содержат неутвержденные глаголы, что может сделать их менее заметными. Используйте параметр Verbose для получения более подробной информации или введите Get-Verb, чтобы просмотреть список разрешенных команд.

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

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

    Встроенные модули и оснастки

    В PowerShell 2.0 и в хост-программах старого стиля в PowerShell 3.0 и более поздних версиях основные команды, устанавливаемые вместе с PowerShell, упакованы в оснастки, которые автоматически добавляются в каждый сеанс PowerShell.

    Начиная с PowerShell 3.0, для хост-программ, которые реализуют API состояния начального сеанса InitialSessionState.CreateDefault2, оснастка Microsoft.PowerShell.Core добавляется к каждому сеансу по умолчанию. Модули загружаются автоматически при первом использовании.

    Удаленные сеансы, в том числе сеансы, запускаемые с помощью командлета New-PSSession, представляют собой сеансы старого типа, в которых встроенные команды упакованы в оснастки.

    Следующие модули (или оснастки) устанавливаются вместе с PowerShell.

    • CimCmdlets
    • Microsoft.PowerShell.Архив
    • Microsoft.PowerShell.Core
    • Microsoft.PowerShell.Diagnostics
    • Microsoft.PowerShell.Host
    • Microsoft.PowerShell.Management
    • Microsoft.PowerShell.Security
    • Microsoft.PowerShell.Утилита
    • Microsoft.WSMan.Management
    • Управление пакетами
    • PowerShellGet
    • PSDesiredStateConfiguration
    • PSDДиагностика
    • PSReadline

    Регистрация событий модуля

    Начиная с PowerShell 3.0, вы можете записывать события выполнения командлетов и функций в модулях и оснастках PowerShell, задав для свойства LogPipelineExecutionDetails модулей и оснасток значение $True . Вы также можете использовать параметр групповой политики «Включить ведение журнала модуля», чтобы включить ведение журнала модуля во всех сеансах PowerShell. Дополнительные сведения см. в статьях о ведении журналов и групповых политиках.

    Читайте также: