Script d'installation pour imprimante HP PageWide Pro 477dw

Résolu
EndOfDreams32 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   -

Bonjour à tous, j'ai pris un script qui me permet d'ajouter des imprimantes sur des ordinateurs de mon entreprises sans avoir a le faire manuellement, je récupère les pilotes (fichiers .inf) mais il me dis qu'il ne trouve pas de pilotes adaptés et me dis également de vérifier le nom de imprimante, si quelqu'un pense qu'il peut m'aider, qu'il se manifeste et je lui envois les captures en privé.

A voir également:

3 réponses

barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 

Bonjour,

Le script est en quel langage ?



0
EndOfDreams32 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 

Il est en batch (.bat)

0
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 

Alors je peux certainement t'aider.

0
barnabe0057 Messages postés 14455 Date d'inscription   Statut Contributeur Dernière intervention   4 925
 

Voilà un script conçu par moi-même permettant d'installer/ajouter une imprimante réseau à partir du dossier contenant le pilote et son script d'installation (fichier .inf). Le script doit être placé à l'intérieur du dossier et il doit être exécuté via le clic-droit ("exécuter en tant qu'administrateur").

Concernant les fonctionnalités :

- si l'imprimante est déjà installée le script va tout simplement quitter

- le script est capable d'identifier le bon fichier .inf parmi plusieurs, en se basant sur le modèle d'imprimante, sur l'entête du fichier et sur l'architecture (32 ou 64 bits) du système d'exploitation

- si l'adresse ip de l'imprimante n'est pas connue ni renseignée au début du script alors le script va télécharger et décompresser le scanner Nmap (à condition que l'utilitaire 7za.exe soit installé), celui-ci va alors analyser le réseau à la recherche de l'imprimante et de son adresse ip, pour cela il faudra renseigner l'adresse MAC de l'imprimante au début du script

- l'imprimante sera désignée comme étant l'imprimante par défaut

Le script a été testé avec succès sur 3 imprimantes de marques différentes (HP, Brother et Epson), sur Windows 10 version 22H2

Ne pas oublier d'indiquer à minima le modèle d'imprimante, et éventuellement l'adresse MAC ou l'adresse ip

@echo off
ver | find "10.0." >nul && chcp 65001 >nul || chcp 28591 >nul
color 0A
setlocal EnableExtensions EnableDelayedExpansion
mode con: cols=90 lines=30

title Installation d'une imprimante réseau

: -------------------------------------------------------------------------------------------------------------------------
: on renseigne le modèle exact de l'imprimante et éventuellement son adresse MAC
: -------------------------------------------------------------------------------------------------------------------------

rem imprimante "HP PageWide Pro 477dw"
:: set "model=HP PageWide Pro 477dw"

rem imprimante "Brother MFC-L2710DW"
set "model=Brother MFC-L2710DW"
set "target=A4:FC:77:65:61:C7"

: -------------------------------------------------------------------------------------------------------------------------
: on renseigne l'adresse ip de l'imprimante (facultatif car Nmap est capable de la trouver via son adresse MAC)
: -------------------------------------------------------------------------------------------------------------------------

set "ipAddress=" 
:: set "ipAddress=192.168.0.150"

: -------------------------------------------------------------------------------------------------------------------------
: on définit certaines variables qui concernent le scanner réseau Nmap
: -------------------------------------------------------------------------------------------------------------------------

set "port=9100"
set "nmapVersion=nmap-7.92"

if not defined model (exit /b 1)

: -------------------------------------------------------------------------------------------------------------------------
: on vérifie si l'imprimante n'est pas déjà installée
: -------------------------------------------------------------------------------------------------------------------------

wmic printer get Name,DriverName /format:table | find /i "%model%" && exit /b 1

: -------------------------------------------------------------------------------------------------------------------------
: on recherche le script d'installation (fichier .inf) du pilote de l'imprimante
: -------------------------------------------------------------------------------------------------------------------------

if "A%~1A"=="AA" (set "driverDirectory=%~dp0") else (set "driverDirectory=%~1")
cd /d %driverDirectory% || exit /b 1
set "inf="

echo.
echo ######################################################
echo Etape 1 - Recherche du pilote d'impression
echo ######################################################

rem on détermine si le système est 32 ou 64 bits
wmic os get osarchitecture /value | find "64" >nul && set "arch=x64" || set "arch=x86"

rem on recherche dans les fichiers .inf correspondants à l'architecture
for %%A in (*%arch%*.inf) do find /i "Class" "%%~A" | find /i "Printer" >nul && if not defined inf (call :extraction "%%~A")
if defined inf (goto :network)

rem on recherche dans tous les fichiers .inf
for %%A in (*.inf) do find /i "Class" "%%~A" | find /i "Printer" >nul && if not defined inf (call :extraction "%%~A")
if not defined inf (
	echo.
	echo Aucun script d'installation n'a été trouvé pour l'imprimante '%model%'
	echo. & pause
	exit /b 1
)

: -------------------------------------------------------------------------------------------------------------------------
: on lance l'installation si l'adresse ip a été renseignée au début du script, sinon on fait appel à Nmap
: -------------------------------------------------------------------------------------------------------------------------

:network

timeout /t 3 >nul

if defined ipAddress (
	call :installation "!ipAddress!"
	timeout /t 5 /nobreak
	exit /b 0
)

: -------------------------------------------------------------------------------------------------------------------------
: on vérifie les prérequis pour le téléchargement et l'extraction du programme Nmap
: -------------------------------------------------------------------------------------------------------------------------

7za | find "Pavlov" >nul || exit /b 1
curl -V | find "libcurl" >nul || exit /b 1
if not defined target (exit /b 1)

: -------------------------------------------------------------------------------------------------------------------------
: on télécharge le scanner réseau NMAP
: -------------------------------------------------------------------------------------------------------------------------

set "PATH=%TMP%\%nmapVersion%;%PATH%"

pushd %TMP%

nmap -V >nul 2>&1 || (

	echo ######################################################
	echo Etape requise - Téléchargement de l'outil NMAP
	echo ######################################################
	echo.
	curl -# -k -o "%nmapVersion%-win32.zip" "https://nmap.org/dist/%nmapVersion%-win32.zip"
	cls & echo.
	echo ######################################################
	echo Etape requise - Décompression de l'outil NMAP
	echo ######################################################
	7za x "%nmapVersion%-win32.zip" -y

)

popd

: -------------------------------------------------------------------------------------------------------------------------
: on vérifie si NpCap est installé
: -------------------------------------------------------------------------------------------------------------------------

:verif

nmap -V 2>&1 | find "WARNING:" >nul && (
	echo. & echo ### Veuillez d'abord installer le programme NpCap
	echo. & pause
	start "" /D "%TMP%\%nmapVersion%" /WAIT "npcap-1.50.exe"
	goto :verif
)

: -------------------------------------------------------------------------------------------------------------------------
: on scanne le réseau avec l'outil NMAP
: -------------------------------------------------------------------------------------------------------------------------

for /f "tokens=2 delims=:(" %%A in ('netsh interface ip show address ^| find "/" ^| findstr /v "127.0."') do if not defined network (set "network=%%~A")
set "network=!network: =!"

set "macAddress="

cls & echo.
echo ######################################################
echo Etape 2 - Recherche de l'IP imprimante
echo ######################################################
echo.

set "log=%TMP%\report_nmap.txt"
nmap.exe -n -oN %log% --open -p T:%port% !network!

timeout /t 2 /nobreak

: -------------------------------------------------------------------------------------------------------------------------
: on analyse le fichier journal pour extraire l'ip de l'imprimante
: -------------------------------------------------------------------------------------------------------------------------

for /f "tokens=5" %%M in ('findstr /i /C:"Nmap scan report for" "%log%"') do set "ipAddress=%%M"
for /f "tokens=3-8 delims=:( " %%P in ('findstr /i /C:"MAC Address" "%log%"') do set "macAddress=%%P:%%Q:%%R:%%S:%%T:%%U"

if "!macAddress!"=="%target%" (call :installation "!ipAddress!") else (echo. & echo ^>^>^> L'imprimante ciblée est éteinte/inaccessible)

: -------------------------------------------------------------------------------------------------------------------------
: fin du script
: -------------------------------------------------------------------------------------------------------------------------

timeout /t 5 /nobreak
exit /b 0

: -------------------------------------------------------------------------------------------------------------------------
: on crée un port TCP/IP contenant l'ip de l'imprimante
: -------------------------------------------------------------------------------------------------------------------------

:installation

cls & echo.
echo ^>^>^>^>^> %model% = [ %~1 ] ^<^<^<^<^<
echo. & echo.
echo ######################################################
echo Etape 3 - Création du port d'impression TCP/IP
echo ######################################################
echo.

cscript "%WINDIR%\System32\Printing_Admin_Scripts\fr-FR\prnport.vbs" -a -r "IP_%~1" -h %~1 -o raw -n %port%

: -------------------------------------------------------------------------------------------------------------------------
: on ajoute/installe l'imprimante dans le système
: -------------------------------------------------------------------------------------------------------------------------

echo. & echo.
echo ######################################################
echo Etape 4 - Ajout de l'imprimante réseau
echo ######################################################
echo.

rundll32 printui.dll,PrintUIEntry /if /b "%model%" /f "!inf!" /r "IP_%~1" /h %arch% /m "!driverName!" /z
echo ^=^=^>^> ajout imprimante OK

rundll32 printui.dll,PrintUIEntry /y /n "%model%"
echo. & echo ^=^=^>^> imprimante par défaut OK

goto :eof

: -------------------------------------------------------------------------------------------------------------------------
: on récupère le nom du pilote contenu dans le .inf
: -------------------------------------------------------------------------------------------------------------------------

:extraction

set "driverName="
for /f "skip=2 tokens=1,2 delims=,=""" %%E in ('find "%model%" "%~1"') do (
	if not defined driverName (echo %%~E | findstr "Printer series Series" >nul && set "driverName=%%~E" || set "driverName=%%~F")
)

:supEspace
if defined driverName (
	if "!driverName:~-1!"==" " (
		set "driverName=!driverName:~0,-1!"
		goto :supEspace
	)
	set "driverName=!driverName:"=!"
	set "inf=%~1"
) else (exit /b 1)

: -------------------------------------------------------------------------------------------------------------------------
: on affiche les informations issues du fichier .inf
: -------------------------------------------------------------------------------------------------------------------------

for /f "tokens=2,3 delims=,=" %%A in ('find /i "DriverVer" "!inf!"') do set "version=%%B" & set "creation=%%A"

echo.
echo ^>^>^> Modèle        : '%model%'
echo ^>^>^> Fichier INF   : '!inf!'
echo ^>^>^> Nom du pilote : '!driverName!'
echo.
echo ^>^>^> Script d'installation : OK

if exist "!inf:inf=cat!" (echo ^>^>^> Catalogue de sécurité : OK) else (exit /b 1)

echo.
echo ^>^>^> Version du pilote     : !version: =!
echo ^>^>^> Date du pilote        : !creation: =!
echo.

goto :eof

rem


0