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


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. Параметр сборки появился в 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> | <Хэш-хэштебл>

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

Если этот параметр коммутатора добавляется в #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
)
...

См. также