Propriétés calculées dans les fonctions PowerShell –
Souvent, une propriété renvoyée par un objet dans PowerShell peut ne pas être nommée de manière idéale ou la valeur n’est pas tout à fait au format nécessaire. Pour ces instances, PowerShell a la construction des propriétés calculées. Cette fonctionnalité utile permet de modifier facilement la valeur renvoyée pendant les opérations de sélection et de renvoyer rapidement et facilement ce qui est nécessaire dans la sortie en pipeline. En pratique, à quoi cela ressemble-t-il? Que diriez-vous de prendre un format de date et de passer à un format différent?
$Object | Select-Object "Name","Date",@{
Name="NewDate"
Expression = { Get-Date $_.Date -Format "MM/dd/yyyy" }
}
Si vous ne l’avez jamais vu auparavant, cela peut être un format assez étrange à insérer dans un Select-Object
commander. Lisez la suite pour savoir ce que chaque partie signifie et comment elle peut être exploitée pour manipuler facilement les données selon les besoins!
Sommaire
Anatomie d’une propriété calculée
Une propriété calculée est, à la base, une table de hachage qui définit comment la sortie doit rechercher une propriété. Il existe plusieurs clés que nous pouvons définir pour manipuler la sortie.
- Nom / étiquette – Spécifie le nom de la propriété retournée, avec
label
utilisé comme alias. - Expression – Le bloc de script utilisé pour calculer la nouvelle valeur de propriété.
- Alignement – Lorsqu’une cmdlet de sortie tabulaire est utilisée, cela définira la manière dont les valeurs sont affichées dans une colonne à l’aide de
left
,center
, ouright
comme valeurs autorisées. - Chaîne de format – Spécifie une chaîne de format, qui est une chaîne de formatage .NET.
- Largeur – Pour la sortie tabulaire, définit la largeur maximale de la colonne, qui doit être supérieure à
0
. - Profondeur – Utilisé uniquement avec le
Format-Custom
cmdlet, cela spécifiera la profondeur maximale d’expansion par propriété. - Ascendant descendant – Spécifiez l’ordre de tri d’une ou plusieurs propriétés, ce sont des valeurs booléennes définies sur
$True
ou$False
.
À quoi cela ressemble-t-il en pratique? Pour Select-Object
vous n’utiliserez généralement que Name
et Expression
. Pour contrôler une sortie tabulaire spécifique, vous pouvez utiliser les différentes options d’alignement, de format et de largeur.
Select-Object et propriétés calculées
La plupart du temps, Select-Object
est utilisé avec les propriétés calculées car cela vous permet de manipuler rapidement et facilement la sortie sans avoir à modifier les données source et de transmettre facilement les données dans le pipeline au format requis. Voici un exemple de ce à quoi cela ressemble en pratique! Tout d’abord, nous allons commencer avec le même objet que nous utiliserons pour démontrer tous les exemples ci-dessous.
$Object = [PSCustomObject]@{
'Name' = 'Test Object'
'Date' = Get-Date
'Number' = 100
'Enabled' = $True
'Extra' = @('One','Two','Three')
}
$Object
En regardant la date, cela ne correspond pas tout à fait à ce qui est attendu. Changeons cela en un format différent. Vous pouvez modifier le Get-Date
commande sur l’objet lui-même, mais parfois vous n’avez pas la possibilité de le faire. Par conséquent, nous pouvons modifier le format de la date en utilisant une propriété calculée comme ci-dessous. Avec le code ci-dessous, nous changeons le format de date en MM/dd/yyyy
en utilisant le Format
paramètre de Get-Date
.
$Object | Select-Object Name,@{
Name="NewDate"
Expression = { Get-Date $_.Date -Format "MM/dd/yyyy" }
}
Comme vous pouvez le voir, une nouvelle propriété appelée NewDate
a été créé et le format de la date a changé! Comme cela utilise un bloc de script, vous pouvez contenir beaucoup de logique, comme des instructions de contrôle telles que switch
ou d’autres recherches, si nécessaire. Lisez la suite pour savoir comment produire des données mieux formatées.
Format-Table et propriétés calculées
La vue par défaut de Format-Table
peut laisser quelque chose à désirer. Par conséquent, voyons ce que nous pouvons faire pour améliorer le travail avec. En utilisant le même objet que celui défini à l’origine, à quoi ressemble la sortie?
Nous pouvons améliorer cet aspect, c’est sûr! Tout d’abord, l’alignement n’est pas idéal pour Number
ou Enabled
. Deuxièmement, nous devrions produire Number
avec deux points décimaux. Enfin, faisons Name
plus large, changer Date
à notre nouveau format et rejoignez Extra
par des virgules. Voyez ci-dessous comment nous pouvons utiliser les propriétés calculées pour changer la vue!
$Object | Format-Table @{
Name="Name"
Expression = { $_.Name }
Width = 20
},
@{
Name="Date"
Expression = { Get-Date $_.Date -Format "MM/dd/yyyy" }
Width = 10
},
@{
Name="Number"
Expression = { $_.Number }
Formatstring = 'N2'
Alignment="Center"
Width = 10
},
@{
Name="Enabled"
Expression = { $_.Enabled }
Alignment="Center"
Width = 10
},
@{
Name="Extra"
Expression = { $_.Extra -Join ", " }
Width = 30
}
Bien mieux! Il est plus facile de comprendre les données et vous pouvez voir comment toutes les différentes possibilités avec des propriétés calculées se combinent pour aider à améliorer ce fonctionnement.
Conclusion
Les propriétés calculées sont une construction de langage unique qui est utilisée lorsque vous avez besoin d’un moyen rapide et flexible de modifier la sortie du pipeline sans modifier le code en amont. Avec les fonctionnalités disponibles à la fois pour l’affichage de la console et pour la manipulation des données lors du passage de données plus loin dans un pipeline, les propriétés calculées peuvent être rapidement intégrées dans n’importe quel script.