Étape 1 : Comprendre la fonction de la queue vtom
La queue vtom est une fonctionnalité qui permet d’ajouter des tâches à une file d’attente et de les exécuter de manière asynchrone. Elle est utile pour gérer efficacement les tâches et les processus dans un environnement de production.
Étape 2 : Vérifier les prérequis nécessaires
Avant de pouvoir utiliser la queue vtom, vous devez vous assurer que l’utilisateur utilisé pour lancer la queue vtom est autorisé sur votre machine distante. Cette étape est particulièrement importante pour les utilisateurs de Windows, car la gestion des utilisateurs vtom peut être un peu étrange.
De plus, toutes les machines doivent être sur un réseau commun pour que la queue fonctionne correctement.
Étape 3 : Dédier une queue
Pour utiliser la queue vtom, vous devez d’abord dédier une queue et référencer celle-ci dans votre fichier vtom.ini. Pour cela, suivez les étapes suivantes :
- Ouvrez votre fichier vtom.ini.
- Trouvez la section [Queue] et ajoutez une nouvelle entrée pour votre queue.
- Nommez la queue comme vous le souhaitez.
- Ajoutez les informations de configuration requises, telles que l’emplacement de la file d’attente.
Étape 4 : Redémarrer l’agent vtom
Après avoir dédié une queue, vous devez redémarrer l’agent vtom pour qu’il prenne en compte les changements.
Étape 5 : Vérifier que la queue est présente
Pour vérifier que la queue a été créée avec succès, utilisez la commande bstat. Cette commande affichera toutes les files d’attente disponibles. Assurez-vous que votre nouvelle queue est répertoriée.
Étape 6 : passer une commande en admin
Set-Item WSMan:\localhost\Client\TrustedHosts -Value "MAMACHINEDISTANTE" -Concatenate
Étape 7 : modifier votre nouvelle queue comme suit
@echo OFF
rem Force l'utilisation West European Latin
chcp 1252 > nul
rem Inclut le repertoire binaire powershell dans le path
set PATH_POWERSHELL=C:\WINDOWS\system32\WindowsPowerShell\v1.0
set PATH=%PATH_POWERSHELL%;%PATH%
call submit_aff.bat %*
echo _______________________________________________________________________
echo Debut de l'execution du script PowerShell... EN REMOTE
date /T
echo %time:~+0,8%
echo _______________________________________________________________________
echo " ###### ####### # # ####### ####### #######"
echo " # # # ## ## # # # #"
echo " # # # # # # # # # # #"
echo " ###### ##### # # # # # # #####"
echo " # # # # # # # # #"
echo " # # # # # # # # #"
echo " # # ####### # # ####### # #######"
rem Mode TEST
if "%TOM_JOB_EXEC%" == "TEST" (
echo Job execute en mode TEST
%ABM_BIN%\tsend -sT -r0 -m"Traitement termine (mode TEST)"
%ABM_BIN%\vtgestlog
goto FIN
)
echo.
:argloop
shift
if "%0"=="" goto argend
set arg=%arg% %0
goto argloop
:argend
"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy RemoteSigned -NonInteractive -Command "$scriptPath='D:\mic\scripts\dispatcher.ps1';$computerName='MAMACHINEDISTANTE';$auth='Negotiate';$command={param($path) & $path}; Invoke-Command -ComputerName $computerName -ScriptBlock $command -ArgumentList $scriptPath -Authentication $auth"
set RETCODE=%ERRORLEVEL%
if %RETCODE% equ 0 goto TERMINE
goto ERREUR
:ERREUR
%ABM_BIN%\tsend -sE -r%RETCODE% -m"Traitement PowerShell en erreur (%RETCODE%)"
%ABM_BIN%\vtgestlog
echo _______________________________________________________________________
echo Fin d'execution du script PowerShell
date /T
echo %time:~+0,8%
echo Exit [%RETCODE%] donc pas d'acquittement
echo _______________________________________________________________________
if not "%TOM_LOG_ACTION%"==" " call Gestlog_wnt.bat
exit %RETCODE%
:TERMINE
%ABM_BIN%\tsend -sT -r%RETCODE% -m"Traitement PowerShell termine (%RETCODE%)"
%ABM_BIN%\vtgestlog
echo _______________________________________________________________________
echo Fin d'execution du script PowerShell
date /T
echo %time:~+0,8%
echo Exit [%RETCODE%] donc acquittement
if not "%TOM_LOG_ACTION%"==" " call Gestlog_wnt.bat
exit %RETCODE%
:FIN
explication de la commande :
"%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy RemoteSigned -NonInteractive -Command "$scriptPath='D:\mic\scripts\dispatcher.ps1';$computerName='MAMACHINEDISTANTE';$auth='Negotiate';$command={param($path) & $path}; Invoke-Command -ComputerName $computerName -ScriptBlock $command -ArgumentList $scriptPath -Authentication $auth"
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
: Cette partie indique le chemin d’accès à l’exécutable PowerShell, qui permet d’exécuter des scripts PowerShell.-ExecutionPolicy RemoteSigned
: Cette option définit la stratégie d’exécution pour le processus PowerShell. Ici, la valeurRemoteSigned
permet d’exécuter des scripts locaux non signés et des scripts distants signés par un éditeur approuvé.-NonInteractive
: Cette option indique que PowerShell doit être exécuté en mode non interactif, c’est-à-dire sans inviter l’utilisateur à entrer des informations ou à confirmer des actions.-Command
: Cette option indique que la chaîne qui suit doit être interprétée comme une commande PowerShell à exécuter.$scriptPath='D:\mic\scripts\dispatcher.ps1'
: Cette partie définit une variable$scriptPath
qui contient le chemin d’accès au fichier de scriptdispatcher.ps1
.$computerName='MAMACHINEDISTANTE'
: Cette partie définit une variable$computerName
qui contient le nom de l’ordinateur distant sur lequel exécuter la commande.$auth='Negotiate'
: Cette partie définit une variable$auth
qui contient la méthode d’authentification à utiliser pour se connecter à l’ordinateur distant.$command={param($path) & $path}
: Cette partie définit une variable$command
qui contient un bloc de script PowerShell qui prend un paramètre$path
et exécute le script à ce chemin.Invoke-Command -ComputerName $computerName -ScriptBlock $command -ArgumentList $scriptPath -Authentication $auth
: Cette partie utilise la cmdletInvoke-Command
pour exécuter le bloc de script$command
sur l’ordinateur distant$computerName
, en passant le chemin du script$scriptPath
en argument et en utilisant la méthode d’authentification$auth
.
En résumé, cette commande lance un processus PowerShell en mode non interactif avec une politique d’exécution RemoteSigned
, puis exécute le script dispatcher.ps1
situé sur un ordinateur distant en utilisant la méthode d’authentification Negotiate
.