vendredi 26 février 2016

PowerShell : Arbre de processus


PowerShell : Arbre de processus


Depuis quelques temps, je travaille avec PowerShell, le langage de scripts de Microsoft. C'est un langage que j'ai eu beaucoup de mal à prendre en main. En avançant dans l'apprentissage, on se rend compte que cet outil peut se révéler très puissant, et surtout très utile.
Mes besoin actuels m'obligent à travailler sur l'activité des processus. Pour cela, j'utilise différents scripts, dont celui-ci trouvé sur Microsoft Technet, qui permet d'afficher l'arbre des processus.

Function Show-ProcessTree
{
    Function Get-ProcessChildren($P,$Depth=1)
    {
        $procs | Where-Object {$_.ParentProcessId -eq $p.ProcessID -and $_.ParentProcessId -ne 0} | ForEach-Object {
            "{0}|--{1} pid={2} ppid={3}" -f (" "*3*$Depth),$_.Name,$_.ProcessID,$_.ParentProcessId
            Get-ProcessChildren $_ (++$Depth)
            $Depth--
        }
    }
    $filter = {-not (Get-Process -Id $_.ParentProcessId -ErrorAction SilentlyContinue) -or $_.ParentProcessId -eq 0}
    $procs = Get-WmiObject Win32_Process
    $top = $procs | Where-Object $filter | Sort-Object ProcessID
    foreach ($p in $top)
    {
        "{0} pid={1}" -f $p.Name, $p.ProcessID
        Get-ProcessChildren $p
    }
}


Enfin, la commande pour utiliser cette fonction :
Show-ProcessTree

Aucun commentaire:

Enregistrer un commentaire