Powershell : listing et filtre des tâches planifiées sur de multiples serveurs

Ayant pu enfin appliquer par GPO un traitement que j’effectuais par script appelé par une tâche planifiée quotidiennement, j’ai dû procéder au listing complet des serveurs sur lesquels cette tâche était créée afin de pouvoir procéder à sa suppression. Ne pouvant pas me connecter un à un sur chaque machine pour vérifier la présence ou non, j’ai dû concevoir un script me permettant de lister les tâches planifiées qui portent mon compte d’utilisateur en auteur sur tout un scope de serveurs.

Voici le snippet que j’ai écrit :

$complist = Get-AdComputer -filter * -SearchBase "OU=SERVERS,DC=DUNDERMIFFLIN,DC=local"
foreach ($comp in $complist) {
Write-Host "`r`nServer:"$comp.DNSHostName
Invoke-Command -ComputerName $comp.DNSHostName -ScriptBlock { Get-ScheduledTask | Where-Object { $_.Author -eq "DUNDERMIFFLIN\mscott" } }
}

Ce script renvoie donc toutes les tâches planifiées que l’utilisateur mscott a créé sur chacun des serveurs présents dans la liste retournée par la requête AD. Il est possible de moduler ce que l’on souhaite obtenir en changeant le filtre ou le chemin LDAP dans la requête Get-AdComputer, sans oublier les propriétés des tâches planifiées dans la boucle Where-Object.

A noter que Get-ScheduledTask ne fonctionne qu’à partir de Windows Server 2012. Si jamais l’instruction Invoke-Command renvoie un message d’erreur propre à WinRM et que le contenu de l’instruction fonctionne en local, il vous faut activer l’administration Powershell à distance grâce à la commande Enable-PSremoting.

Lien pour marque-pages : Permaliens.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.