Bonjour, chers collègues. Il y a cent ans, quelque part, j'ai décrit un moyen rapide et sale de voir un graphique d'appel dans votre script PowerShell. Maintenant, il est temps, pour ainsi dire, de tirer un hibou sur le globe et de voir le graphique des dépendances à l'intérieur du module.
Tout d'abord, vous devez installer le module PSQuickGraph à partir de la galerie Powershell. Et après cela, exécutez le script, dont la base peut être prise ici . Honnêtement, je n'ai pas bien compris comment insérer le code de gist dans un post sur un hub Si quelqu'un me le dit dans les commentaires, je lui en serai très reconnaissant.
Alors continuons. Tout d'abord, j'ai parlé du module en deux. Il est construit sur la bibliothèque QuickGraph . Il s'agit essentiellement d'un wrapper PowerShell sur la bibliothèque, qui est conçu pour des tests rapides et approximatifs avec des graphiques. Un tel test pourrait être une chose qui analyse votre code PowerShell, génère un graphique de liens à partir de celui-ci et le présente visuellement.
De plus, le script lui-même utilise le mécanisme d'accès PowerShell intégré à son AST, ce qui, en fait, simplifie considérablement notre analyse du code. En fin de compte, en combinant l'un et l'autre, nous obtenons un graphique.
En conséquence, le script lui-même se compose de deux parties. Un morceau de "l'analyseur" qui fonctionne avec l'AST, et la partie qui relie l'AST et le graphique. Cette partie est décrite dans l'exemple suivant.
# ( PSQuickGraph) $g = New-Graph -Type BidirectionalGraph # PS1 , AST $f = dir "C:\Repo\Work\Tools\*.ps1" -Recurse | Find-Function $f.name | % { Add-Vertex -Vertex $_ -Graph $g} # , , , $f | % { $fName = $_.name $tmpFile = New-TemporaryFile $_.line >> ($tmpFile.fullname) $expr = Find-Expression -Fullname $tmpFile.fullname $expr.name | ? {$_} | ? {$_ -notin "%","where","?","select","out-null","sort","ft","fl","Write-Verbose" } | % { Add-Edge -From $fName -to $_ -Graph $g} } # Show-GraphLayout -Graph $g # DOT Export-Graph -Format Graphviz -Graph $g -Path C:\Temp\g.gv
Eh bien, quelque chose comme ça à la suite

De plus, la dernière commande exporte le graphique au format DOT, ce qui vous permet de le tourmenter dans l'application graphviz