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
)
...
См. также
PowerShell