PowerShell/Tâche planifiée

Aller à la navigation Aller à la recherche

Généralité

Quelques particularités sont à notées concernant PowerShell et les tâches planifiées via le planificateur de tâches.

Lorsqu'une tâche planifiée est programmée pour exécuter un script PowerShell, utiliser les options suivantes :

  • programme : powershell.exe
  • arguments : -File Chemin\fichier
  • commencer dans :

Compte d'exécution

Liste des tâches planifiées avec indication du compte d'exécution :

<#
Nom           : PSHTAC001
Description   : liste des tâches planifiées avec indication du compte d'exécution
Usage         : exercice en PowerShell
Particularité : en modifiant le filtre, il est possible de n'afficher que certaines tâches.
                Exemple :
                  * Where {$_.TaskName -like "*"} : pour afficher toutes les tâches
                  * Where {$_.TaskName -like "Opti*"} : pour n'afficher que les tâches dont le nom commence par "Opti"
Auteur        : fylip22
Version       : 1.0
Révisions     :
    - 1.0 (31/10/2024) : fylip22, création du script
#>

Clear-Host
Write-Host "Liste des tâches planifiées avec indication du compte d'exécution"
Write-Host "================================================================="

$TacheListe = 
    @(Get-ScheduledTask -TaskPath \ | Where {$_.TaskName -like "*"}) | 
        ForEach-Object {
            [pscustomobject]@{
                Tache           = $_.taskname;
                CompteExecution = $_.CimInstanceProperties.Value.userid[1]
            }
        }

# Affichage du résultat
$TacheListe

Script PowerShell avec argument

Pour qu'un script PowerShell avec argument puisse être lancé depuis une tâche planifiée, voici un modèle :

  • programme/script : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe ou simplement powershell.exe
  • arguments : -Command "& C:\SauveImap\PurgeFichierAncien.ps1 -chemin 'c:\SauveImap\Archives' -age '30'"

Fichier PurgeFichierAncien.ps1

<#
Nom         : PSHTAC010
Description : suppression des fichiers PDF d'un dossier et plus agé qu'un nombre de jour défini
Usage       : renseigner les arguments suivants :
                -chemin : chemin des fichiers à traiter ; valeur par défaut "C:\SauveDocAppli\Archives"
                -age : age des fichiers ; valeur par défaut "30"
Exemple     : pour une tâche planifiée :
                * programme : powershell.exe
                * arguments : -Command "& C:\SauveDocAppli\PurgeFichierAncien.ps1 -chemin 'C:\SauveDocAppli\Archives' -age '30'"
Auteurs     : fylip22
Version     : 1.1
Révisions   :
              - 1.0 (10/08/2023) : création du script
              - 1.1 (14/08/2023) : modification pour ne traiter que les PDF et ajout des valeurs par défaut
#>

Param(
        # Indication que les paramètres suivants sont facultatifs
    [Parameter()]
        # chemin du dossier à nettoyer ; avec chemin par défaut
    [string]$chemin="C:\SauveDocAppli\Archives",
        # Age maximum des fichiers à garder (en jour) ; avec valeur par défaut
    [int]$age="30"
)

Get-ChildItem $chemin -Filter *.pdf | Where CreationTime -lt (Get-Date).AddDays(-$age) | Remove-Item -Force

Liste des tâches planifiées

Liste des tâches planifiées dont le nom commence par "onedrive" :

Get-ScheduledTask -TaskPath \ | Where {$_.TaskName -like "onedrive*"}

Supprimer des tâches planifiées

Suppression des tâches planifiées dont le nom commence par "onedrive" :

Get-ScheduledTask -TaskPath \ | Where {$_.TaskName -like "onedrive*"} | Unregister-ScheduledTask


Voir aussi

  •