J’ai été confronté à un soucis dans ma nouvelle entreprise, les machines n’appliquent pas les mises à jour Windows, car les utilisateurs soient ne les éteignent jamais, soient ne redémarre pas quand Windows les informes de nouvelles mises à jour.
Soucis, je ne peux pas forcer l’arrêt des machines le soir, car le service tourne 24/24 7/7 ….
Il faut donc que je sois sur que l’action vient de l’utilisateur, soit qu’il n’y a personne derrière la machine. Malheureusement je ne peux pas non plus passé par un logiciel, car cela est contraire aux règles de sécurité de ma boîte.
Voilà mon script en powershell, il fonctionne uniquement sous des PC sous W10 car il utilise des commandes dispo uniquement sous powershell 5.0.
Il se décompose en deux scripts, le premier script s’inscrit par défaut avec le script d’ouverture de session de l’utilisateur , il ajoute dans le planificateur de tâche de l’utilisateur la demande de redémarrage (en appelant le deuxième script), elle s’exécute chaque vendredi à 23h00.
Le deuxième script fait ceci :
Quand le vendredi arrive, une boîte de dialogue s’ouvre avec un message avec trois possibilités pour l’utilisateur :
Bouton OK = Redémarrage la machine
Bouton annuler = Reporte le script et le relance 60 minutes plus tard (en inscrivant dans le planificateur de tâche une nouvelle tâche dans 60 minutes)
La croix rouge = Fait la même chose que le bouton annuler
Mais si personne ne se trouve derrière la machine ? Et bien le script sans réponse dans les 30minutes redémarre la machine.
Voilà problème résolu :
##############################################################################################
# #
# Variable a adapté, selon votre environnement #
# UNIQUEMENT POUR WINDOWS 10 #
# #
##############################################################################################
#Suppresion affichage erreur (Pour les postes en W7)
$ErrorActionPreference = "SilentlyContinue"
#Nom de votre tache et description
$nomtache = "Mise_a_jour"
$descriptiontache = "Redemarre le PC pour application mises à jour"
# Attention modifier unqiuement le chemin partage de type "\\Serveur\...\MAJ.PS1"
$cheminscript = '-WindowStyle Hidden -ExecutionPolicy Bypass -File "chemin du deuxième script"'
#Heure et jour d'application de la tache par defaut chaque vendredi à 1h00 (format heure anglais)
$Heuredapplication = '01:00AM'
$jourdapplication = 'Friday'
##############################################################################################
# #
# Script ne pas modifier #
# #
##############################################################################################
#Suppression de la tache si présente (pour que ce soit toujours l'utilisateur en cour qui l'éxécute)
Unregister-ScheduledTask $nomtache -Confirm:$false -ErrorAction SilentlyContinue
# Action à exécuter - script MAJ.PS1
$action=New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument $cheminscript -ErrorAction SilentlyContinue
# Planification de la tâche
$trigger=New-ScheduledTaskTrigger -Weekly -WeeksInterval 1 -DaysOfWeek $jourdapplication -At $Heuredapplication -ErrorAction SilentlyContinue
# Enregistrement de la tâche dans le plannificateur de tache avec comme utilisateur l'utilisateur local
Register-ScheduledTask -TaskName $nomtache -Trigger $trigger -Action $action -Description $descriptiontache
Premier script
##############################################################################################
# #
# Script demande mise à jour et redemarrage ordinateur par Bastien #
# #
##############################################################################################
##############################################################################################
# #
# Variable a adapté, selon votre environnement #
# #
##############################################################################################
#Suppresion affichage erreur (Pour les postes en W7)
$ErrorActionPreference = "SilentlyContinue"
#Nom de votre tache
$nomtache = "MAJ-rappel"
# Attention modifier unqiuement le chemin partage de type "\\Serveur\...\MAJ.PS1"
$cheminscript = '-WindowStyle Hidden -ExecutionPolicy Bypass -File "chemin du deuxième script"'
# Temps d'attente en seconde pour éxécution si aucune action de l'utilisateur par defaut régler à 30 minutes
$attente=1800
#Le message afficher ainsi que le nom de la fenetre
$messageafficher = "Votre ordinateur à besoin de redemarrer pour l'application des mises à jours de securiter, OK pour redemarrer immediatement ou annuler pour repousser le redemarrage dans une heure, sans actions de votre part dans 30 minutes l'ordinateur redemarrera "
$nomfenetre = "Mise à jour"
#Temps avant la re-execution de l'application des mises à jours en minutes
$tvr=60
##############################################################################################
# #
# Script ne pas modifier #
# #
##############################################################################################
$prompt = new-object -comobject wscript.shell
$answer = $prompt.popup($messageafficher,$attente,$nomfenetre,1)
Unregister-ScheduledTask $nomtache -Confirm:$false -ErrorAction SilentlyContinue
if($answer -eq 1) {Restart-Computer -Force} #Clique sur OK donc redemarre immédiatement
if($answer -eq -1) {Restart-Computer -Force} #Aucune réponse de l'utilisateur a bout de 1800 secondes redemarre
if($answer -eq 2) {$script:MyInvocation.MyCommand.Path #Si l'utilisateur clique sur Annuler ajoute une tache de rappel par le plannificateur de tâche qui s'éxécutera au bout d'une heure
$action = New-ScheduledTaskAction -Execute 'Powershell.exe' -Argument $cheminscript
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date).AddMinutes($tvr)
Register-ScheduledTask -Action $action -Trigger $trigger -TaskName "MAJ-rappel" -Description "Re-execution dans $tvr minutes"
}
Deuxième script
Un soucis, une incompréhension n'hésitez pas à poser votre question dans les commentaire j'essaye de répondre le plus vite possible vous pouvez vous abonner au commentaire pour être sûr de ne pas rater ma réponse !
Salut tout le monde, J’espère que les vacances d’été ce sont bien passés pour ma part pas de vacances boulot boulot boulot. Aujourd’hui je suis tombé sur une news concernant “Votre téléphone” l’application qui vous Lire la suite…
Aujourd’hui je vous présente un logiciel qui va vous permettre de créer des interfaces pour vos scripts powershell. Je ne vais pas vous expliquer le fonctionnement vous pouvez vous rendre sur ce site (https://cnf1g.com/?p=1360) pour Lire la suite…
Aujourd’hui, un logiciel que j’utilise depuis pas mal de temps mais je viens de découvrir une nouvelle version en alpha c’est Captvty. Ce logiciel vous permets de télécharger les vidéos issus des sites de rattrapages Lire la suite…
Miam Cookie :
Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considérerons que vous acceptez l'utilisation des cookies.J'accepte
Poster un Commentaire