Je viens vers vous car je cherche définitivement un solution à mon problème.
J'essaye d'installer une imprimante via mon serveur d'impression, plus précisément, il y à un petit peu je voulais un script qui visualise les imprimantes installé sur un client ou un serveur. Dans le forum j'ai trouvé ce script qui m'a tout de suite convaincu :
Code : Tout sélectionner
#Include <Array.au3>
Local $server = "172.16.11.98" ;
$list = _EnumPrinters($server)
_ArrayDisplay($list, "Imprimantes disponible sur " & $server, -1, 0, "", "", "RowID|DeviceID|DriverName|Name|ServerName|Shared|ShareName|PortName|PortIP")
Func _EnumPrinters($strComputer = "172.16.11.98")
Local $aResult[1][8]
Local $wbemFlagReturnImmediately = 0x10
Local $wbemFlagForwardOnly = 0x20
Local $objWMIService, $colPrinters, $objPrinter
$objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$colPrinters = $objWMIService.ExecQuery ("Select * from Win32_Printer", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If NOT IsObj($colPrinters) Then Return 0
$i = 0
For $objPrinter in $colPrinters
$i += 1
Redim $aResult[$i][8]
$aResult[$i - 1][0] = $objPrinter.DeviceID
$aResult[$i - 1][1] = $objPrinter.DriverName
$aResult[$i - 1][2] = $objPrinter.Name
$aResult[$i - 1][3] = $objPrinter.ServerName
$aResult[$i - 1][4] = $objPrinter.Shared
$aResult[$i - 1][5] = $objPrinter.ShareName
$aResult[$i - 1][6] = $objPrinter.PortName
$aResult[$i - 1][7] = _GetPrinterPortIP($objPrinter.PortName, $strComputer)
Next
Return $aResult
EndFunc
Func _GetPrinterPortIP($sPortName, $strComputer)
Local $wbemFlagReturnImmediately = 0x10
Local $wbemFlagForwardOnly = 0x20
Local $objWMIService, $colPort, $colPort
$objWMIService = ObjGet("winmgmts:{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
$colPort = $objWMIService.ExecQuery ("select * from Win32_TCPIPPrinterPort Where Name = '" & $sPortName & "'", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
If NOT IsObj($colPort) Then Return 0
For $objPort in $colPort
Return $objPort.HostAddress
Next
Return ""
EndFunc
Func _ErrFunc($oError)
Local $txt = "Error number : " & $oError.number & @CRLF & _
"WinDescription:" & @TAB & $oError.windescription & @CRLF & _
"Description : " & @TAB & $oError.description & @CRLF & _
"Source : " & @TAB & $oError.source
MsgBox(16, "Error", $txt)
EndFunc
Func _StringUnSplit($aVal, $sSep = ";")
If NOT IsArray($aVal) Then Return 0
Local $sReturn = ""
For $i = 0 To UBound($aVal) - 1
If $i = 0 Then
$sReturn = $aVal[$i]
Else
$sReturn &= $sSep & $aVal[$i]
EndIf
Next
Return $sReturn
EndFunc
Donc si quelqu'un à une solution je suis preneur.
Merci par avance et bonne journée