« PowerShell/Tâche planifiée » : différence entre les versions

Aller à la navigation Aller à la recherche
mAucun résumé des modifications
mAucun résumé des modifications
 
(3 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
{{Sommaire}}
{{Sommaire}}
== 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 :
Lorsqu'une tâche planifiée est programmée pour exécuter un script PowerShell, utiliser les options suivantes :
Ligne 5 : Ligne 8 :
* arguments : <code>-File Chemin\fichier</code>
* arguments : <code>-File Chemin\fichier</code>
* commencer dans :
* commencer dans :
== Compte d'exécution ==
Liste des tâches planifiées avec indication du compte d'exécution :
<source>
<#
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
</source>
== 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 : <source inline>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe</source> ou simplement <source inline>powershell.exe</source>
* arguments : <source inline>-Command "& C:\SauveImap\PurgeFichierAncien.ps1 -chemin 'c:\SauveImap\Archives' -age '30'"</source>
Fichier {{fichier|PurgeFichierAncien.ps1}}
<source>
<#
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
</source>
== Liste des tâches planifiées ==
Liste des tâches planifiées dont le nom commence par "onedrive" :
<source>
Get-ScheduledTask -TaskPath \ | Where {$_.TaskName -like "onedrive*"}
</source>
== Supprimer des tâches planifiées ==
Suppression des tâches planifiées dont le nom commence par "onedrive" :
<source>
Get-ScheduledTask -TaskPath \ | Where {$_.TaskName -like "onedrive*"} | Unregister-ScheduledTask
</source>


== Voir aussi ==
== Voir aussi ==

Dernière version du 7 novembre 2024 à 15:25

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

  •