OVH Cloud OVH Cloud

Script qui permet de controler la file d'attente du spooler d'impression

6 réponses
Avatar
Prm
Bonjour,

Je cherche actuellement a ecrire un script qui permet de vérifier que la
file d'attente du spooler d'impression sur un Windows 2003 R2 est vide et le
cas échéant démarrer un service tiers si celui-ci est n'est pas encore lancé
J'ai fait quelques recherches mais en vain et je ne connais pas grand chose
en script...

Merci d'avance

Cdt

6 réponses

Avatar
Gilles LAURENT
"Prm" <mplcg[nospam]@free.fr> a écrit dans le message de
news:%23$o%
| Bonjour,

Bonjour,

| Je cherche actuellement a ecrire un script qui permet de vérifier que
| la file d'attente du spooler d'impression sur un Windows 2003 R2 est
| vide et le cas échéant démarrer un service tiers si celui-ci est
| n'est pas encore lancé J'ai fait quelques recherches mais en vain et
| je ne connais pas grand chose en script...

Ci-dessous le script Batch 'startServiceIfNoJobQueued.cmd' permettant de
vérifier qu'aucun job d'impression n'est en file d'attente et la cas
échéant de démarrer un service dont le nom est spécifié en ligne de
commande. Le script doit être exécuté sur le serveur d'impression.

+++ Usage
>startServiceIfNoJobQueued <nom_du_service>

+++ Exemple
>startServiceIfNoJobQueued "horloge windows"

--- Coupez ici : startServiceIfNoJobQueued.cmd ---

@echo off
wmic printjob get * 2>&1 | find "JobId" >nul || (
echo No job queued, requesting service state ...
net start | find /i "%~1">nul || (
echo Service stopped, starting service "%~1" ...
net start "%~1">nul
)
)

En espérant que cela réponde à votre demande.

Note : Je serai intéressé de savoir quel est exactement votre besoin ;-)

--- Coupez ici : startServiceIfNoJobQueued.cmd ---

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Prm
Bonsoir

1/ Merci pour cette réponse si complète (j'en demandais pas tant...un script
tout fait..), je vais tester cela la semaine prochaine

...d'ailleur c'est le contraire que je veux faire, c'est arrêter le service
si celui ci n'est pas encore arrêté (donc net stop..)

2/ Le pourquoi de cette demande

Nous avons un serveur aui gère un volume quotidien important d'impressions.
Sur ce serveur est un installé un service (appli tiers pour le routage
mailing) qui génère des stats d'impression, etc... Ces stats sont "lockés"
tant que ce service est actif.
Je veux périodiquement arrêter ce service, pousser le fichier de stat en FTP
sur un autre site et redemarrer le service . cependant je ne veux pa arrêter
le service tant qu'il y a des fichiers dans le spool car j'ai constaté alors
des lignes de stats incohérente

3/ existe t'il un référentiel / doc / msdn / pour les scripts... j'ai envi
d'en connaitre un peu plus sur le domaine


Cdt

et a bientot pour de nouveau script

"Gilles LAURENT" a écrit dans le message de news:
edoO%
"Prm" <mplcg[nospam]@free.fr> a écrit dans le message de
news:%23$o%
| Bonjour,

Bonjour,

| Je cherche actuellement a ecrire un script qui permet de vérifier que
| la file d'attente du spooler d'impression sur un Windows 2003 R2 est
| vide et le cas échéant démarrer un service tiers si celui-ci est
| n'est pas encore lancé J'ai fait quelques recherches mais en vain et
| je ne connais pas grand chose en script...

Ci-dessous le script Batch 'startServiceIfNoJobQueued.cmd' permettant de
vérifier qu'aucun job d'impression n'est en file d'attente et la cas
échéant de démarrer un service dont le nom est spécifié en ligne de
commande. Le script doit être exécuté sur le serveur d'impression.

+++ Usage
>startServiceIfNoJobQueued <nom_du_service>

+++ Exemple
>startServiceIfNoJobQueued "horloge windows"

--- Coupez ici : startServiceIfNoJobQueued.cmd ---

@echo off
wmic printjob get * 2>&1 | find "JobId" >nul || (
echo No job queued, requesting service state ...
net start | find /i "%~1">nul || (
echo Service stopped, starting service "%~1" ...
net start "%~1">nul
)
)

En espérant que cela réponde à votre demande.

Note : Je serai intéressé de savoir quel est exactement votre besoin ;-)

--- Coupez ici : startServiceIfNoJobQueued.cmd ---

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD




Avatar
Gilles LAURENT
"Prm" a écrit dans le message de
news:
| Bonsoir

Bonsoir,

| 1/ Merci pour cette réponse si complète (j'en demandais pas tant...un
| script tout fait..), je vais tester cela la semaine prochaine

Tenez nous au courant ;-)

| ...d'ailleur c'est le contraire que je veux faire, c'est arrêter le
| service si celui ci n'est pas encore arrêté (donc net stop..)

Donc il est nécessaire de modifier le script :

--- Coupez ici : stopServiceIfNoJobQueued.cmd ---

@echo off
wmic printjob get * 2>&1 | find "JobId" >nul || (
echo No job queued, requesting service state ...
net start | find /i "%~1">nul && (
echo Service running, stopping service "%~1" ...
net stop "%~1">nul
)
)

--- Coupez ici : stopServiceIfNoJobQueued.cmd ---

| 2/ Le pourquoi de cette demande
|
| Nous avons un serveur aui gère un volume quotidien important
| d'impressions. Sur ce serveur est un installé un service (appli tiers
| pour le routage mailing) qui génère des stats d'impression, etc...
| Ces stats sont "lockés" tant que ce service est actif.
| Je veux périodiquement arrêter ce service, pousser le fichier de stat
| en FTP sur un autre site et redemarrer le service . cependant je ne
| veux pa arrêter le service tant qu'il y a des fichiers dans le spool
| car j'ai constaté alors des lignes de stats incohérente

Merci pour ce complément d'information

| 3/ existe t'il un référentiel / doc / msdn / pour les scripts... j'ai
| envi d'en connaitre un peu plus sur le domaine

Un bon début :
- Ouvrir le centre d'aide et de support
- Rechercher "Référence de la ligne de commande"

Je vous invite également à découvrir le nouveau shell Microsoft Windows
PowerShell consultable à cette adresse ...
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

... ainsi que le blog de Jacques Barathon [MS] sur Windows PowerShell :
http://janel.spaces.msn.com/blog

| et a bientot pour de nouveau script

You're welcome ;-)

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Prm
Bonjour,

Merci pour ce script, ca a l'air de fonctionner, cependant la liste
d'impression était vide lors de mes tests

Juste un petite question pour terminer sur ce script, je souhaite notifier
dans un fichier les tentatives infructueuses (ex : file pleine / service
déjà arrêté)
Je veux donc ajouter 2 lignes du style
---
echo 'Le service est déja arrêté' >> log.txt
echo 'La file d'impression n'est pas vide' >> log.txt
---
Je ne vois pas trop comment insérer ces 2 lignes dans le script "si ...
sinon ..."


Merci d'avance


Cdt


"Gilles LAURENT" a écrit dans le message de news:

"Prm" a écrit dans le message de
news:
| Bonsoir

Bonsoir,

| 1/ Merci pour cette réponse si complète (j'en demandais pas tant...un
| script tout fait..), je vais tester cela la semaine prochaine

Tenez nous au courant ;-)

| ...d'ailleur c'est le contraire que je veux faire, c'est arrêter le
| service si celui ci n'est pas encore arrêté (donc net stop..)

Donc il est nécessaire de modifier le script :

--- Coupez ici : stopServiceIfNoJobQueued.cmd ---

@echo off
wmic printjob get * 2>&1 | find "JobId" >nul || (
echo No job queued, requesting service state ...
net start | find /i "%~1">nul && (
echo Service running, stopping service "%~1" ...
net stop "%~1">nul
)
)

--- Coupez ici : stopServiceIfNoJobQueued.cmd ---

| 2/ Le pourquoi de cette demande
|
| Nous avons un serveur aui gère un volume quotidien important
| d'impressions. Sur ce serveur est un installé un service (appli tiers
| pour le routage mailing) qui génère des stats d'impression, etc...
| Ces stats sont "lockés" tant que ce service est actif.
| Je veux périodiquement arrêter ce service, pousser le fichier de stat
| en FTP sur un autre site et redemarrer le service . cependant je ne
| veux pa arrêter le service tant qu'il y a des fichiers dans le spool
| car j'ai constaté alors des lignes de stats incohérente

Merci pour ce complément d'information

| 3/ existe t'il un référentiel / doc / msdn / pour les scripts... j'ai
| envi d'en connaitre un peu plus sur le domaine

Un bon début :
- Ouvrir le centre d'aide et de support
- Rechercher "Référence de la ligne de commande"

Je vous invite également à découvrir le nouveau shell Microsoft Windows
PowerShell consultable à cette adresse ...
http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx

... ainsi que le blog de Jacques Barathon [MS] sur Windows PowerShell :
http://janel.spaces.msn.com/blog

| et a bientot pour de nouveau script

You're welcome ;-)

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD




Avatar
Gilles LAURENT
"Prm" <mplcg[nospam]@free.fr> a écrit dans le message de
news:
| Bonjour,

Bonjour,

| Juste un petite question pour terminer sur ce script, je souhaite
| notifier dans un fichier les tentatives infructueuses (ex : file
| pleine / service déjà arrêté)

Cette modification va casser le design ;-)

--- Coupez ici : startServiceIfNoJobQueued.cmd ---

@echo off
wmic printjob get * 2>&1 | find "JobId" >nul
if errorlevel 1 (
echo No job queued, requesting service state ...
net start | find /i "%~1">nul
if errorlevel 1 (
echo Service stopped, starting service "%~1" ...
net start "%~1">nul
) else (
echo Service already started
)
)
else (
echo Jobs queued, aborting ...
)

--- Coupez ici : startServiceIfNoJobQueued.cmd ---

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
Avatar
Prm
Bonjour Gilles,

Merci pour tout et désolé pour le "design"

A bientôt

Cdt

"Gilles LAURENT" a écrit dans le message de news:

"Prm" <mplcg[nospam]@free.fr> a écrit dans le message de
news:
| Bonjour,

Bonjour,

| Juste un petite question pour terminer sur ce script, je souhaite
| notifier dans un fichier les tentatives infructueuses (ex : file
| pleine / service déjà arrêté)

Cette modification va casser le design ;-)

--- Coupez ici : startServiceIfNoJobQueued.cmd ---

@echo off
wmic printjob get * 2>&1 | find "JobId" >nul
if errorlevel 1 (
echo No job queued, requesting service state ...
net start | find /i "%~1">nul
if errorlevel 1 (
echo Service stopped, starting service "%~1" ...
net start "%~1">nul
) else (
echo Service already started
)
)
else (
echo Jobs queued, aborting ...
)

--- Coupez ici : startServiceIfNoJobQueued.cmd ---

--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD