Afficher un message contextuel (HTA) sur les ordinateurs des utilisateurs

2

Voici ma question. Mon entreprise récupère notre centre d'assistance d'un fournisseur MSP et nous devons pouvoir afficher un message HTA contextuel plusieurs fois par jour pour HR et LP.

Je sais que tout le monde va en découdre, mais nous avons environ 1 500 ordinateurs Windows 7 Pro NON rattachés à un domaine (ce n’est pas mon choix). Nous utilisons LogMeIn Central Premiere avec lequel je peux déployer des scripts. C'est le même nom d'utilisateur sur chaque ordinateur et ils ne sont pas membres du groupe admin, mais simplement du groupe d'utilisateurs. J'aimerais pouvoir faire passer le message à 10h, 13h et 16h, mais n'arrive pas à faire en sorte que le fichier HTA soit affiché sur l'ordinateur exécutant un fichier de commandes.

Pour tester dans mon bureau, j'ai lancé psexec de ma machine à ma machine de test et celui-ci s’ouvre correctement en ligne de commande (le fichier hta est enregistré localement sur chaque machine). Cela semble avoir à voir avec le système 0 et j'espère que quelqu'un aura peut-être déjà résolu ce problème par le passé.

J'ai également essayé de créer une tâche planifiée pour appeler le fichier hta, mais encore une fois, le fichier ne s'affiche pas en cours d'exécution lorsque l'utilisateur est connecté.

Toute aide serait appréciée.

Scott J
la source
Totalement, ça ne va pas aider, mais ... 1500 PC non membres de domaine? Le coût de deux centres de distribution haut de gamme serait littéralement inférieur à 2,50 USD par machine.
Twisty Impersonator
Je suis complètement d'accord mais perdu avec cette guerre. J'ai environ 250 machines dans un domaine de la société pour laquelle j'ai travaillé qui ont été achetées par la plus grande société et elles me forcent à passer à LogMeIn et non à DC. Je me bats contre cela depuis 8 mois maintenant et on m'a dit que ça n'arrivait pas et que cela fonctionne.
Scott J
Je suis sans voix. Mais je connais ces types. Ils apprennent mieux en faisant brûler leur maison.
Twisty Impersonator
Dans les autres nouvelles, avez-vous planifié votre tâche hta pour qu'elle s'exécute dans le contexte du compte d'utilisateur devant afficher le message?
Twisty Impersonator
Ces circonstances semblent horribles. Dans votre environnement, les problèmes sont plus importants que la résolution de ce problème. On dirait que le lot fonctionne lorsque vous l'exécutez localement mais pas à distance avec psexec. Pouvez-vous exécuter des scripts à distance avec succès? Si vous le pouvez et que votre script de lancement HTA échoue, ajoutez une journalisation au fichier .bat / .ps1 pour déterminer où le script échoue, en vous assurant qu'il est appelé.
root

Réponses:

0

J'ai déjà fait quelque chose de similaire avec l'affichage Messages HTA sur les fenêtres ordinateurs avec un script batch donc je me suis dit que je partagerais mon exemple avec vous et que vous pourrez ajuster vos besoins au cas où cela vous aiderait à résoudre votre problème.

Essentiellement, cela crée un fichier HTA dynamique, puis l’exécute avec wscript

Exemple de script de lot

Le titre HTA et les trois lignes du corps sont des variables configurées en haut de cet exemple de script par lots. La minuterie est utilisée pendant le nombre de secondes avant la fermeture automatique du message.

Vous devriez pouvoir utiliser cette logique comme point de départ et vous adapter en fonction de vos besoins. Vous pouvez mettre votre logique de fichier HTA dans le lot, la copier et ensuite appeler ou faire ce que je suppose.

IF NOT DEFINED MINIMIZED SET MINIMIZED=1 && START "" /MIN "%~dpnx0" %* && EXIT
@ECHO OFF 

SET MsgTitle=Hey! Here is a Title!
SET MsgLine1=Hey! Here is a message!
SET MsgLine2=Message Line Two.
SET MsgLine3=Message Line Three.
::: -- Set the number in seconds you want the window to close
SET CloseTimer=5
SET TmpHTAFile=%tmp%\tmp.hta
SET TmpVBSFile=%tmp%\tmp.vbs
IF EXIST "%TmpHTAFile%" DEL /Q /F "%TmpHTAFile%"
IF EXIST "%TmpVBSFile%" DEL /Q /F "%TmpVBSFile%"

ECHO ^<html^>                                                       >> "%TmpHTAFile%"
ECHO ^<head^>                                                       >> "%TmpHTAFile%"
ECHO ^<hta:application                                              >> "%TmpHTAFile%"
ECHO APPLICATIONNAME = "Message Alert"                              >> "%TmpHTAFile%"
ECHO ID = "Message Alert"                                           >> "%TmpHTAFile%"
ECHO BORDERSTYLE = "Normal"                                         >> "%TmpHTAFile%"
ECHO CAPTION = "No"                                                 >> "%TmpHTAFile%"
ECHO CONTEXTMENU = "No"                                             >> "%TmpHTAFile%"
ECHO INNERBORDER = "No"                                             >> "%TmpHTAFile%"
ECHO MAXIMIZEBUTTON = "No"                                          >> "%TmpHTAFile%"
ECHO MINIMIZEBUTTON = "No"                                          >> "%TmpHTAFile%"
ECHO NAVIGABLE = "No"                                               >> "%TmpHTAFile%"
ECHO SCROLL = "No"                                                  >> "%TmpHTAFile%"
ECHO SCROLLFLAT = "No"                                              >> "%TmpHTAFile%"
ECHO SELECTION = "No"                                               >> "%TmpHTAFile%"
ECHO SHOWINTASKBAR = "No"                                           >> "%TmpHTAFile%"
ECHO SINGLEINSTANCE = "Yes"                                         >> "%TmpHTAFile%"
ECHO SYSMENU = "No"/^> ^<STYLE^>                                    >> "%TmpHTAFile%"
ECHO html, body {                                                   >> "%TmpHTAFile%"
ECHO background color: #000000                                      >> "%TmpHTAFile%"
ECHO  font-size: 90%;                                               >> "%TmpHTAFile%"
ECHO  line-height: 2.1em;                                           >> "%TmpHTAFile%"
ECHO  margin: 10;                                                   >> "%TmpHTAFile%"
ECHO  padding: 0;                                                   >> "%TmpHTAFile%"
ECHO }                                                              >> "%TmpHTAFile%"
ECHO h1 {font-family: Arial;                                        >> "%TmpHTAFile%"
ECHO  color: #FF0000;                                               >> "%TmpHTAFile%"
ECHO  font-size: 3em;                                               >> "%TmpHTAFile%"
ECHO  text-align: center;                                           >> "%TmpHTAFile%"
ECHO }                                                              >> "%TmpHTAFile%"
ECHO h2 {font-family: Arial;                                        >> "%TmpHTAFile%"
ECHO  color: #ffffff;                                               >> "%TmpHTAFile%"
ECHO  font-size: 1.5em;                                             >> "%TmpHTAFile%"
ECHO  text-align: left;                                             >> "%TmpHTAFile%"
ECHO }                                                              >> "%TmpHTAFile%"
ECHO h3                                                             >> "%TmpHTAFile%"
ECHO {font-family: Arial;                                           >> "%TmpHTAFile%"
ECHO  color: #666666;                                               >> "%TmpHTAFile%"
ECHO  font-size: 1em;                                               >> "%TmpHTAFile%"
ECHO  text-align: center;                                           >> "%TmpHTAFile%"
ECHO }                                                              >> "%TmpHTAFile%"
ECHO ^</STYLE^> ^<script type='text/vbscript'^> Sub Window_onload() >> "%TmpHTAFile%"
ECHO me.ResizeTo 500,280                                            >> "%TmpHTAFile%"
ECHO me.MoveTo Screen.Width /2 - 300,Screen.Height / 2 - 300        >> "%TmpHTAFile%"
ECHO me.SetTimeout "Me.Close()",%CloseTimer%000                     >> "%TmpHTAFile%"
ECHO End Sub                                                        >> "%TmpHTAFile%"
ECHO ^</script^>                                                    >> "%TmpHTAFile%"
ECHO ^</head^>                                                      >> "%TmpHTAFile%"
ECHO ^<body scroll="no"^>                                           >> "%TmpHTAFile%"
ECHO ^<br^>                                                         >> "%TmpHTAFile%"
ECHO ^<h1^>%MsgTitle%^</h1^>                                        >> "%TmpHTAFile%"
ECHO ^<h2^>%MsgLine1%^<br^>                                         >> "%TmpHTAFile%"
ECHO %MsgLine2%^<br^>                                               >> "%TmpHTAFile%"
ECHO %MsgLine3%^</h2^>                                              >> "%TmpHTAFile%"
ECHO ^<h3^>close in %CloseTimer% seconds^</h3^>                     >> "%TmpHTAFile%"
ECHO ^<script type="text/javascript"^>                              >> "%TmpHTAFile%"
ECHO ^</script^>                                                    >> "%TmpHTAFile%"
ECHO ^</body^>                                                      >> "%TmpHTAFile%"
ECHO ^</html^>                                                      >> "%TmpHTAFile%"

ECHO Set objShell = Wscript.CreateObject("Wscript.Shell")           >> "%TmpVBSFile%"
ECHO objShell.Run ("%TmpHTAFile%")                                  >> "%TmpVBSFile%"
wscript "%TmpVBSFile%"
DEL /Q /F "%TmpVBSFile%"

Idée source


Ressources supplémentaires

Pimp Juice IT
la source
Pensez à créer un tel script et à créer et planifier le script de traitement par lots à exécuter aux heures planifiées avec PSEXEC avec le planificateur de tâches à partir de la ligne de commande une fois, puis il s'exécutera localement ... voir superuser.com/questions/1214736/… pour obtenir des conseils sur la planification d'un script batch, le dépannage, etc.
Pimp Juice IT
Voir ici pour créer des tâches planifiées via une ligne de commande. . . windows-commandline.com/schedule-tasks-command-line pour quelques exemples
Pimp Juice IT