Cet article présente des commandes Powershell utiles pour extraire des informations sur des machines. Il n’est pas exhaustif et sera complété au fil du temps. C’est un regroupement de commandes que l’on peut retrouver sur différents sites. Ce mémo de commandes Powershell évite donc de chercher partout des commandes qu’on utilise souvent mais qu’on oublie parfois.
Afficher les processus les plus gourmands en RAM
Il est possible de retrouver les processus qui consomment le plus de ressources sans passer par le gestionnaire des tâches. Ce bout de code peut être très utile à des fins de monitoring. Ici, seuls les 10 process les plus gourmands sont affichés (select -first 10), mais il est bien entendu possible de modifier cette variable.
get-wmiobject WIN32_PROCESS | Sort-Object -Property ws -Descending| select -first 10| Select processname, @{Name="Mem Usage(MB)";Expression={[math]::round($_.ws / 1mb)}},@{Name="ProcessID";Expression={[String]$_.ProcessID}},@{Name="UserID";Expression={$_.getowner().user}}
Obtenir les applications installées
Il est possible de passer par la classe WMI Win32_Product pour afficher la liste des applications installées :
Get-WmiObject -Class win32_product
Je vous laisse tester. La requête est longue, trop longue même, et le résultat peut être difficile à exploiter. Heureusement, plutôt que de passer par cette classe il est possible de passer directement par le registre. En effet, chaque installation d’application est inscrite dans une clé spécifique et exploitable via la commande Get-ItemProperty :
Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize
Si vous souhaitez obtenir la même chose sur une ou plusieurs machines distance, il faudra utiliser Invoke-Command :
Invoke-Command -cn Machine1, Machine2 -ScriptBlock {Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\* | select DisplayName, Publisher, InstallDate} | Format-Table –AutoSize
Géolocaliser un ordinateur
Pour des raisons de sécurité, de suivi ou de monitoring des machines, il peut être intéressant de mettre en place un système de géolocalisation. Attention cependant, géolocaliser un ordinateur peut poser de nombreuses questions juridiques. L’utilisateur doit en outre être informé que son PC est suivi, ce qui signifie qu’il l’est aussi, la localisation peut être active que pendant les heures de travail, l’entreprise ne peut pas utiliser ces données pour connaître des éléments privés de l’utilisateur…
Les questions sont nombreuses et il est important d’être accompagné par le RSSI et le service juridique avant de mettre cela en place.
Toutefois, rien ne vous empêche de tester sur votre propre machine, dans le cadre d’une protection contre le vol par exemple. On peut par exemple créer un script qui se lance automatiquement au démarrage de la machine et qui enverra régulièrement sa position à intervalle régulière par mail dès que la machine est connectée au réseau.
Une méthode simple est d’utiliser un site tiers qui vous renverra de nombreuses informations. Nous utiliserons le site ipinfo.io qui donne déjà de nombreuses informations :
Invoke-RestMethod -Uri 'http://ipinfo.io'