about_Requires
Krátký popis
Zabrání spuštění skriptu bez požadovaných prvků.
Dlouhý popis
Příkaz #Requires
zabraňuje spuštění skriptu, pokud nejsou splněny požadavky powershellové verze, modulů (a verze) a edice. Pokud nejsou splněné požadavky, PowerShell nespustí skript ani neposkytuje jiné funkce modulu runtime, jako je například dokončování tabulátoru.
Syntaxe
#Requires -Version <N>[.<n>]
#Requires -Modules { <Module-Name> | <Hashtable> }
#Requires -PSEdition <PSEdition-Name>
#Requires -RunAsAdministrator
Další informace o syntaxi najdete v tématu ScriptRequirements.
Pravidla pro použití
Skript může obsahovat více než jeden #Requires
příkaz. Příkazy #Requires
se můžou objevit na libovolném řádku skriptu.
#Requires
Umístění příkazu do funkce neomezuje jeho rozsah. Všechny #Requires
příkazy se vždy použijí globálně a musí být splněny před spuštěním skriptu.
Upozorňující
I když se #Requires
příkaz může objevit na libovolném řádku skriptu, jeho pozice ve skriptu nemá vliv na sekvenci aplikace. Globální stav, který #Requires
příkaz prezentuje, 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 před příkazem #Requires
odebrán. #Requires
Stav však musel být splněn před spuštěním skriptu. První řádek skriptu zneplatní požadovaný stav.
Parametry
-Assembly Assembly Assembly <path> | <. 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í.
Příklad:
#Requires -Assembly path\to\foo.dll
#Requires -Assembly "System.Management.Automation, Version=3.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35"
-Version <N>[.<n>]
Určuje minimální verzi PowerShellu, kterou skript vyžaduje. Zadejte číslo hlavní verze a volitelné číslo podverze.
Příklad:
#Requires -Version 6.0
-Modules <Název> modulu | <Hashtable>
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.
Příkaz #Requires
nenačítá definice tříd a výčtů v modulu. K importu modulu, včetně definic tříd a výčtů, použijte příkaz using module
na začátku skriptu. Další informace najdete v tématu about_Using.
Pro každý modul zadejte název modulu (<String>) nebo hashtable. Hodnota může být kombinací řetězců a hashovatelných tabulek. Hashtable obsahuje následující klíče.
ModuleName
- Povinný argument Určuje název modulu.GUID
- Volitelné určuje identifikátor GUID modulu.- Je také povinné zadat aspoň jeden ze tří následujících klíčů.
ModuleVersion
– Určuje minimální přijatelnou verzi modulu.MaximumVersion
– Určuje maximální přijatelnou verzi modulu.RequiredVersion
– Určuje přesnou požadovanou verzi modulu. Tuto možnost nelze použít s jinými klíči verze.
Poznámka:
RequiredVersion
byl přidán ve Windows PowerShellu 5.0.
MaximumVersion
byl přidán ve Windows PowerShellu 5.1.
Příklad:
Vyžaduje, aby AzureRM.Netcore
byla nainstalovaná (verze 0.12.0
nebo vyšší).
#Requires -Modules @{ ModuleName="AzureRM.Netcore"; ModuleVersion="0.12.0" }
Vyžaduje, aby AzureRM.Netcore
byla nainstalována (pouze verze 0.12.0
).
#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12.0" }
Vyžaduje, aby AzureRM.Netcore
byla nainstalovaná (verze 0.12.0
nebo menší).
#Requires -Modules @{ ModuleName="AzureRM.Netcore"; MaximumVersion="0.12.0" }
Vyžaduje, aby byla nainstalována libovolná verze AzureRM.Netcore
a PowerShellGet
nainstalovaná.
#Requires -Modules AzureRM.Netcore, PowerShellGet
Při použití RequiredVersion
klíče se ujistěte, že řetězec 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 neodpovídá přesně 0.12.0.
#Requires -Modules @{ ModuleName="AzureRM.Netcore"; RequiredVersion="0.12" }
-PSEdition <PSEdition-Name>
Určuje edici PowerShellu, kterou skript vyžaduje. Platné hodnoty jsou Core pro PowerShell a Desktop pro Windows PowerShell.
Příklad:
#Requires -PSEdition Core
-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 je ignorován v operačním systému, který není systémem Windows. Parametr RunAsAdministrator byl zaveden v PowerShellu 4.0.
Příklad:
#Requires -RunAsAdministrator
Příklady
Následující skript obsahuje dva #Requires
příkazy. Pokud nejsou splněny požadavky zadané v obou příkazech, skript se nespustí. Každý #Requires
příkaz musí být první položkou na řádku:
#Requires -Modules AzureRM.Netcore
#Requires -Version 6.0
Param
(
[parameter(Mandatory=$true)]
[String[]]
$Path
)
...