about_Requires
Краткое описание
Запрещает выполнение скрипта без обязательных элементов.
Подробное описание
Инструкция #Requires
предотвращает выполнение скрипта, если не выполнены предварительные требования к версии PowerShell, модулям (и версиям), а также оснастки (и версиям), а также предварительные требования к выпуску. Если предварительные требования не выполнены, PowerShell не запускает скрипт или предоставляет другие функции среды выполнения, например завершение вкладки.
Синтаксис
#Requires -Version <N>[.<n>]
#Requires -PSSnapin <PSSnapin-Name> [-Version <N>[.<n>]]
#Requires -Modules { <Module-Name> | <Hashtable> }
#Requires -PSEdition <PSEdition-Name>
#Requires -ShellId <ShellId> -PSSnapin <PSSnapin-Name> [-Version <N>[.<n>]]
#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 5.1
-PSSnapin PSSnapin-Name <> [-Version <N>[.<n>]]
Указывает оснастку PowerShell, требующую скрипта. Введите имя оснастки и дополнительный номер версии.
Например:
#Requires -PSSnapin DiskSnapin -Version 1.2
-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.
Например:
Требуется установить Hyper-V
(версию 1.1
или больше).
#Requires -Modules @{ ModuleName="Hyper-V"; ModuleVersion="1.1" }
Hyper-V
Требует установки (только версия1.1
).
#Requires -Modules @{ ModuleName="Hyper-V"; RequiredVersion="1.1" }
Требуется установить Hyper-V
(версию 1.1
или меньше).
#Requires -Modules @{ ModuleName="Hyper-V"; MaximumVersion="1.1" }
Требует, чтобы установлена любая версия PSScheduledJob
и PSWorkflow
,
#Requires -Modules PSWorkflow, PSScheduledJob
При использовании RequiredVersion
ключа убедитесь, что строка версии точно соответствует нужной строке версии.
Get-Module Hyper-V
ModuleType Version Name ExportedCommands
---------- ------- ---- ------------------
Binary 2.0.0.0 hyper-v {Add-VMAssignableDevice, ...}
Следующий пример завершается ошибкой, так как 2.0.0 не соответствует точно 2.0.0.0.
#Requires -Modules @{ ModuleName="Hyper-V"; RequiredVersion="2.0.0" }
-PSEdition PSEdition-Name <>
Указывает выпуск PowerShell, который требуется скрипту. Допустимые значения: Core для PowerShell и Desktop для Windows PowerShell.
Например:
#Requires -PSEdition Core
-ShellId
Указывает оболочку, которую требует скрипт. Введите идентификатор оболочки. Если используется параметр ShellId , необходимо также включить параметр PSSnapin .
Текущий ShellId можно найти, запрашивая автоматическую $ShellId
переменную.
Рассмотрим пример.
#Requires -ShellId MyLocalShell -PSSnapin Microsoft.PowerShell.Core
Примечание.
Этот параметр предназначен для использования в мини-оболочках, которые устарели.
-RunAsAdministrator
Если этот параметр коммутатора добавляется в #Requires
инструкцию, он указывает, что сеанс PowerShell, в котором выполняется скрипт, должен быть запущен с повышенными правами пользователя. Параметр RunAsAdministrator игнорируется в операционной системе, отличной от Windows. Параметр RunAsAdministrator появился в PowerShell 4.0.
Например:
#Requires -RunAsAdministrator
Примеры
В следующем скрипте есть два #Requires
оператора. Если требования, указанные в обоих инструкциях, не выполнены, скрипт не выполняется. Каждая #Requires
инструкция должна быть первым элементом в строке:
#Requires -Modules PSWorkflow
#Requires -Version 3
Param
(
[parameter(Mandatory=$true)]
[String[]]
$Path
)
...
См. также
PowerShell