salut,
le verbe "GET" est l'un des verbes autorisés dans le nommage des fonctions et cmdlets.
on peux omettre ce verbe pour toutes les cmdlets et fonctions:Code:PS II> Get-Verb -verb get
sauf les cmdlets get-command et get-process ne supportent pas cette omission parceque le mot "process" est un mot reservé (help keywords) et "command" est vu par powershell comme etant le vieux shell "command.com"Code:
1
2 PS II> childitem c:\inuse | acl PS II> hotfix; psdrive
il est à noter aussi que les fonction ayant comme nom un mot reservé seront traiter comme étant des mots reservés et non pas comme étant des fonctionsCode:PS II> man key | Select-String "\s{5,}about_*"
et s'il s'agissait d'un nom d'un executable alors l'interpréteur powershell traitera cette fonction comme étant une commande externe et non pas une fonctionCode:
1
2
3PS II> function get-Function {1} PS II> function >>
Code:
1
2
3
4
5
6PS II> function get-cmd {1} PS II> cmd Microsoft Windows XP [version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. D:\>
l'omission du verbe "GET" à un grand désavantage est qu'on ne pourra plus bénéficier de la puissance de la complétion de powershell
Code:PS II> Serv{TAB]ice -n[TAB] alg
un autre désavantage, est que parfois avec la l'utilisation de cmdlet get-help on se retrouve devant des resultats inatendus
Code:
1
2
3
4
5
6PS II> help verb NOM Write-Verbose ... .....
pour finir, voici une petite fonction qui s'appuie sur les mots reservé et teste si une commande est valide ou pas
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32PS II> cat c:\inuse\scripts\psh\tcv.ps1 ############################################################# # # PS D:\> Test-CommandValidation -command get-process | fl # VerbNounConvention : True # ReservedKeyWords : True # VerbConvention : True # ############################################################# function Test-CommandValidation { param($Command) $keys = man key | Select-String "(\S+)(?=\s{5,}about_*)" | select -expand Matches | select -expand value $verbNounConvention = $verbconvention = $reservedkeywords = $false $verb,$noun = $Command.Split('-') if($noun) { $verbNounConvention = $true if( (get-verb $verb) ) { $verbconvention = $true } if($keys -contains $noun) { $reservedkeywords = $true } } else { $reservedkeywords = $verbconvention = $null } new-object PSObject -prop @{ VerbNounConvention = $verbNounConvention VerbConvention = $verbconvention ReservedKeyWords = $reservedkeywords } }

