1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| $listprint = ""
$list = ""
$serveur = ""
$listserveur = @()
##### Liste des Imprimantes AD ####
$listprint = Get-ADObject -Filter {objectclass -like "printQueue"} | sort Name -Descending
$listprint = $listprint.Name
##### Liste des serveurs/stations d'impression ####
ForEach ($printer in $listprint){
$debut = 0
$milieu = $printer.IndexOf("-")
$fin = ($printer.Length) - ($milieu+1)
$serveur = $printer.Substring($debut,($milieu))
$nom = $printer.Substring(($milieu+1),$fin)
$listserveur = $listserveur + $printer.Substring($debut,($milieu))
$listserveurU = $listserveur | Get-Unique
}
##### Test si Reseau ou USB #####
Foreach ($srv in $listserveurU){
$srv = $srv.ToUpper()
If ($srv.StartsWith("S")){
##### Récupération du imprimante/port et port/ip #####
$PortsIMP = Get-WmiObject -Class Win32_Printer -ComputerName $srv | sort Name,Portname
$PortsIP = Get-WmiObject -Class Win32_TCPIPPrinterPort -ComputerName $srv | sort Name,Hostaddress
##### Association imprimante/ip #####
Foreach($IMP in $PortsIMP){
ForEach($IPs in $PortsIP){
if ($IMP.portname -eq $IPs.Name){
$IP=""
$IP= $IPs.hostaddress
##### Test si l'imprimante est allumé #####
If (Test-Connection $IP -quiet) {
##### Récupération Compteur #####
$SNMP = new-object -ComObject olePrn.OleSNMP
$SNMP.open($IP,"public",2,3000)
Write-Host "Sur le Serveur " $srv "l'imprimante " $IMP.Name ", port " $IMP.portname " soit " $IPs.Name " a pour adresse ip " $IPs.hostaddress ", Compteur : "$snmp.Get(".1.3.6.1.2.1.43.10.2.1.4.1.1")
}else{
Write-Host "Sur le Serveur " $srv "l'imprimante " $IMP.Name " Ping KO, l'imprimante doit être éteinte"
}
}
}
}
}else{
Write-Host "Sur le Serveur " $srv "l'imprimante " $IMP.Name " est en USB"
}
} |
Partager