Sdílet prostřednictvím


about_Požadavky

Krátký popis

Zabrání spuštění skriptu bez požadovaných prvků.

Dlouhý popis

Příkaz #Requires zabrání spuštění skriptu, pokud nejsou splněny požadavky na verzi PowerShellu, moduly (a verzi) nebo moduly snap-in (a verzi) a edici. Pokud nejsou splněny požadavky, PowerShell skript nespustí.

Syntaxe

#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

Další informace o syntaxi naleznete v tématu ScriptRequirements.

Pravidla pro použití

Skript může obsahovat více než jeden příkaz #Requires. Příkazy #Requires se můžou zobrazit na libovolném řádku skriptu.

Umístění #Requires příkazu uvnitř funkce NEOMEZUJE její rozsah. Všechny příkazy #Requires se vždy použijí globálně a musí být splněny před spuštěním skriptu.

Výstraha

I když #Requires se příkaz může objevit na libovolném řádku skriptu, jeho umístění ve skriptu nemá vliv na posloupnost jeho použití. Globální stav, který příkaz #Requires představuje, musí být splněn před spuštěním skriptu.

Příklad:

Get-Module AzureRM.Netcore | Remove-Module
#Requires -Modules AzureRM.Netcore

Možná si myslíte, že výše uvedený kód by se neměl spouštět, protože požadovaný modul byl odebrán před příkazem #Requires. Před spuštěním skriptu však musel být splněn #Requires stav. První řádek skriptu zneplatní požadovaný stav.

Parametry

-Assembly <cesta sestavení> | <specifikace sestavení .NET>

Důležité

Syntaxe -Assembly je zastaralá. Neslouží žádné funkci. Syntaxe byla přidána v PowerShellu 5.1, ale podpůrný kód nebyl nikdy implementován. Syntaxe je stále přijímána kvůli zpětné kompatibilitě.

Určuje cestu k souboru knihovny DLL sestavení nebo názvu sestavení .NET. Parametr sestavení byl zaveden v PowerShellu 5.0. Další informace o sestaveních .NET naleznete v tématu názvy sestavení.

Například:

#Requires -Assembly path\to\foo.dll
#Requires -Assembly "System.Management.Automation, Version=3.0.0.0,
  Culture=neutral, PublicKeyToken=31bf3856ad364e35"

-Verze <N>[.<n>]

Určuje minimální verzi PowerShellu, kterou skript vyžaduje. Zadejte číslo hlavní verze a volitelné číslo podverze.

Například:

#Requires -Version 6.0

-PSSnapin PSSnapin-Name <> [-Version <N>[.<n>]]

Určuje modul snap-in PowerShellu, který skript vyžaduje. Zadejte název modulu snap-in a volitelné číslo verze.

Například:

#Requires -PSSnapin DiskSnapin -Version 1.2

-Modules <module-name> | <> hashovací tabulky

Určuje moduly PowerShellu, které skript vyžaduje. Zadejte název modulu a volitelné číslo verze.

Pokud požadované moduly nejsou v aktuální relaci, PowerShell je naimportuje. Pokud se moduly nedají importovat, PowerShell vyvolá ukončující chybu.

Pro každý modul zadejte název modulu (<String>) nebo zatřiďovací tabulku. Hodnota může být kombinací řetězců a zatřiďovacích tabulek. Zatřiďovací tabulka má následující klíče.

  • ModuleName - Povinný Určuje název modulu.
  • GUID - Volitelné Určuje identifikátor GUID modulu.
  • Je také nutné zadat jeden ze tří níže uvedených klíčů. Tyto klíče nelze použít společně.
    • ModuleVersion – Určuje minimální přijatelnou verzi modulu.
    • RequiredVersion – Určuje přesnou požadovanou verzi modulu.
    • MaximumVersion – Určuje maximální přijatelnou verzi modulu.

Poznámka:

RequiredVersion byla přidána ve Windows PowerShellu 5.0. MaximumVersion byl přidán v prostředí Windows PowerShell 5.1.

Například:

Vyžaduje instalaci AzureRM.Netcore (verze 0.12.0 nebo vyšší).

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; ModuleVersion="0.12.0" }

Vyžaduje instalaci AzureRM.Netcore (pouze verze 0.12.0).

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12.0" }

Vyžaduje instalaci AzureRM.Netcore (verze 0.12.0 nebo nižší).

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; MaximumVersion="0.12.0" }

Vyžaduje, aby byla nainstalována jakákoli verze AzureRM.Netcore a PowerShellGet.

#Requires -Modules AzureRM.Netcore, PowerShellGet

Při použití klíče RequiredVersion se ujistěte, že řetězec vaší verze přesně odpovídá požadovanému řetězci verze.

Get-Module AzureRM.Netcore -ListAvailable
    Directory: /home/azureuser/.local/share/powershell/Modules

ModuleType Version Name            PSEdition ExportedCommands
---------- ------- ----            --------- ----------------
Script     0.12.0  AzureRM.Netcore Core

Následující příklad selže, protože 0.12 přesně neodpovídá 0.12.0.

#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12" }

-PSEdition <Název PSEdition>

Určuje edici PowerShellu, kterou skript vyžaduje. Platné hodnoty jsou core pro PowerShell a Desktop pro Windows PowerShell.

Například:

#Requires -PSEdition Core

-Identifikátor prostředí

Určuje prostředí, které skript vyžaduje. Zadejte ID prostředí. Pokud používáte parametr ShellId , musíte zahrnout také parametr PSSnapin . Aktuální ID prostředí najdete dotazem na automatickou $ShellId proměnnou.

Například:

#Requires -ShellId MyLocalShell -PSSnapin Microsoft.PowerShell.Core

Poznámka:

Tento parametr je určený pro použití v mini shellech, které byly zastaralé.

-RunAsAdministrator

Když se tento parametr přepínače přidá do příkazu #Requires, určuje, že relace PowerShellu, ve které skript spouštíte, musí být spuštěna se zvýšenými uživatelskými právy. Parametr RunAsAdministrator se ignoruje v operačním systému bez Windows. Parametr RunAsAdministrator byl zaveden v PowerShellu 4.0.

Například:

#Requires -RunAsAdministrator

Příklady

Následující skript obsahuje dva příkazy #Requires. Pokud nejsou splněny požadavky zadané v obou příkazech, skript se nespustí. Každý příkaz #Requires musí být první položkou na řádku:

#Requires -Modules AzureRM.Netcore
#Requires -Version 6.0
Param
(
    [parameter(Mandatory=$true)]
    [String[]]
    $Path
)
...

Viz také