Get-Command

Obtient toutes les commandes.

Syntax

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]
   [-UseAbbreviationExpansion]
   [<CommonParameters>]

Description

L’applet Get-Command de commande obtient toutes les commandes installées sur l’ordinateur, y compris les applets de commande, les alias, les fonctions, les filtres, les scripts et les applications. Get-Command obtient les commandes des modules PowerShell et des commandes qui ont été importées à partir d’autres sessions. Pour obtenir uniquement les commandes qui ont été importées dans la session active, utilisez le paramètre ListImported.

Sans paramètres, Get-Command obtient tous les applets de commande, fonctions et alias installés sur l’ordinateur. Get-Command * obtient tous les types de commandes, y compris tous les fichiers non-PowerShell dans la variable d’environnement Path ($env:Path), qu’il répertorie dans le type de commande Application.

Get-Command qui utilise le nom exact de la commande, sans caractères génériques, importe automatiquement le module qui contient la commande afin que vous puissiez utiliser la commande immédiatement. Pour activer, désactiver et configurer l’importation automatique de modules, utilisez la variable de $PSModuleAutoLoadingPreference préférence. Pour plus d’informations, consultez about_Preference_Variables.

Get-Command obtient ses données directement à partir du code de commande, contrairement à Get-Help, qui obtient ses informations à partir des rubriques d’aide.

À compter de Windows PowerShell 5.0, les résultats de l’applet Get-Command de commande affichent une colonne Version par défaut. Une nouvelle propriété Version a été ajoutée à la classe CommandInfo .

Exemples

Exemple 1 : Obtenir des applets de commande, des fonctions et des alias

Cette commande obtient les applets de commande PowerShell, les fonctions et les alias installés sur l’ordinateur.

Get-Command

Exemple 2 : Obtenir des commandes dans la session active

Cette commande utilise le paramètre ListImported pour récupérer uniquement les commandes de la session active.

Get-Command -ListImported

Exemple 3 : Obtenir des applets de commande et les afficher dans l’ordre

Cette commande obtient toutes les applets de commande, les trie par ordre alphabétique en fonction du nom de l'applet de commande, et les affiche ensuite dans des groupes basés sur le nom. Cet affichage peut vous aider à trouver les applets de commande d'une tâche.

Get-Command -Type Cmdlet | Sort-Object -Property Noun | Format-Table -GroupBy Noun

Exemple 4 : Obtenir des commandes dans un module

Cette commande utilise le paramètre Module pour obtenir les commandes des modules Microsoft.PowerShell.Security et Microsoft.PowerShell.Utility.

Get-Command -Module Microsoft.PowerShell.Security, Microsoft.PowerShell.Utility

Exemple 5 : Obtenir des informations sur une applet de commande

Cette commande obtient des informations sur l’applet de Get-AppLockerPolicy commande. Elle importe également le module AppLocker, qui ajoute toutes les commandes du module AppLocker à la session active.

Get-Command Get-AppLockerPolicy

Lorsqu’un module est importé automatiquement, l’effet est identique à l’utilisation de l’applet de commande Import-Module. Le module peut ajouter des commandes, des types et des fichiers de mise en forme, puis exécuter des scripts dans la session. Pour activer, désactiver et configurer l’importation automatique de modules, utilisez la variable de $PSModuleAutoLoadingPreference préférence. Pour plus d’informations, consultez about_Preference_Variables.

Exemple 6 : Obtenir la syntaxe d’une applet de commande

Cette commande utilise les paramètres ArgumentList et Syntax pour obtenir la syntaxe de l’applet Get-ChildItem de commande lorsqu’elle est utilisée dans le lecteur Cert :. Le lecteur Cert : est un lecteur PowerShell que le fournisseur de certificats ajoute à la session.

Get-Command  -Name Get-Childitem -Args Cert: -Syntax

Lorsque vous comparez la syntaxe affichée dans la sortie avec la syntaxe affichée lorsque vous omettez le paramètre Args (ArgumentList), vous voyez que le fournisseur de certificats ajoute un paramètre dynamique, CodeSigningCert, à l’applet de Get-ChildItem commande.

Pour plus d’informations sur le fournisseur de certificats, consultez about_Certificate_Provider.

Exemple 7 : Obtenir des paramètres dynamiques

La commande de l’exemple utilise la Get-DynamicParameters fonction pour obtenir les paramètres dynamiques que le fournisseur de certificats ajoute à l’applet de Get-ChildItem commande lorsqu’il est utilisé dans le lecteur 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

Dans Get-DynamicParameters cet exemple, la fonction obtient les paramètres dynamiques d’une applet de commande. Il s'agit d'une alternative à la méthode utilisée dans l'exemple précédent. Un paramètre dynamique peut être ajouté à une applet de commande par une autre applet de commande ou un fournisseur.

Exemple 8 : Obtenir toutes les commandes de tous types

Cette commande obtient toutes les commandes de tous types sur l’ordinateur local, y compris les fichiers exécutables dans les chemins de la variable d’environnement Path ($env:path).

Get-Command *

Elle retourne un objet ApplicationInfo (System.Management.Automation.ApplicationInfo) pour chaque fichier, au lieu d'un objet FileInfo (System.IO.FileInfo).

Exemple 9 : Obtenir des applets de commande à l’aide d’un nom de paramètre et d’un type

Cette commande obtient des applets de commande qui ont un paramètre dont le nom inclut l’authentification et dont le type est AuthenticationMechanism.

Get-Command -ParameterName *Auth* -ParameterType AuthenticationMechanism

Vous pouvez vous servir d'une commande similaire à celle-ci pour rechercher les applets de commande qui vous permettent de spécifier la méthode utilisée pour authentifier l'utilisateur.

Le paramètre ParameterType distingue les paramètres qui acceptent une valeur AuthenticationMechanism par rapport à ceux qui acceptent un paramètre AuthenticationLevel, même quand ils ont des noms similaires.

Exemple 10 : Obtenir un alias

Cet exemple montre comment utiliser l’applet de Get-Command commande avec un alias.

Get-Command -Name dir

CommandType     Name                                               ModuleName
-----------     ----                                               ----------
Alias           dir -> Get-ChildItem

Bien qu’il soit généralement utilisé sur les applets de commande et les fonctions, Get-Command obtient également des scripts, des fonctions, des alias et des fichiers exécutables.

La sortie de la commande montre l'affichage spécial de la valeur de propriété Name pour les alias. L'affichage montre l'alias et le nom de commande complet.

Exemple 11 : Obtenir la syntaxe à partir d’un alias

Cet exemple montre comment obtenir la syntaxe ainsi que le nom standard d’un alias.

La sortie de la commande affiche l’alias étiqueté avec le nom standard, suivi de la syntaxe.

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>]

Exemple 12 : Obtenir toutes les instances de la commande Bloc-notes

Cet exemple utilise le paramètre All de l’applet Get-Command de commande pour afficher toutes les instances de la Notepad commande sur l’ordinateur local.

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

Le paramètre All est utile quand il existe plusieurs commandes portant le même nom dans la session.

À compter de Windows PowerShell 3.0, par défaut, lorsque la session inclut plusieurs commandes portant le même nom, Get-Command obtient uniquement la commande qui s’exécute lorsque vous tapez le nom de la commande. Avec le paramètre All , Get-Command obtient toutes les commandes portant le nom spécifié et les retourne dans l’ordre de priorité d’exécution. Pour exécuter une autre commande que la première de la liste, tapez le chemin d'accès complet de la commande.

Pour plus d’informations sur la priorité des commandes, consultez about_Command_Precedence.

Exemple 13 : Obtenir le nom d’un module qui contient une applet de commande

Cette commande obtient le nom du module d’origine de l’applet Get-Date de commande. La commande utilise la propriété ModuleName de toutes les commandes.

(Get-Command Get-Date).ModuleName

Microsoft.PowerShell.Utility

Ce format de commande fonctionne sur les commandes dans les modules PowerShell, même si elles ne sont pas importées dans la session.

Exemple 14 : Obtenir des applets de commande et des fonctions qui ont un type de sortie

Get-Command -Type Cmdlet | Where-Object OutputType | Format-List -Property Name, OutputType

Cette commande obtient les applets de commande et les fonctions qui ont un type de sortie, ainsi que le type d'objet qu'elles retournent.

La première partie de la commande obtient toutes les applets de commande. Un opérateur de pipeline (|) envoie les applets de commande à l’applet Where-Object de commande, qui sélectionne uniquement celles dans lesquelles la propriété OutputType est remplie. Un autre opérateur de pipeline envoie les objets d’applet de commande sélectionnés à l’applet Format-List de commande, qui affiche le nom et le type de sortie de chaque applet de commande dans une liste.

La propriété OutputType d'un objet CommandInfo a une valeur non null uniquement quand le code de l'applet de commande définit l'attribut OutputType de cette dernière.

Exemple 15 : Obtenir des applets de commande qui prennent un type d’objet spécifique en tant qu’entrée

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

Cette commande recherche les applets de commande qui acceptent des objets de carte réseau en entrée. Vous pouvez utiliser ce format de commande pour rechercher les applets de commande qui acceptent le type d'objet retourné par une commande.

La commande utilise la propriété intrinsèque PSTypeNames de tous les objets, qui obtient les types décrivant l'objet. Pour obtenir la propriété PSTypeNames d'une carte réseau, et non la propriété PSTypeNames d'une collection de cartes réseau, la commande utilise une notation de tableau. Ainsi, elle obtient la première carte réseau retournée par l'applet de commande.

Exemple 16 : Obtenir des commandes à l’aide d’une correspondance approximative

Dans cet exemple, le nom de la commande a délibérément une faute de frappe « get-commnd ». À l’aide du -UseFuzzyMatching commutateur, l’applet de commande a déterminé que la meilleure correspondance était Get-Command suivie d’autres commandes natives sur le système qui correspondaient à une correspondance similaire.

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

Paramètres

-All

Indique que cette applet de commande obtient toutes les commandes, y compris les commandes du même type qui ont le même nom. Par défaut, Get-Command obtient uniquement les commandes qui s’exécutent lorsque vous tapez le nom de la commande.

Pour plus d’informations sur la méthode que PowerShell utilise pour sélectionner la commande à exécuter lorsque plusieurs commandes portent le même nom, consultez about_Command_Precedence. Pour plus d’informations sur les noms de commandes qualifiés pour les modules et les commandes en cours d’exécution qui ne s’exécutent pas par défaut en raison d’un conflit de noms, consultez about_Modules.

Ce paramètre a été introduit dans Windows PowerShell 3.0.

Dans Windows PowerShell 2.0, Get-Command obtient toutes les commandes par défaut.

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ArgumentList

Spécifie un tableau d’arguments. Cette applet de commande obtient des informations sur une applet de commande ou une fonction lorsqu’elle est utilisée avec les paramètres spécifiés (« arguments »). L'alias d'ArgumentList est Args.

Pour détecter les paramètres dynamiques disponibles uniquement lorsque certains autres paramètres sont utilisés, définissez la valeur d’ArgumentList sur les paramètres qui déclenchent les paramètres dynamiques.

Pour détecter les paramètres dynamiques qu’un fournisseur ajoute à une applet de commande, définissez la valeur du paramètre ArgumentList sur un chemin d’accès dans le lecteur du fournisseur, par exemple WSMan :, HKLM :, ou Cert :. Quand la commande est une applet de commande de fournisseur PowerShell, entrez un seul chemin dans chaque commande. Les applets de commande du fournisseur retournent uniquement les paramètres dynamiques pour le premier chemin d’accès à la valeur d’ArgumentList. Pour plus d’informations sur les applets de commande du fournisseur, consultez about_Providers.

Type:Object[]
Aliases:Args
Position:1
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-CommandType

Spécifie les types de commandes que cette applet de commande obtient. Entrez un ou plusieurs types de commande. Utilisez CommandType ou son alias, Type. Par défaut, Get-Command obtient toutes les applets de commande, fonctions et alias.

Les valeurs valides pour ce paramètre sont :

  • Alias: obtient les alias de toutes les commandes PowerShell. Pour plus d’informations, consultez about_Aliases.

  • All: obtient tous les types de commandes. Cette valeur de paramètre est l’équivalent de Get-Command *.

  • Application: obtient les fichiers non-PowerShell dans les chemins d’accès répertoriés dans la variable d’environnement Path ($env:path), y compris .txtles fichiers , .exeet .dll . Pour plus d'informations sur la variable d'environnement Path, consultez about_Environment_Variables.

  • Cmdlet: obtient toutes les applets de commande.

  • ExternalScript: obtient tous les .ps1 fichiers dans les chemins d’accès répertoriés dans la variable d’environnement Path ($env:path).

  • Filter et Function: obtient toutes les fonctions et filtres powerShell simples et avancés.

  • Script: obtient tous les blocs de script. Pour obtenir des scripts PowerShell (.ps1 fichiers), utilisez la ExternalScript valeur .

Ces valeurs sont définies comme une énumération basée sur un indicateur. Vous pouvez combiner plusieurs valeurs pour définir plusieurs indicateurs à l’aide de ce paramètre. Les valeurs peuvent être passées au paramètre CommandType sous la forme d’un tableau de valeurs ou d’une chaîne séparée par des virgules de ces valeurs. L’applet de commande combine les valeurs à l’aide d’une opération binary-OR. La transmission de valeurs en tant que tableau est l’option la plus simple et vous permet également d’utiliser la saisie semi-automatique par tabulation sur les valeurs.

Type:CommandTypes
Aliases:Type
Accepted values:Alias, Function, Filter, Cmdlet, ExternalScript, Application, Script, Workflow, Configuration, All
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-FullyQualifiedModule

La valeur peut être un nom de module, une spécification de module complète ou un chemin d’accès à un fichier de module.

Lorsque la valeur est un chemin d’accès, le chemin d’accès peut être complet ou relatif. Un chemin d’accès relatif est résolu par rapport au script qui contient l’instruction using.

Lorsque la valeur est un nom ou une spécification de module, PowerShell recherche le module spécifié dans PSModulePath .

Une spécification de module est une table de hachage qui contient les clés suivantes.

  • ModuleName - Obligatoire Spécifie le nom du module.

  • GUID - Optionnel Spécifie le GUID du module.

  • Il est également obligatoire de spécifier au moins l’une des trois clés ci-dessous.

    • ModuleVersion - Spécifie une version minimale acceptable du module.

    • MaximumVersion - Spécifie la version maximale acceptable du module.

    • RequiredVersion - Spécifie une version exacte et requise du module. Cela ne peut pas être utilisé avec les autres clés de version.

Vous ne pouvez pas spécifier le paramètre FullyQualifiedModule dans la même commande qu’un paramètre Module . Les deux paramètres s’excluent mutuellement.

Type:ModuleSpecification[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-ListImported

Indique que cette applet de commande obtient uniquement les commandes de la session active.

À partir de PowerShell 3.0, par défaut, Get-Command obtient toutes les commandes installées, y compris, mais sans s’y limiter, les commandes de la session active. Dans PowerShell 2.0, elle obtient uniquement les commandes de la session active.

Ce paramètre a été introduit dans Windows PowerShell 3.0.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-Module

Spécifie un tableau de modules. Cette applet de commande obtient les commandes provenant des modules spécifiés. Entrez les noms des modules ou des objets de module.

Ce paramètre accepte des valeurs de chaîne, mais la valeur de ce paramètre peut également être un objet PSModuleInfo , tel que les objets que les Get-Module applets de commande et Import-PSSession retournent.

Type:String[]
Aliases:PSSnapin
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-Name

Spécifie un tableau de noms. Cette applet de commande obtient uniquement les commandes qui ont le nom spécifié. Entrez un nom ou un modèle de nom. Les caractères génériques sont autorisés.

Pour obtenir les commandes qui ont le même nom, utilisez le paramètre All. Lorsque deux commandes ont le même nom, par défaut, Get-Command obtient la commande qui s’exécute lorsque vous tapez le nom de la commande.

Type:String[]
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-Noun

Spécifie un tableau de noms de commande. Cette applet de commande obtient des commandes, qui incluent des applets de commande, des fonctions et des alias, qui ont des noms qui incluent le nom spécifié. Entrez un ou plusieurs noms ou modèles de noms. Les caractères génériques sont autorisés.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

-ParameterName

Spécifie un tableau de noms de paramètres. Cette applet de commande obtient les commandes de la session qui ont les paramètres spécifiés. Entrez des noms de paramètres ou des alias de paramètre. Les caractères génériques sont pris en charge.

Les paramètres ParameterName et ParameterType recherchent uniquement les commandes dans la session active.

Ce paramètre a été introduit dans Windows PowerShell 3.0.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-ParameterType

Spécifie un tableau de noms de paramètres. Cette applet de commande obtient les commandes de la session qui ont des paramètres du type spécifié. Entrez le nom complet ou partiel d'un type de paramètre. Les caractères génériques sont pris en charge.

Les paramètres ParameterName et ParameterType recherchent uniquement les commandes dans la session active.

Ce paramètre a été introduit dans Windows PowerShell 3.0.

Type:PSTypeName[]
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:True

-ShowCommandInfo

Indique que cette applet de commande affiche des informations de commande.

Ce paramètre a été introduit dans Windows PowerShell 5.0.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Syntax

Indique que cette applet de commande obtient uniquement les données spécifiées suivantes concernant la commande :

  • Alias. Obtient le nom standard.
  • Cmdlets. Obtient la syntaxe.
  • Fonctions et filtres. Obtient la définition de fonction.
  • Scripts et applications ou fichiers. Obtient le chemin d’accès et le nom de fichier.
Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-TotalCount

Spécifie le nombre de commandes à obtenir. Vous pouvez utiliser ce paramètre pour limiter la sortie d'une commande.

Type:Int32
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-UseAbbreviationExpansion

Indique l’utilisation de la correspondance des caractères de la commande à rechercher avec des caractères majuscules dans une commande. Par exemple, i-psdf correspond Import-PowerShellDataFile à chacun des caractères à rechercher correspond à un caractère majuscule dans le résultat. Lorsque vous utilisez ce type de correspondance, les caractères génériques n’entraînent aucune correspondance.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:False

-UseFuzzyMatching

Indique l’utilisation d’un algorithme de correspondance approximative lors de la recherche de commandes. L’ordre de la sortie est de la correspondance la plus proche à la correspondance la moins probable. Les caractères génériques ne doivent pas être utilisés avec une correspondance approximative, car ils tenteront de faire correspondre des commandes qui peuvent contenir ces caractères génériques.

Type:SwitchParameter
Position:Named
Default value:None
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Verb

Spécifie un tableau de verbes de commande. Cette applet de commande obtient des commandes, qui incluent des applets de commande, des fonctions et des alias, qui ont des noms qui incluent le verbe spécifié. Entrez un ou plusieurs verbes ou modèles de verbes. Les caractères génériques sont autorisés.

Type:String[]
Position:Named
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

Entrées

String

Vous pouvez diriger des noms de commande vers cette applet de commande.

Sorties

CommandInfo

Cette applet de commande retourne des objets dérivés de la classe CommandInfo . Le type d’objet retourné dépend du type de commande qui Get-Command obtient.

AliasInfo

Représente des alias.

ApplicationInfo

Représente les applications et les fichiers.

CmdletInfo

Représente des applets de commande.

FunctionInfo

Représente des fonctions et des filtres.

Notes

PowerShell inclut les alias suivants pour Get-Command:

  • Toutes les plateformes :

    • gcm
  • Lorsque plusieurs commandes portant le même nom sont disponibles pour la session, Get-Command retourne la commande qui s’exécute lorsque vous tapez le nom de la commande. Pour obtenir des commandes qui ont le même nom, répertoriées dans l’ordre d’exécution, utilisez le paramètre All . Pour plus d’informations, consultez about_Command_Precedence.

  • Lorsqu’un module est importé automatiquement, l’effet est identique à l’utilisation de l’applet de Import-Module commande. Le module peut ajouter des commandes, des types et des fichiers de mise en forme, puis exécuter des scripts dans la session. Pour activer, désactiver et configurer l’importation automatique de modules, utilisez la variable de $PSModuleAutoLoadingPreference préférence. Pour plus d’informations, consultez about_Preference_Variables.