Что такое windows powershell и с чем его едят? часть 3: передача параметров в скрипты и функции, создание командлетов

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

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

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

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

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

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

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

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

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

Параметры групповая политика PowerShell находятся в следующих групповая политика путях:

Параметры групповой политики в пути конфигурации пользователя имеют приоритет над параметрами групповая политика в пути конфигурации компьютера.

В PowerShell 7 предусмотрены шаблоны групповой политики и скрипт установки в .

Инструменты групповой политики используют файлы административных шаблонов (с расширениями , ) для заполнения параметров политики в пользовательском интерфейсе. Это позволяет администраторам управлять параметрами политики на основе реестра. Сценарий устанавливает PowerShell Core административные шаблоны на локальном компьютере.

После установки шаблонов эти параметры можно изменить в редакторе групповая политика ( ).

Существуют следующие политики.

  • Конфигурация сеанса консоли — задает конечную точку конфигурации, в которой выполняется PowerShell.
  • Включить ведение журнала модуля: задает свойство LogPipelineExecutionDetails модулей.
  • «Включить регистрацию блоков сценариев PowerShell» — включает подробное ведение журнала всех скриптов PowerShell.
  • «Включить выполнение сценариев» — задает политику выполнения PowerShell.
  • «Включить транскрипции PowerShell» — включает запись входных и выходных данных команд PowerShell в виде текстовых расшифровок
  • Задайте исходный путь по умолчанию для : задает для обновляемой справки каталог, а не Интернет.

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

Примечание

Эти Административные шаблоны PowerShell Core не включают параметры для Windows PowerShell. Дополнительные сведения о получении других шаблонов и настройке групповой политики см. в статье Создание центрального хранилища для групповая политика административные шаблоны в Windows и управление им.

Использование и изменение переменных среды

в Windows переменные среды могут быть определены в трех областях:

  • Область компьютера (или системы)
  • Область пользователей
  • Область процесса

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

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

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

В этом синтаксисе знак доллара ( ) указывает на переменную, а имя диска ( ) указывает на переменную среды, за которой следует имя переменной ( ).

Изменение переменных среды в PowerShell влияет только на текущий сеанс. это поведение напоминает поведение команды в Windows командной оболочке и команды в средах на основе UNIX. Чтобы изменить значения в областях компьютера или пользователя, необходимо использовать методы класса System. Environment .

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

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

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

В Linux или macOS двоеточие ( ) в команде отделяет новый путь от пути, расположенного перед ним в списке.

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

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

Управление политикой выполнения с помощью PowerShell

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

Следующая команда получает действующую политику выполнения:

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

Результат выглядит примерно так, как показано в следующем примере:

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

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

Например, следующая команда возвращает политику выполнения для области CurrentUser :

Изменение политики выполнения

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

Если задать политику выполнения для областей LocalMachine или CurrentUser, это изменение будет сохранено в реестре и останется эффективным, пока вы не измените его.

Если задать политику выполнения для Process области, она не будет сохранена в реестре. Политика выполнения сохраняется до закрытия текущего процесса и любых дочерних процессов.

Примечание

в Windows Vista и более поздних версиях Windows для выполнения команд, изменяющих политику выполнения для локального компьютера, область LocalMachine , запустите PowerShell с параметром запуск от имени администратора .

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

Пример:

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

Пример:

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

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

Удаление политики выполнения

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

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

Чтобы удалить политику выполнения для Scope :

если в какой-либо области не задана политика выполнения, действующая политика выполнения — это значение Restricted по умолчанию для клиентов Windows.

Задание другой политики для одного сеанса

Параметр ExecutionPolicy параметра можно использовать для установки политики выполнения для нового сеанса PowerShell. Политика влияет только на текущий сеанс и дочерние сеансы.

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

Пример:

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

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

Типы переменных

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

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

Тип данных переменной определяется типами .NET значений этой переменной. Чтобы просмотреть тип объекта переменной, используйте Get-Member.

Пример:

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

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

Имена переменных, содержащие специальные символы

Имена переменных начинаются с символа доллара ( ) и могут содержать буквенно-цифровые символы и специальные символы. Длина имени переменной ограничена только доступной памятью.

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

Буквенно-цифровые имена переменных могут содержать следующие символы:

  • Символы Юникода из следующих категорий: Lu, LL, lt, LM, with или ND.
  • Символ подчеркивания ( ).
  • Символ вопросительного знака ().

В следующем списке содержатся описания категорий Юникода. Дополнительные сведения см. в разделе UnicodeCategory.

  • Lu — упперкаселеттер
  • LL -ловеркаселеттер
  • Lt — титлекаселеттер
  • LM -модифиерлеттер
  • Осерлеттер
  • ND -деЦималдигитнумбер

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

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

  • Любой символ Юникода со следующими исключениями:
    • Символ закрывающей фигурной скобки ( ) (U + 007D).
    • Символ обратной кавычки ( ) (U + 0060). Обратная шкала используется для экранирования символов Юникода, чтобы они обрабатывались как литералы.

PowerShell содержит зарезервированные переменные , такие как, , и , которые содержат буквенно-цифровые и специальные символы. Дополнительные сведения см. в разделе about_Automatic_Variables.

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

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

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

Description

The cmdlet copies an item from one location to another location in the same namespace.
For instance, it can copy a file to a folder, but it can’t copy a file to a certificate drive.

This cmdlet doesn’t cut or delete the items being copied. The particular items that the cmdlet can
copy depend on the PowerShell provider that exposes the item. For instance, it can copy files and
directories in a file system drive and registry keys and entries in the registry drive.

This cmdlet can copy and rename items in the same command. To rename an item, enter the new name in
the value of the Destination parameter. To rename an item and not copy it, use the
cmdlet.

Включить транскрипцию PowerShell

Параметр политики включить запись в PowerShell позволяет записывать входные и выходные данные команд PowerShell Core в текстовые записи. Если этот параметр политики включен, PowerShell Core включит ведение журнала регистрации для PowerShell Core и любых других приложений, использующих ядро PowerShell Core. По умолчанию PowerShell Core будет записывать выходные данные записи в каталог «Мои документы» каждого пользователя с именем файла, включающего «PowerShell_transcript», а также имя компьютера и время запуска.
Включение этой политики равнозначно вызову командлета Start-Transcript в каждом сеансе PowerShell Core.

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

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

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

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

Переменная — это единица памяти, в которой хранятся значения. В PowerShell переменные представлены текстовыми строками, которые начинаются со знака доллара ( ), например , или .

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

В PowerShell существует несколько различных типов переменных.

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

  • Автоматические переменные: автоматические переменные хранят состояние PowerShell. Эти переменные создаются с помощью PowerShell, а PowerShell изменяет их значения в соответствии с требованиями, чтобы поддерживать их точность. Пользователи не могут изменять значения этих переменных. Например, переменная хранит путь к каталогу установки PowerShell.

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

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

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

Создание перекрестной совместимости для модулей PowerShell

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

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

Сценарий PowerShell

В качестве языка PowerShell работает одинаково в разных выпусках. Это используемые командлеты, модули и API-интерфейсы .NET, которые зависят от совместимости выпуска.

как правило, скрипты, работающие в PowerShell 6,1 и выше, будут работать с Windows PowerShell 5,1, но существуют некоторые исключения.

PSScriptAnalyzer версии 18E + имеет такие правила, как псусекомпатиблекоммандс и псусекомпатиблетипес , которые позволяют обнаруживать, возможно, несовместимое использование команд и API-интерфейсов .NET в сценариях PowerShell.

Сборки .NET

При написании двоичного модуля или модуля, включающего сборки .NET (DLL), созданные на основе исходного кода, следует компилироваться с .NET Standard и PowerShell Standard для проверки совместимости во время компиляции для СОВМЕСТИМОСТИ .NET и PowerShell API.

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

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

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

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

Примечание

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

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

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

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

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

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

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

или

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

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

Markdown для примеров кода

Markdown поддерживает два разных стиля кода.

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

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

Блок кода — одна или несколько строк кода, заключенных в границу кода Triple-обратных тактов ( ).
Маркеры границ кода должны находиться в отдельных строках до и после примера кода. Маркер в начале блока может иметь метку языка (необязательно). Открытая система публикации Майкрософт (OPS) использует метку языка для поддержки функции выделения синтаксиса.

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

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

В нашей документации используются три типа блоков кода:

  1. Блоки синтаксиса
  2. Иллюстративные примеры
  3. исполняемые примеры.

Блоки кода синтаксиса

Блоки кода синтаксиса используются для описания синтаксической структуры команды. Не используйте тег языка в границе кода. В этом примере представлены все возможные параметры командлета .

В этом примере представлена общая форма оператора :

пояснительные примеры;

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

Ниже приведен простой пример, иллюстрирующий операторы сравнения PowerShell. Этот пример не предусматривает копирование и выполнение читателем.

исполняемые примеры.

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

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

Метка » выходной код» не является официальным «языком», поддерживаемым системой выделения синтаксиса.
Однако эта метка полезна, поскольку OPS добавляет метку Output в рамку поля кода на веб-странице. В поле «вывод» отсутствует выделение синтаксиса.

Приступая к работе

Майкрософт

Name           Used (GB)     Free (GB) Provider      Root
----           ---------     --------- --------      ----
Alias                                  Alias
C                  16.56         63.44 FileSystem    C:\
cert                                   Certificate   \
D                    .11         53.92 FileSystem    D:\
Env                                    Environment
Function                               Function
HKCU                                   Registry      HKEY_CURRENT_USER
HKLM                                   Registry      HKEY_LOCAL_MACHINE
Variable                               Variable
WSMan                                  WSMan
Set-Location HKLM: # Или, если вы из людей подосёвее, набирайте cd HKLM:
SKC  VC Name                           Property
---  -- ----                           --------
  2   0 BCD00000000                    {}
  4   0 HARDWARE                       {}
  1   0 SAM                            {}
Get-ChildItem : Requested registry access is not allowed.
At line:1 char:3
+ ls <<<<  -force
    + CategoryInfo          : PermissionDenied: (HKEY_LOCAL_MACHINE\SECURITY:St
   ring) , SecurityException
    + FullyQualifiedErrorId : System.Security.SecurityException,Microsoft.Power
   Shell.Commands.GetChildItemCommand

 35   0 SOFTWARE                       {}
  8   0 SYSTEM                         {}

cmdlets

cmdlets — это специализированные команды PowerShell, которые реализуют различную функциональность. Это встроенные в PowerShell команды. cmdlets именуются по правилу , например, , благодаря чему их предназначение понятно из названия. cmdlets выводят результаты в виде объектов или их коллекций. Дополнительно cmdlets могут получать входные данные в такой же форме и, соответственно, использоваться как получатели в конвейере. Хотя PowerShell позволяет передавать по конвейеру массивы и другие коллекции, cmdlets всегда обрабатывают объекты поочередно. Для коллекции объектов обработчик cmdlet вызывается для каждого объекта в коллекции по очереди.

Экземпляры объектов создаются в PowerShell и запускаются им при вызове. cmdlets наследуются от или от , причём последний используется тогда, когда cmdlet необходимо взаимодействовать с исполняемой частью PowerShell. В этих базовых классах оговорены некоторые методы — , и , как минимум один из которых реализация cmdlets должна перезаписать для предоставления своей функциональности. Каждый раз при запуске cmdlet эти методы вызываются PowerShell по очереди. Сначала вызывается , затем, если cmdlet передаются данные по конвейеру, для каждого элемента, и в самом конце — . Класс, реализующий , должен иметь один атрибут .NET — , в котором указываются глагол и существительное, составляющие имя cmdlet. Популярные глаголы представлены в виде перечисления.

Реализации cmdlets могут вызывать любые доступные .NET API и могут быть написаны на любом языке .NET. PowerShell также предоставляет некоторые дополнительные API, такие, как , которые необходимы для доступа к специфичной для PowerShell функциональности, например, для вывода результирующих объектов в конвейер. cmdlets могут использовать API для доступа к данным напрямую или воспользоваться инфраструктурой поставщиков PowerShell, которые позволяют обращаться к хранилищам данных через уникальные пути. Хранилища данных представляются через буквы дисков и иерархическую структуру внутри них (|директории). Windows PowerShell поставляется с поставщиками для файловой системы, реестра Windows, хранилища сертификатов, а также для псевдонимов команд, переменных и функций. Другие приложения могут добавлять свои cmdlets и поставщики для доступа к своим хранилищам данных.

В PowerShell 2.0 была добавлена возможность создания cmdlets на самом PowerShell, без использования .NET-языков.

Скачивание пакетов из коллекции PowerShell

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

Изучение

Чтобы скачать пакет из коллекции для изучения, выполните командлет Save-Module или Save-Script (в зависимости от типа пакета). Так вы сможете сохранить пакет локально без установки и проверить его содержимое. Не забудьте удалить пакет, сохраненный вручную.

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

Если вы нашли пакет, который, по вашему мнению, опубликован с нарушениями, щелкните Сообщить о нарушении на странице этого пакета.

Установка

Чтобы установить пакет из коллекции для использования, выполните командлет Install-Module или Install-Script (в зависимости от типа пакета).

Командлет Install-Module устанавливает модуль в по умолчанию. Для выполнения этой операции необходима учетная запись администратора. При добавлении параметра модуль будет установлен в каталог .

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

По умолчанию командлеты Install-Module и Install-Script устанавливают последнюю версию пакета. Чтобы установить более раннюю версию пакета, добавьте параметр .

Развертывание

Чтобы развернуть пакет из коллекции PowerShell в службе автоматизации Azure, щелкните Служба автоматизации Azure, а затем Deploy to Azure Automation (Развернуть в службе автоматизации Azure) на странице сведений о пакете. После этого вы будете перенаправлены на портал управления Azure, на который нужно войти с использованием учетных данных учетной записи Azure

Обратите внимание, что развертывание пакетов с зависимостями приводит к развертыванию всех зависимостей в службе автоматизации Azure. Кнопку «Развернуть в службе автоматизации Azure» можно отключить, добавив тег AzureAutomationNotSupported в метаданные пакета

Дополнительные сведения о службе автоматизации Azure см. в соответствующей документации.

Основы разрешений

ACL (access controll list) — делится на два вида:

  1. SACL (System Access Control List) — используется для аудита;
  2. DACL (Discretionary Access Control List) — используется для выдачи и проверки разрешений пользователям и группам.

Оба этих типа разрешений хранятся в специальной таблице MFT (Master File Table).

Основное средство для редактирования этих разрешений в GUI можно увидеть зайдя в свойства файла или папки:

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

  • Read — открытие файла и папки;
  • List folder contents — открытие папки;
  • Write — создание файлов и папок и их изменение;
  • Read & Execute — открытие и запуск исполняемых файлов;
  • Modify — открытие, создание, изменение и удаление файлов и папок;
  • Full Control — включает разрешения modify, а так же управление разрешениями файла или папки.

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

Как можно догадаться — разрешения указанные в области 1 это просто набор нескольких правил из области 3. Их так же еще называют «Premission Sets» и «Special Premissions».

Групповые разрешения могут принимать флаги Allow и Deny, которые разрешат или запретят указанные действия. Указывать разрешения для пользователей через Deny считается плохой практикой и практически не используется.

Кроме этого существует наследование:

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

Вам так же будет интересно:

Работа с переменными

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

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

Пример:

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

Пример:

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

Пример:

Чтобы изменить значение переменной, присвойте переменной новое значение.

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

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

Чтобы удалить переменную, используйте Remove-Variable или Remove-Item.

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

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

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

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

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

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

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

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

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

Пример:

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

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