Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Краткое описание
Запрещает выполнение скрипта без обязательных элементов.
Длинное описание
Инструкция #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. Параметр сборки
Например:
#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.
Для каждого модуля введите имя модуля (<строка>) или хэш-таблицу. Это значение может быть сочетанием строк и хэш-таблиц. Хэш-файл содержит следующие ключи.
-
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
-ЗапускОтИмениАдминистратора
Если этот параметр коммутатора добавляется в инструкцию #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
)
...
См. также
PowerShell