« PowerShell/Tâche planifiée » : différence entre les versions
Aller à la navigation
Aller à la recherche
(Page créée avec « {{Sommaire}} 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 : == Voir aussi == * Catégorie:PowerShell ») |
mAucun résumé des modifications |
||
| (4 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 : | ||
* programme : powershell.exe | * programme : <code>powershell.exe</code> | ||
* arguments : -File Chemin\fichier | * 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.exeou simplementpowershell.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