Get-Command
Získá všechny příkazy.
Syntaxe
Get-Command
[-Verb <String[]>]
[-Noun <String[]>]
[-Module <String[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[-TotalCount <Int32>]
[-Syntax]
[-ShowCommandInfo]
[[-ArgumentList] <Object[]>]
[-All]
[-ListImported]
[-ParameterName <String[]>]
[-ParameterType <PSTypeName[]>]
[<CommonParameters>]
Get-Command
[[-Name] <String[]>]
[-Module <String[]>]
[-FullyQualifiedModule <ModuleSpecification[]>]
[-CommandType <CommandTypes>]
[-TotalCount <Int32>]
[-Syntax]
[-ShowCommandInfo]
[[-ArgumentList] <Object[]>]
[-All]
[-ListImported]
[-ParameterName <String[]>]
[-ParameterType <PSTypeName[]>]
[-UseFuzzyMatching]
[-FuzzyMinimumDistance <UInt32>]
[-UseAbbreviationExpansion]
[<CommonParameters>]
Description
Rutina Get-Command
získá všechny příkazy nainstalované v počítači, včetně rutin, aliasů, funkcí, filtrů, skriptů a aplikací. Get-Command
získá příkazy z modulů PowerShellu a příkazů importovaných z jiných relací. Pokud chcete získat pouze příkazy importované do aktuální relace, použijte parametr ListImported .
Bez parametrů Get-Command
získá všechny rutiny, funkce a aliasy nainstalované v počítači. Get-Command *
získá všechny typy příkazů, včetně všech souborů mimo PowerShell v proměnné prostředí Cesta ($env:PATH
), které jsou uvedeny v typu příkazu Aplikace.
Get-Command
který používá přesný název příkazu bez zástupných znaků, automaticky importuje modul obsahující příkaz, abyste mohli příkaz okamžitě použít. Pokud chcete povolit, zakázat a nakonfigurovat automatický import modulů, použijte proměnnou $PSModuleAutoLoadingPreference
předvoleb. Další informace najdete v tématu about_Preference_Variables.
Get-Command
získá data přímo z příkazového kódu, na rozdíl od Get-Help
toho, který získá své informace z témat nápovědy.
Ve Windows PowerShellu 5.0 se ve výchozím nastavení ve výsledcích Get-Command
rutiny zobrazí sloupec Verze . Do třídy CommandInfo byla přidána nová vlastnost Version.
Příklady
Příklad 1: Získání rutin, funkcí a aliasů
Tento příkaz získá rutiny, funkce a aliasy PowerShellu nainstalované v počítači.
Get-Command
Příklad 2: Získání příkazů v aktuální relaci
Tento příkaz používá parametr ListImported k získání pouze příkazů v aktuální relaci.
Get-Command -ListImported
Příklad 3: Získání rutin a jejich zobrazení v pořadí
Tento příkaz získá všechny rutiny, seřadí je abecedně podle jmenného jména v názvu rutiny a pak je zobrazí ve skupinách založených na podstatných jménech. Toto zobrazení vám může pomoct najít rutiny pro úlohu.
Get-Command -Type Cmdlet | Sort-Object -Property Noun | Format-Table -GroupBy Noun
Příklad 4: Získání příkazů v modulu
Tento příkaz pomocí parametru Module získá příkazy v modulech Microsoft.PowerShell.Security a Microsoft.PowerShell.Utility.
Get-Command -Module Microsoft.PowerShell.Security, Microsoft.PowerShell.Utility
Příklad 5: Získání informací o rutině
Tento příkaz získá informace o rutině Get-AppLockerPolicy
. Také naimportuje modul AppLockeru , který do aktuální relace přidá všechny příkazy v modulu AppLockeru .
Get-Command Get-AppLockerPolicy
Když se modul naimportuje automaticky, efekt je stejný jako použití rutiny Import-Module.
Modul může přidávat příkazy, typy a formátovací soubory a spouštět skripty v relaci. Pokud chcete povolit, zakázat a nakonfigurovat automatický import modulů, použijte proměnnou $PSModuleAutoLoadingPreference
předvoleb. Další informace najdete v tématu about_Preference_Variables.
Příklad 6: Získání syntaxe rutiny
Tento příkaz používá parametry ArgumentList a Syntaxe k získání syntaxe Get-ChildItem
rutiny při použití v jednotce Cert: . Certifikát: jednotka je jednotka PowerShellu, kterou zprostředkovatel certifikátu přidá do relace.
Get-Command -Name Get-Childitem -Args Cert: -Syntax
Když porovnáte syntaxi zobrazenou ve výstupu se syntaxí, která se zobrazí při vynechání parametru Args (ArgumentList), uvidíte, že zprostředkovatel certifikátu přidá do Get-ChildItem
rutiny dynamický parametr CodeSigningCert.
Další informace o poskytovateli certifikátů najdete v tématu about_Certificate_Provider.
Příklad 7: Získání dynamických parametrů
Příkaz v příkladu Get-DynamicParameters
používá funkci k získání dynamických parametrů, které zprostředkovatel certifikátu přidá do Get-ChildItem
rutiny při použití v jednotce Cert: .
function Get-DynamicParameters
{
param ($Cmdlet, $PSDrive)
(Get-Command -Name $Cmdlet -ArgumentList $PSDrive).ParameterSets |
ForEach-Object {$_.Parameters} |
Where-Object { $_.IsDynamic } |
Select-Object -Property Name -Unique
}
Get-DynamicParameters -Cmdlet Get-ChildItem -PSDrive Cert:
Name
----
CodeSigningCert
Funkce Get-DynamicParameters
v tomto příkladu získá dynamické parametry rutiny. Toto je alternativa k metodě použité v předchozím příkladu. Dynamický parametr lze přidat do rutiny jinou rutinou nebo poskytovatelem.
Příklad 8: Získání všech příkazů všech typů
Tento příkaz získá všechny příkazy všech typů na místním počítači, včetně spustitelných souborů v cestě proměnné prostředí Path ($env:PATH
).
Get-Command *
Vrátí objekt ApplicationInfo (System.Management.Automation.ApplicationInfo) pro každý soubor, nikoli objekt FileInfo (System.IO.FileInfo).
Příklad 9: Získání rutin pomocí názvu a typu parametru
Tento příkaz získá rutiny s parametrem, jehož název zahrnuje ověřování a jehož typ je AuthenticationMechanism.
Get-Command -ParameterName *Auth* -ParameterType AuthenticationMechanism
Pomocí podobného příkazu můžete najít rutiny, které umožňují zadat metodu použitou k ověření uživatele.
Parametr ParameterType rozlišuje parametry, které mají hodnotu AuthenticationMechanism , od těch, které přebírají parametr AuthenticationLevel , i když mají podobné názvy.
Příklad 10: Získání aliasu
Tento příklad ukazuje, jak použít rutinu Get-Command
s aliasem.
Get-Command -Name dir
CommandType Name ModuleName
----------- ---- ----------
Alias dir -> Get-ChildItem
I když se obvykle používá u rutin a funkcí, Get-Command
získává také skripty, funkce, aliasy a spustitelné soubory.
Výstup příkazu zobrazuje speciální zobrazení hodnoty vlastnosti Name pro aliasy. Zobrazení zobrazuje alias a úplný název příkazu.
Příklad 11: Získání syntaxe z aliasu
Tento příklad ukazuje, jak získat syntaxi spolu se standardním názvem aliasu.
Výstup příkazu zobrazí označený alias se standardním názvem a syntaxí.
Get-Command -Name dir -Syntax
dir (alias) -> Get-ChildItem
dir [[-Path] <string[]>] [[-Filter] <string>] [-Include <string[]>] [-Exclude <string[]>] [-Recurse]
[-Depth <uint>] [-Force] [-Name] [-Attributes <FlagsExpression[FileAttributes]>] [-FollowSymlink]
[-Directory] [-File] [-Hidden] [-ReadOnly] [-System] [<CommonParameters>]
dir [[-Filter] <string>] -LiteralPath <string[]> [-Include <string[]>] [-Exclude <string[]>] [-Recurse]
[-Depth <uint>] [-Force] [-Name] [-Attributes <FlagsExpression[FileAttributes]>] [-FollowSymlink]
[-Directory] [-File] [-Hidden] [-ReadOnly] [-System] [<CommonParameters>]
Příklad 12: Získání všech instancí příkazu Poznámkový blok
Tento příklad používá parametr All rutiny Get-Command
k zobrazení všech instancí Notepad
příkazu v místním počítači.
Get-Command Notepad -All | Format-Table CommandType, Name, Definition
CommandType Name Definition
----------- ---- ----------
Application notepad.exe C:\WINDOWS\system32\notepad.exe
Application NOTEPAD.EXE C:\WINDOWS\NOTEPAD.EXE
Parametr All je užitečný, pokud v relaci existuje více než jeden příkaz se stejným názvem.
Počínaje windows PowerShellem 3.0 ve výchozím nastavení získá relace více příkazů se stejným názvem pouze příkaz, Get-Command
který se spustí při zadání názvu příkazu. Pomocí parametru Get-Command
All získá všechny příkazy se zadaným názvem a vrátí je v pořadí priorit provádění. Pokud chcete spustit jiný příkaz než první v seznamu, zadejte plně kvalifikovanou cestu k příkazu.
Další informace o prioritě příkazů najdete v tématu about_Command_Precedence.
Příklad 13: Získání názvu modulu, který obsahuje rutinu
Tento příkaz získá název modulu, ze kterého rutina Get-Date
pochází.
Příkaz používá vlastnost ModuleName všech příkazů.
(Get-Command Get-Date).ModuleName
Microsoft.PowerShell.Utility
Tento formát příkazu funguje na příkazech v modulech PowerShellu, i když se do relace neimportují.
Příklad 14: Získání rutin a funkcí s výstupním typem
Get-Command -Type Cmdlet | Where-Object OutputType | Format-List -Property Name, OutputType
Tento příkaz získá rutiny a funkce, které mají výstupní typ a typ objektů, které vrací.
První část příkazu získá všechny rutiny. Operátor kanálu (|
) odešle rutiny do Where-Object
rutiny, která vybere pouze ty, ve kterých je vlastnost OutputType naplněna. Jiný operátor kanálu odešle vybrané objekty rutiny Format-List
do rutiny, která zobrazí název a výstupní typ každé rutiny v seznamu.
Vlastnost OutputType objektu CommandInfo má nenulovou hodnotu pouze tehdy, když kód rutiny definuje atribut OutputType pro rutinu.
Příklad 15: Získání rutin, které jako vstup přebírají konkrétní typ objektu
Get-Command -ParameterType (((Get-NetAdapter)[0]).PSTypeNames)
CommandType Name ModuleName
----------- ---- ----------
Function Disable-NetAdapter NetAdapter
Function Enable-NetAdapter NetAdapter
Function Rename-NetAdapter NetAdapter
Function Restart-NetAdapter NetAdapter
Function Set-NetAdapter NetAdapter
Tento příkaz najde rutiny, které jako vstup přebírají objekty net adapteru. Tento formát příkazu můžete použít k vyhledání rutin, které přijímají typ objektů, které vrací libovolný příkaz.
Příkaz používá vnitřní vlastnost PSTypeNames všech objektů, což získá typy popisované objektu. Pokud chcete získat vlastnost PSTypeNames adaptéru net, a ne vlastnost PSTypeNames kolekce síťových adaptérů, příkaz pomocí zápisu pole získá první síťový adaptér, který rutina vrátí.
Příklad 16: Získání příkazů pomocí přibližné shody
V tomto příkladu má název příkazu záměrně překlep "get-commnd". -UseFuzzyMatching
Pomocí přepínače rutina zjistila, že nejlepší shoda byla Get-Command
sledována dalšími nativními příkazy v systému, které byly podobné shody.
Get-Command get-commnd -UseFuzzyMatching
CommandType Name Version Source
----------- ---- ------- ------
Cmdlet Get-Command 6.2.0.0 Microsoft.PowerShell.Core
Application getconf 0.0.0.0 /usr/bin/getconf
Application command 0.0.0.0 /usr/bin/command
Parametry
-All
Označuje, že tato rutina získá všechny příkazy, včetně příkazů stejného typu, které mají stejný název. Ve výchozím nastavení se načte pouze příkazy, Get-Command
které se spustí při zadání názvu příkazu.
Další informace o pořadí, ve které PowerShell hledá příkazy, najdete v tématu about_Command_Precedence. Informace o názvech příkazů kvalifikovaných pro modul a spouštění příkazů, které se nespouštějí ve výchozím nastavení kvůli konfliktu názvů, najdete v tématu about_Modules.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Ve Windows PowerShellu 2.0 Get-Command
získá ve výchozím nastavení všechny příkazy.
Typ: | SwitchParameter |
Position: | Named |
Default value: | False |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-ArgumentList
Určuje pole argumentů. Tato rutina získá informace o rutině nebo funkci při použití se zadanými parametry ("argumenty"). Alias argumentu ArgumentList je Args.
Chcete-li zjistit dynamické parametry, které jsou k dispozici pouze v případě použití určitých dalších parametrů, nastavte hodnotu ArgumentList na parametry, které aktivují dynamické parametry.
Chcete-li zjistit dynamické parametry, které zprostředkovatel přidává do rutiny, nastavte hodnotu parametru ArgumentList na cestu v jednotce zprostředkovatele, například WSMan:
, HKLM:
nebo Cert:
.
Pokud je příkazem rutina zprostředkovatele PowerShellu, zadejte do každého příkazu jenom jednu cestu. Rutiny zprostředkovatele vrátí pouze dynamické parametry pro první cestu hodnotu ArgumentList. Informace o rutinách poskytovatele najdete v tématu about_Providers.
Typ: | Object[] |
Aliasy: | Args |
Position: | 1 |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-CommandType
Určuje typy příkazů, které tato rutina získá. Zadejte jeden nebo více typů příkazů. Použijte CommandType nebo jeho alias, Type. Ve výchozím nastavení Get-Command
získá všechny rutiny, funkce a aliasy.
Tento parametr přijímá tyto hodnoty:
Alias
: Získá aliasy všech příkazů PowerShellu. Další informace najdete v tématu about_Aliases.All
: Získá všechny typy příkazů. Tato hodnota parametru je ekvivalentem .Get-Command *
Application
: Prohledá složky v$env:PATH
proměnné prostředí pro jiné spustitelné soubory než PowerShell. Ve Windows mají spustitelné soubory příponu souboru, která je uvedená v$env:PATHEXT
proměnné prostředí. Další informace najdete v tématu about_Environment_Variables.Cmdlet
: Získá všechny rutiny.ExternalScript
: Získá všechny.ps1
soubory v cestách uvedených v proměnné prostředí Path ($env:PATH
).Filter
aFunction
: Získá všechny pokročilé a jednoduché funkce a filtry PowerShellu.Script
: Získá všechny bloky skriptu. Pokud chcete získat skripty PowerShellu (.ps1
soubory), použijteExternalScript
hodnotu.
Tyto hodnoty jsou definovány jako výčet založený na příznaku. Pomocí tohoto parametru můžete zkombinovat více hodnot a nastavit více příznaků. Hodnoty lze předat parametru CommandType jako pole hodnot nebo jako řetězec oddělený čárkami těchto hodnot. Rutina zkombinuje hodnoty pomocí binární operace OR. Předání hodnot jako pole je nejjednodušší možností a také umožňuje použít pro hodnoty dokončování tabulátoru.
Typ: | CommandTypes |
Aliasy: | Type |
Přípustné hodnoty: | Alias, Function, Filter, Cmdlet, ExternalScript, Application, Script, Workflow, Configuration, All |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-FullyQualifiedModule
Hodnota může být název modulu, úplná specifikace modulu nebo cesta k souboru modulu.
Pokud je hodnota cesta, může být cesta plně kvalifikovaná nebo relativní. Relativní cesta je vyřešena vzhledem ke skriptu, který obsahuje příkaz using.
Pokud je hodnota název nebo specifikace modulu, PowerShell vyhledá zadaný modul v psModulePath .
Specifikace modulu je hashovatelná tabulka s následujícími klíči.
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.
Parametr FullyQualifiedModule nelze zadat ve stejném příkazu jako parametr Module. Oba parametry se vzájemně vylučují.
Typ: | ModuleSpecification[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-FuzzyMinimumDistance
Tento parametr umožňuje filtrovat přibližné výsledky, aby byly více nebo méně přesné. Vzdálenost se vypočítá pomocí algoritmu Damerau Levenshtein Distance, který udává, kolik kroků odpovídá původní hodnotě. Menší vzdálenost je přesnější. Vzdálenost nuly je přesná shoda.
Typ: | UInt32 |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-ListImported
Označuje, že tato rutina získá pouze příkazy v aktuální relaci.
Počínaje PowerShellem 3.0 ve výchozím nastavení Get-Command
načte všechny nainstalované příkazy, včetně příkazů v aktuální relaci, ale ne pouze na ně. V PowerShellu 2.0 získá pouze příkazy v aktuální relaci.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-Module
Určuje pole modulů. Tato rutina získá příkazy, které pocházejí ze zadaných modulů. Zadejte názvy modulů nebo objektů modulů.
Tento parametr přebírá řetězcové hodnoty, ale hodnota tohoto parametru může být také PSModuleInfo objekt, například objekty, které Get-Module
vrací rutiny.Import-PSSession
Typ: | String[] |
Aliasy: | PSSnapin |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
-Name
Určuje pole názvů. Tato rutina získá pouze příkazy, které mají zadaný název. Zadejte název nebo vzor názvu. Jsou povoleny zástupné znaky.
Pokud chcete získat příkazy se stejným názvem, použijte parametr Vše . Pokud mají dva příkazy stejný název, ve výchozím nastavení získá příkaz, Get-Command
který se spustí při zadání názvu příkazu.
Typ: | String[] |
Position: | 0 |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
-Noun
Určuje pole podstatných jmen příkazů. Tato rutina získá příkazy, které zahrnují rutiny, funkce a aliasy, které obsahují názvy, které obsahují zadané podstatné jméno. Zadejte jedno nebo více jmenných jmen nebo vzorů podstatných jmen. Jsou povoleny zástupné znaky.
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
-ParameterName
Určuje pole názvů parametrů. Tato rutina získá příkazy v relaci se zadanými parametry. Zadejte názvy parametrů nebo aliasy parametrů. Podporují se zástupné znaky.
Parametry ParameterName a ParameterType prohledávají pouze příkazy v aktuální relaci.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | True |
-ParameterType
Určuje pole názvů parametrů. Tato rutina získá příkazy v relaci, které mají parametry zadaného typu. Zadejte úplný název nebo částečný název typu parametru. Podporují se zástupné znaky.
Parametry ParameterName a ParameterType prohledávají pouze příkazy v aktuální relaci.
Tento parametr byl představen ve Windows PowerShellu 3.0.
Typ: | PSTypeName[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | True |
-ShowCommandInfo
Označuje, že tato rutina zobrazuje informace o příkazu.
Tento parametr byl představen ve Windows PowerShellu 5.0.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Syntax
Označuje, že tato rutina získá pouze následující zadaná data o příkazu:
- Aliasy. Získá standardní název.
- Rutiny. Získá syntaxi.
- Funkce a filtry Získá definici funkce.
- Skripty a aplikace nebo soubory Získá cestu a název souboru.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-TotalCount
Určuje počet příkazů, které se mají získat. Tento parametr můžete použít k omezení výstupu příkazu.
Typ: | Int32 |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-UseAbbreviationExpansion
Označuje použití shody znaků v příkazu k vyhledání s velkými písmeny v příkazu. Například by se shodoval Import-PowerShellDataFile
s jednotlivými znaky, i-psdf
které by hledání odpovídaly velkými písmeny ve výsledku. Pokud použijete tento typ shody, nebudou mít žádné zástupné náčiní žádné shody.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | False |
-UseFuzzyMatching
Označuje použití přibližného odpovídajícího algoritmu při hledání příkazů. Pořadí výstupu je od nejbližší shody k nejméně pravděpodobné shodě. Zástupné znaky by neměly být použity se přibližnými shodami, protože se pokusí shodovat příkazy, které můžou obsahovat tyto zástupné znaky.
Typ: | SwitchParameter |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | False |
Přijmout zástupné znaky: | False |
-Verb
Určuje pole příkazů. Tato rutina získá příkazy, které zahrnují rutiny, funkce a aliasy, které obsahují názvy, které obsahují zadanou operaci. Zadejte jedno nebo více sloves nebo slovesných vzorů. Jsou povoleny zástupné znaky.
Typ: | String[] |
Position: | Named |
Default value: | None |
Vyžadováno: | False |
Přijmout vstup kanálu: | True |
Přijmout zástupné znaky: | True |
Vstupy
K této rutině můžete generovat názvy příkazů.
Výstupy
Tato rutina vrací objekty odvozené z CommandInfo třídy. Vrácený typ objektu závisí na typu příkazu, který Get-Command
se získá.
Představuje aliasy.
Představuje aplikace a soubory.
Představuje rutiny.
Představuje funkce a filtry.
Poznámky
PowerShell obsahuje následující aliasy pro Get-Command
:
Všechny platformy:
gcm
Pokud je pro relaci k dispozici více než jeden příkaz se stejným názvem, vrátí příkaz,
Get-Command
který se spustí při zadání názvu příkazu. Pokud chcete získat příkazy se stejným názvem, které jsou uvedené v pořadí spuštění, použijte parametr Vše . Další informace najdete v tématu about_Command_Precedence.Když se modul naimportuje automaticky, efekt je stejný jako použití rutiny
Import-Module
. Modul může přidávat příkazy, typy a formátovací soubory a spouštět skripty v relaci. Pokud chcete povolit, zakázat a nakonfigurovat automatický import modulů, použijte proměnnou$PSModuleAutoLoadingPreference
předvoleb. Další informace najdete v tématu about_Preference_Variables.