Поделиться через


about_Requires

Краткое описание

Запрещает выполнение скрипта без обязательных элементов.

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

Инструкция #Requires предотвращает выполнение скрипта, если не выполнены предварительные требования к версии PowerShell, модулям (и версиям), а также оснастки (и версиям), а также предварительные требования к выпуску. Если предварительные требования не выполнены, PowerShell не запускает скрипт или предоставляет другие функции среды выполнения, например завершение вкладки.

Синтаксис

#Requires -Version <N>[.<n>]
#Requires -PSSnapin <PSSnapin-Name> [-Version <N>[.<n>]]
#Requires -Modules { <Module-Name> | <Hashtable> }
#Requires -PSEdition <PSEdition-Name>
#Requires -ShellId <ShellId> -PSSnapin <PSSnapin-Name> [-Version <N>[.<n>]]
#Requires -RunAsAdministrator

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

Правила использования

Скрипт может включать несколько #Requires инструкций. Инструкции #Requires могут отображаться в любой строке скрипта.

Размещение инструкции #Requires внутри функции не ограничивает ее область. Все #Requires инструкции всегда применяются глобально и должны выполняться перед выполнением скрипта.

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

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

Пример:

Get-Module AzureRM.Netcore | Remove-Module
#Requires -Modules AzureRM.Netcore

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

Параметры

-Путь> сборки <| <. Спецификация сборки NET>

Внимание

Синтаксис -Assembly устарел. Она не служит никакой функцией. Синтаксис был добавлен в PowerShell 5.1, но вспомогательный код никогда не был реализован. Синтаксис по-прежнему принимается для обратной совместимости.

Указывает путь к DLL-файлу сборки или имени сборки .NET. Параметр сборки появился в PowerShell 5.0. Дополнительные сведения о сборках .NET см. в разделе "Имена сборок".

Например:

#Requires -Assembly path\to\foo.dll
#Requires -Assembly "System.Management.Automation, Version=3.0.0.0,
  Culture=neutral, PublicKeyToken=31bf3856ad364e35"

-Версия <N>[.<n>]

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

Например:

#Requires -Version 5.1

-PSSnapin PSSnapin-Name <> [-Version <N>[.<n>]]

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

Например:

#Requires -PSSnapin DiskSnapin -Version 1.2

-Modules <Module-Name> | <Хэш-хэштебл>

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

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

Инструкция #Requires не загружает определения класса и перечисления в модуле. using module Используйте инструкцию в начале скрипта для импорта модуля, включая определения класса и перечисления. Дополнительные сведения см. в about_Using.

Для каждого модуля введите имя модуля (<String>) или хэш-таблицу. Это значение может быть сочетанием строк и хэш-значений. Хэш-файл содержит следующие ключи.

  • ModuleName - Обязательный указывает имя модуля.
  • GUID - Необязательный атрибут указывает GUID модуля.
  • Также требуется указать по крайней мере один из трех приведенных ниже ключей.
    • ModuleVersion — задает минимальную допустимую версию модуля.
    • MaximumVersion — задает максимальную допустимую версию модуля.
    • RequiredVersion — указывает точную, требуемую версию модуля. Это нельзя использовать с другими ключами версии.

Примечание.

RequiredVersion добавлен в Windows PowerShell 5.0. MaximumVersion добавлен в Windows PowerShell 5.1.

Например:

Требуется установить Hyper-V (версию 1.1 или больше).

#Requires -Modules @{ ModuleName="Hyper-V"; ModuleVersion="1.1" }

Hyper-V Требует установки (только версия1.1).

#Requires -Modules @{ ModuleName="Hyper-V"; RequiredVersion="1.1" }

Требуется установить Hyper-V (версию 1.1 или меньше).

#Requires -Modules @{ ModuleName="Hyper-V"; MaximumVersion="1.1" }

Требует, чтобы установлена любая версия PSScheduledJob и PSWorkflow,

#Requires -Modules PSWorkflow, PSScheduledJob

При использовании RequiredVersion ключа убедитесь, что строка версии точно соответствует нужной строке версии.

Get-Module Hyper-V
ModuleType Version    Name     ExportedCommands
---------- -------    ----     ------------------
Binary     2.0.0.0    hyper-v  {Add-VMAssignableDevice, ...}

Следующий пример завершается ошибкой, так как 2.0.0 не соответствует точно 2.0.0.0.

#Requires -Modules @{ ModuleName="Hyper-V"; RequiredVersion="2.0.0" }

-PSEdition PSEdition-Name <>

Указывает выпуск PowerShell, который требуется скрипту. Допустимые значения: Core для PowerShell и Desktop для Windows PowerShell.

Например:

#Requires -PSEdition Core

-ShellId

Указывает оболочку, которую требует скрипт. Введите идентификатор оболочки. Если используется параметр ShellId , необходимо также включить параметр PSSnapin . Текущий ShellId можно найти, запрашивая автоматическую $ShellId переменную.

Рассмотрим пример.

#Requires -ShellId MyLocalShell -PSSnapin Microsoft.PowerShell.Core

Примечание.

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

-RunAsAdministrator

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

Например:

#Requires -RunAsAdministrator

Примеры

В следующем скрипте есть два #Requires оператора. Если требования, указанные в обоих инструкциях, не выполнены, скрипт не выполняется. Каждая #Requires инструкция должна быть первым элементом в строке:

#Requires -Modules PSWorkflow
#Requires -Version 3
Param
(
    [parameter(Mandatory=$true)]
    [String[]]
    $Path
)
...

См. также