about_Methods

Mis à jour: mai 2014

S'applique à: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

RUBRIQUE

about_methods

DESCRIPTION COURTE

Décrit comment utiliser des méthodes pour effectuer des actions sur des objets dans Windows PowerShell.

DESCRIPTION DÉTAILLÉE

Windows PowerShell utilise des objets pour représenter les éléments des magasins de données ou l'état de l'ordinateur. Par exemple, les objets FileInfo représentent les fichiers dans les lecteurs de système de fichiers et les objets ProcessInfo représentent les processus sur l'ordinateur.

Un objet comporte des propriétés, qui stockent les données relatives à l'objet, ainsi que des méthodes qui vous permettent de modifier l'objet.

Une « méthode » est un ensemble d'instructions qui spécifient une action réalisable sur l'objet. Par exemple, l'objet FileInfo inclut la méthode CopyTo qui permet de copier le fichier qu'il représente.

Pour obtenir toutes les méthodes d'un objet, utilisez l'applet de commande Get-Member. Utilisez sa propriété MemberType avec la valeur « Method ». La commande suivante obtient les méthodes des objets process.

        PS C:\>Get-Process | Get-Member -MemberType Method
       
           TypeName: System.Diagnostics.Process

         Name                      MemberType Definition
         ----                      ---------- ----------
         BeginErrorReadLine        Method     System.Void BeginErrorReadLine()
         BeginOutputReadLine       Method     System.Void BeginOutputReadLine()
         ...
         Kill                      Method     System.Void Kill()
         Refresh                   Method     System.Void Refresh()
         Start                     Method     bool Start()
         ToString                  Method     string ToString()
         WaitForExit               Method     bool WaitForExit(int milliseconds), System.Void WaitForExit()
         WaitForInputIdle          Method     bool WaitForInputIdle(int milliseconds), bool WaitForInputIdle()

Pour exécuter ou « appeler » une méthode d'un objet, tapez un point (.), le nom de la méthode et une paire de parenthèses « () ». Si la méthode possède des arguments, placez les valeurs d'argument à l'intérieur des parenthèses. Les parenthèses sont obligatoires dans chaque appel de méthode, même si la méthode ne possède pas d'argument.

Par exemple, la commande suivante appelle la méthode Kill des processus pour arrêter le processus Notepad sur l'ordinateur. Cela a pour effet de fermer l'instance du Bloc-notes. (La commande Get-Process est placée entre parenthèses pour qu'elle s'exécute toujours avant l'appel à la méthode Kill.)

        (Get-Process Notepad).Kill()

La méthode Split des chaînes est également très utile. Cette méthode utilise un caractère de délimiteur comme argument qui indique où fractionner la chaîne.

        PS C:\>$a = "Try-Catch-Finally"
        PS C:\>$a.Split("-")
        Try
        Catch
        Finally

Comme indiqué dans les exemples précédents, vous pouvez appeler une méthode sur un objet obtenu à l'aide d'une commande ou sur un objet dans une variable.

À compter de Windows PowerShell 4.0, l'appel de méthodes à l'aide de noms de méthodes dynamiques est pris en charge.

EN SAVOIR PLUS SUR LES MÉTHODES

Pour obtenir les définitions des méthodes d'un objet, affichez la rubrique d'aide du type d'objet en question dans la bibliothèque MSDN et consultez la page sur les méthodes associées. Par exemple, la page suivante décrit les méthodes des objets processus (System.Diagnostics.Process).

         https://msdn.microsoft.com/library/system.diagnostics.process_methods

Pour connaître les arguments d'une méthode, examinez la définition de la méthode, qui s'apparente au diagramme syntaxique d'une applet de commande Windows PowerShell.

Une définition de méthode peut comporter une ou plusieurs signatures de méthode, qui correspondent aux jeux de paramètres pour les applets de commande Windows PowerShell. Les signatures affichent toutes les syntaxes correctes des commandes utilisées pour appeler la méthode.

Par exemple, la méthode CopyTo de la classe FileInfo contient les deux signatures de méthode suivantes :

        1. CopyTo(String destFileName)
        2. CopyTo(String destFileName, Boolean overwrite)

La première signature de méthode utilise le nom du fichier de destination (et son chemin d'accès). L'exemple suivant fait appel à la première méthode CopyTo pour copier le fichier Final.txt dans le répertoire C:\Bin.

        (Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt")

La deuxième signature de méthode utilise le nom du fichier de destination et une valeur booléenne qui détermine si ce fichier doit être remplacé, s'il existe déjà.

L'exemple suivant se sert de la seconde méthode CopyTo pour copier le fichier Final.txt dans le répertoire C:\Bin et remplacer les fichiers existants.

        (Get-ChildItem c:\final.txt).CopyTo("c:\bin\final.txt", $true)

MÉTHODES DES OBJETS SCALAIRES ET DES COLLECTIONS

Les méthodes d'un seul objet (« scalaire ») d'un type particulier diffèrent souvent des méthodes d'une collection d'objets du même type.

Par exemple, chaque processus comporte une méthode Kill, alors qu'une collection de processus n'en a pas.

À compter de Windows PowerShell 3.0, Windows PowerShell essaie d'empêcher les erreurs de script qui résultent des différences dans les méthodes des objets scalaires et des collections.

À compter de Windows PowerShell 4.0, le filtrage de collection à l'aide d'une syntaxe de méthode est pris en charge.

Si vous envoyez une collection, mais demandez une méthode qui existe uniquement dans des objets individuels (« scalaires »), Windows appelle la méthode sur chaque objet de la collection.

Si la méthode existe dans les objets individuels et la collection, Windows PowerShell ne modifie pas le résultat.

Cette fonctionnalité s'applique également aux propriétés des objets scalaires et des collections. Pour plus d'informations, consultez about_Properties.

EXEMPLES

L'exemple suivant exécute la méthode Kill d'objets processus individuels sur une collection d'objets processus. Cet exemple concerne uniquement Windows PowerShell 3.0 et les versions ultérieures de Windows PowerShell.

La première commande démarre trois instances du processus Notepad. La deuxième commande utilise la commande Get-Process pour obtenir les trois instances du processus Notepad et les enregistrer dans la variable $p.

        PS C:\>Notepad; Notepad; Notepad
        PS C:\>$p = Get-Process Notepad
        

La troisième commande utilise la propriété Count de toutes les collections pour vérifier qu'il existe trois processus dans la variable $p.

        PS C:\>$p.Count
        3

La quatrième commande exécute la méthode Kill sur les trois processus dans la variable $p.

Cette commande fonctionne aussi sur une collection de processus qui ne comporte pas de méthode Kill.

        PS C:\>$p.Kill()

La cinquième commande utilise la commande Get-Process pour vérifier que la commande Kill s'est correctement exécutée.

        PS C:\>Get-Process Notepad
        Get-Process : Cannot find a process with the name "notepad". Verify the process name and call the cmdlet again.
        At line:1 char:12
        + get-process <<<<  notepad
            + CategoryInfo          : ObjectNotFound: (notepad:String) [Get-Process], ProcessCommandException
            + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand

Pour effectuer la même action dans Windows PowerShell 2.0, utilisez l'applet de commande Foreach-Object pour exécuter la méthode sur chaque objet de la collection.

        PS C:\>$p | Foreach-Object {$_.Kill()}

VOIR AUSSI

about_Objects

about_Properties

Get-Member