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
)
...