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


about_Requires

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

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

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

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

Синтаксис

#Requires -Version <N>[.<n>]
#Requires -Modules { <Module-Name> | <Hashtable> }
#Requires -PSEdition <PSEdition-Name>
#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. Параметр Assembly появился в 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 6.0

-Modules <Module-Name> | <Hashtable>

Указывает модули 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.

Пример:

Требуется установить AzureRM.Netcore (версию 0.12.0 или более позднюю).

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; ModuleVersion="0.12.0" }

Требовать, чтобы AzureRM.Netcore (только версия 0.12.0) была установлена.

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12.0" }

Требует установки AzureRM.Netcore (версии 0.12.0 или меньше).

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; MaximumVersion="0.12.0" }

Требовать, чтобы установлена любая версия AzureRM.Netcore и PowerShellGet .

#Requires -Modules AzureRM.Netcore, PowerShellGet

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

Get-Module AzureRM.Netcore -ListAvailable
    Directory: /home/azureuser/.local/share/powershell/Modules

ModuleType Version Name            PSEdition ExportedCommands
---------- ------- ----            --------- ----------------
Script     0.12.0  AzureRM.Netcore Core

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

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12" }

-PSEdition <PSEdition-Name>

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

Пример:

#Requires -PSEdition Core

-RunAsAdministrator

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

Пример:

#Requires -RunAsAdministrator

Примеры

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

#Requires -Modules AzureRM.Netcore
#Requires -Version 6.0
Param
(
    [parameter(Mandatory=$true)]
    [String[]]
    $Path
)
...

См. также раздел