Fractionner les commandes sur plusieurs lignes dans PowerShell

Marion Paul Kenneth Mendoza 30 janvier 2023
  1. Commande multiligne Windows PowerShell
  2. Briser de longues lignes de code à l’aide d’opérateurs spécifiques
Fractionner les commandes sur plusieurs lignes dans PowerShell

Le code lisible est très facilement communiqué son objectif de fonctionnalité aux utilisateurs. Les noms de variables et les noms de méthodes doivent avoir des conventions de dénomination appropriées pour la lisibilité du code. Les autres attributs qui contribuent à la lisibilité du code sont l’indentation cohérente et le style de formatage. La commande multiligne de Windows PowerShell permet de diviser les longues lignes de commande en plusieurs instructions pour plus de lisibilité.

Dans Windows PowerShell, les commandes multilignes peuvent être facilement créées à l’aide du caractère backtick pour diviser les instructions multilignes de commandes longues ou monolignes.

Le caractère backtick est utilisé comme une sorte de caractère d’échappement. Il échappe au caractère de nouvelle ligne et entraîne la continuation de la ligne.

Cet article explique l’importance des commandes multilignes Windows PowerShell pour répartir les commandes longues sur plusieurs lignes.

Commande multiligne Windows PowerShell

Pour diviser une longue commande en plusieurs lignes, utilisez le caractère backtick pour la diviser en plusieurs lignes.

Par exemple, nous voulons obtenir les informations sur l’espace disque disponible sur l’ordinateur local. Malheureusement, le script permettant d’obtenir ces informations spécifiques est une commande étendue, ce qui le rend difficile à lire et à gérer.

Exemple de code :

Get-WmiObject -Class win32_logicaldisk | Format-Table DeviceId, MediaType, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}

Il peut sembler que la syntaxe est divisée dans cet article, mais lorsqu’il est copié dans l’interface de ligne de commande, l’exemple ci-dessus est un très long script à une ligne.

Nous pouvons facilement diviser une commande longue en plusieurs lignes à l’aide du caractère backtick de Windows PowerShell pour un saut de ligne dans une commande donnée.

Exemple de code :

Get-WmiObject -Class win32_logicaldisk
| Format-Table DeviceId, `MediaType, @{n="Size";e={[Math]::Round($_.Size/1GB,2)}},
@{n="FreeSpace";e={[Math]::Round($_.FreeSpace/1GB,2)}}

Dans l’exemple ci-dessus, nous divisons la commande longue en plusieurs lignes en utilisant un espace blanc suivi du caractère backtick à la fin où nous voulons le diviser. N’oubliez pas qu’il ne doit y avoir aucun caractère entre le backtick et le saut de ligne, y compris les espaces blancs.

La structure du code est facilement lisible et facile à gérer dans Windows PowerShell à l’aide de la commande multiligne. Cependant, le caractère backtick n’est généralement pas recommandé car le caractère est difficile à lire et invite les bogues. Nous avons donc une autre méthode pour casser de longues lignes de code.

Briser de longues lignes de code à l’aide d’opérateurs spécifiques

Habituellement, vous obtenez une continuation de ligne automatique lorsqu’une commande ne peut pas être syntaxiquement complète à ce stade.

Un exemple serait de démarrer un nouvel élément de pipeline (|). Le pipeline fonctionnera sans problème car, après l’opérateur de pipeline, la commande ne peut pas être terminée car il manque un autre élément de pipeline. Donc, ce que fait notre interpréteur, c’est rechercher l’élément de pipeline suivant dans la ligne de commande suivante.

Exemple de code :

Get-WmiObject -Class win32_logicaldisk | 
Format-Table DeviceId, MediaType, @{n="Size";e={[math]::Round($_.Size/1GB,2)}},@{n="FreeSpace";e={[math]::Round($_.FreeSpace/1GB,2)}}

Une virgule (,) fonctionnera également dans certains contextes comme l’opérateur de pipeline.

Exemple de code :

Get-WmiObject -Class win32_logicaldisk | 
Format-Table DeviceId, MediaType, 
@{n="Size"; e={[Math]::Round($_.Size/1GB,2)}},
@{n="FreeSpace"; e={[Math]::Round($_.FreeSpace/1GB,2)}}

De plus, les accolades ({}) lors de la définition des blocs de script permettront directement la continuation de la ligne.

Exemple de code :

Get-WmiObject -Class win32_logicaldisk | 
Format-Table DeviceId, MediaType, 
@{
    n="Size"; e={
        [Math]::Round($_.Size/1GB,2)
    }
},
@{
    n="FreeSpace";e={
        [Math]::Round($_.FreeSpace/1GB,2)
    }
}

En utilisant les techniques ci-dessus, nous pouvons maintenant observer que notre exemple de code est plus facile à lire, et nous y sommes parvenus sans utiliser le caractère backtick.

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn