Partager via


à propos de Function_Provider

Nom du fournisseur

Fonction

Lecteurs

Function:

Capacités

ShouldProcess

Brève description

Fournit l’accès aux fonctions définies dans PowerShell.

Description détaillée

Le fournisseur PowerShell Function vous permet d'obtenir, d'ajouter, de modifier, d'effacer et de supprimer les fonctions et filtres dans PowerShell.

Une fonction est un bloc nommé de code qui effectue une action. Lorsque vous tapez le nom de la fonction, le code de la fonction s’exécute. Un filtre est un bloc nommé de code qui établit des conditions pour une action. Vous pouvez taper le nom du filtre à la place de la condition, par exemple dans une commande Where-Object.

Le lecteur Function est un espace de noms plat qui contient uniquement les objets function et filter. Ni les fonctions ni les filtres n'ont des éléments enfants.

Le fournisseur Function prend en charge les cmdlets suivantes, qui sont abordées dans cet article.

Types exposés par ce fournisseur

Chaque fonction est une instance de la classe System.Management.Automation.FunctionInfo. Chaque filtre est une instance de la classe System.Management.Automation.FilterInfo.

Le fournisseur Function expose son magasin de données dans le lecteur Function:. Pour travailler avec des fonctions, vous pouvez changer votre emplacement pour le lecteur Function: (Set-Location Function:). Vous pouvez également travailler à partir d’un autre lecteur PowerShell. Pour référencer une fonction à partir d'un autre emplacement, utilisez le nom du lecteur (Function:) dans le chemin d'accès.

Set-Location Function:

Pour revenir à un lecteur de système de fichiers, tapez le nom du lecteur. Par exemple, tapez :

Set-Location C:

Vous pouvez également utiliser le fournisseur de fonctions à partir de n'importe quel autre lecteur PowerShell. Pour référencer une fonction à partir d'un autre emplacement, utilisez le nom du lecteur Function: dans le chemin d'accès.

Remarque

PowerShell utilise des alias pour vous permettre de travailler de manière familière avec les chemins des fournisseurs. Les commandes telles que dir et ls sont désormais des alias pour Get-ChildItem , cd est un alias pour Set-Location et pwd est un alias pour Get-Location .

Obtention de fonctions

Cette commande obtient la liste de toutes les fonctions de la session active. Vous pouvez utiliser cette commande à partir de n’importe quel lecteur PowerShell.

Get-ChildItem -Path Function:

Le fournisseur de fonctions n’a pas de conteneurs. Par conséquent, la commande ci-dessus a le même effet lorsqu’elle est utilisée avec Get-ChildItem.

Get-ChildItem -Path Function:

Vous pouvez récupérer la définition d’une fonction en accédant à la propriété Definition, comme indiqué ci-dessous.

(Get-Item -Path Function:more).Definition

Vous pouvez également récupérer la définition d’une fonction à l’aide de son chemin d’accès fournisseur préfixé par le signe dollar ($).

$Function:more

Pour récupérer la définition d’une fonction qui a un tiret (-) dans le nom, entourez la valeur après le signe dollar avec des accolades.

${Function:Clear-Host}

Obtenir des fonctions sélectionnées

Cette commande obtient la fonction man à partir du lecteur Function:. Il utilise l’applet de commande Get-Item pour obtenir la fonction. L’opérateur de pipeline (|) envoie le résultat à Format-Table. Le paramètre -Wrap fait passer le texte qui ne tient pas sur la ligne à la ligne suivante. Le paramètre -AutoSize redimensionne les colonnes du tableau pour prendre en charge le texte.

Get-Item -Path man | Format-Table -Wrap -AutoSize

Travailler avec les chemins d'accès du fournisseur de fonctions

Ces commandes obtiennent toutes deux la fonction nommée C:. La première commande peut être utilisée dans n'importe quel lecteur. La deuxième commande est utilisée dans le lecteur Function:. Étant donné que le nom se termine par un signe deux-points, qui est la syntaxe d’un lecteur, vous devez qualifier le chemin d’accès avec le nom du lecteur. Dans le lecteur Function:, vous pouvez utiliser l’un ou l’autre format. Dans la deuxième commande, le point (.) représente l’emplacement actuel.

PS C:\> Get-Item -Path Function:c:
PS Function:\> Get-Item -Path .\c:

Création d’une fonction

Cette commande utilise l’applet de commande New-Item pour créer une fonction appelée Win32:. L’expression dans les accolades est le scriptblock représenté par le nom de la fonction.

New-Item -Path Function:Win32: -Value {Set-Location C:\Windows\System32}

Étendues

Tout comme les variables, les fonctions appartiennent à une étendue spécifique. Lorsque vous créez une fonction, elle est disponible uniquement dans l’étendue dans laquelle elle a été créée. Pour rendre une fonction disponible, utilisez un modificateur d’étendue lorsque vous créez la fonction. Pour plus d’informations, consultez about_Scopes.

L’exemple suivant utilise le modificateur d’étendue Global: pour créer une fonction dans l’étendue globale.

function New-Function {
    param(
        [string] $Name,
        [scriptblock] $Script
    )

    $lp = "Function:\Global:$($Name)"
    Set-Item -LiteralPath $lp -Value $Script -PassThru -Force
}

New-Function -Name 'Win32:' -Script { Set-Location C:\Windows\System32 }

Sans le modificateur d’étendue Global:, la fonction est créée dans l’étendue locale. Lorsque New-Function quitte la fonction nouvellement créée n’existe plus.

Suppression d’une fonction

Cette commande supprime la fonction more de la session active.

Remove-Item Function:more

Modification d’une fonction

Cette commande utilise la cmdlet Set-Item pour modifier la fonction prompt afin qu'elle affiche l'heure avant le chemin d'accès.

Set-Item -Path Function:prompt -Value {
  'PS '+ (Get-Date -Format t) + " " + (Get-Location) + '> '
  }

Renommer une fonction

Cette commande utilise l’applet de commande Rename-Item pour modifier le nom de la fonction help en gh.

Rename-Item -Path Function:help -NewName gh

Copie d’une fonction

Cette commande copie la prompt fonction en oldPromptcréant efficacement un nom pour le scriptblock associé à la fonction d’invite. Vous pouvez l’utiliser pour enregistrer la fonction d’invite d’origine si vous envisagez de la modifier. La propriété options de la nouvelle fonction a la valeur None. Pour modifier la valeur de la propriété Options , utilisez Set-Item.

Copy-Item -Path Function:prompt -Destination Function:oldPrompt

Paramètres dynamiques

Les paramètres dynamiques sont des paramètres cmdlet ajoutés par un fournisseur PowerShell et disponibles uniquement lorsque la cmdlet est utilisée dans un lecteur activé par le fournisseur.

Options <[System.Management.Automation.ScopedItemOptions]>

Détermine la valeur de la propriété options d’une fonction.

  • None: Aucune option. None est la valeur par défaut.
  • Constant: la fonction ne peut pas être supprimée et ses propriétés ne peuvent pas être modifiées. Constant est disponible uniquement lorsque vous créez une fonction. Vous ne pouvez pas modifier l’option d’une fonction existante en Constant.
  • Private: la fonction est visible uniquement dans le contexte actuel
  • (pas dans les étendues enfants).
  • ReadOnly: les propriétés de la fonction ne peuvent pas être modifiées, sauf à l’aide du paramètre -Force. Vous pouvez utiliser Remove-Item pour supprimer la fonction.
  • AllScope: la fonction est copiée dans toutes les nouvelles étendues créées.

Cmdlets supportées

Utilisation du pipeline

Les cmdlets des fournisseurs acceptent l’entrée en pipeline. Vous pouvez utiliser le pipeline pour simplifier la tâche en envoyant des données de fournisseur d’une applet de commande à une autre applet de commande du fournisseur. Pour en savoir plus sur l'utilisation du pipeline avec les cmdlets du fournisseur, consultez les références des cmdlets fournies tout au long de cet article.

Obtenir de l’aide

À compter de Windows PowerShell 3.0, vous pouvez obtenir des rubriques d’aide personnalisées pour les applets de commande de fournisseur qui expliquent comment ces applets de commande se comportent dans un lecteur de système de fichiers.

Pour obtenir les rubriques d’aide personnalisées pour le lecteur de système de fichiers, exécutez une commande Get-Help dans un lecteur de système de fichiers ou utilisez le paramètre -Path de Get-Help pour spécifier un lecteur de système de fichiers.

Get-Help Get-ChildItem
Get-Help Get-ChildItem -Path Function:

Voir aussi