Bonjour a tous,
and help me please
Je souhaite modifier le script vbs suivant, mais il me manque de sérieuse notion afin d’arrivé a mes fin. Pourtant l’opération n’est pas complexe.
Le script a l’heure actuel permet en entrant le nom du serveur dans la ImputBox de récupérer les imprimantes dispo sur celui-ci ainsi que version des pilotes et ip, puis de les intégrer dans un fichier Excel .Jusque la tout fonctionne bien .
Le problème est que je dois effectuer l’opération pour environ 300 serveurs, et que le script en l’etat actuel me génère donc 300 fichier excel. Burk !

Je souhaiterai supprimer la Imputbox et que le script récupère les noms des serveurs dans un fichier txt
Ou les nom serveurs serais simplement a la ligne
Serv1
Serv3
Serv4
Et qu’il me fasse l’extraction dans un même fichier excel.
Qu’elle et la formule a utilisé a la place du strComputer = InputBox ?
Merci a vous par avance si quelqu’un peut me filer un coup de pouce !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
On Error Resume Next
 
Dim strComputer, strExcelPath, objExcel, objSheet, k, objGroup
Dim objWMIService, colItems, ErrState, Sheet
 
'Sheet = spreadsheet page, k = row in sheet
Sheet = 1
k = 2
 
strComputer = InputBox ("Please type the print server name to check, " & vbCrLf & _
   "Else enter ALL for all CC print servers", "Server Name","CCPS01")
if strComputer = "" then
  WScript.quit
end if
 
strExcelPath = InputBox ("Please enter the path to save file to: ", "File path", "d:\extractmopier\")
 
strExcelPath = strExcelPath & "Printers_" & strComputer & ".xls"
 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48)
 
' Bind to Excel object.
On Error Resume Next
Set objExcel = CreateObject("Excel.Application")
If Err.Number <> 0 Then
  On Error GoTo 0
  Wscript.Echo "Excel application not found."
  Wscript.Quit
End If
On Error GoTo 0
 
' Create a new workbook.
objExcel.Workbooks.Add
 
'Change this to fit your server situation
Select Case UCase(strComputer)
  Case "ALL"
    PrintServer("CCPS01")
    Sheet = Sheet + 1
    PrintServer("IRGFS01")
    Sheet = Sheet + 1
    PrintServer("CCFLDR01")
  Case Else
    PrintServer(strComputer)
End Select
 
Function PrintServer(strComputer)
 
k=2
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48)
 
' Bind to worksheet.
Set objSheet = objExcel.ActiveWorkbook.Worksheets(Sheet)
objSheet.Name = strComputer
 
' Populate spreadsheet cells with printer attributes.
objSheet.Cells(1, 1).Value = "SERVEUR"
objSheet.Cells(1, 2).Value = "Name"
objSheet.Cells(1, 3).Value = "ShareName"
objSheet.Cells(1, 4).Value = "DriverName"
objSheet.Cells(1, 5).Value = "Location"
objSheet.Cells(1, 6).Value = "PortName"
objSheet.Cells(1, 7).Value = "Published"
objSheet.Cells(1, 8).Value = "Queued"
objSheet.Cells(1, 9).Value = "Shared"
 
 
For Each objItem in colItems
 
'put error code into human readable form
Select Case objItem.DetectedErrorState
  Case 4
    ErrState = "Out of Paper"
  Case 5
    ErrState = "Toner low"
  Case 6
    ErrState = "Printing"
  Case 9
    ErrState = "Offline"
  Case Else
    ErrState = objItem.DetectedErrorState
End Select
 
'populate the row with this printer's data
objSheet.Cells(k, 1).Value = strComputer
objSheet.Cells(k, 2).Value = objItem.Name
objSheet.Cells(k, 3).Value = objItem.ShareName
objSheet.Cells(k, 4).Value = objItem.DriverName
objSheet.Cells(k, 5).Value = objItem.Location
objSheet.Cells(k, 6).Value = objItem.PortName
objSheet.Cells(k, 7).Value = objItem.Published
objSheet.Cells(k, 8).Value = objItem.Queued
objSheet.Cells(k, 9).Value = objItem.Shared
 
k = k + 1
Next
 
' Format the spreadsheet.
objSheet.Range("A1:M1").Font.Bold = True
objSheet.Select
objSheet.Range("A2").Select
objExcel.ActiveWindow.FreezePanes = True
objExcel.Columns(3).ColumnWidth = 25
objExcel.Columns(5).ColumnWidth = 25
objExcel.Columns(6).ColumnWidth = 10
objExcel.Columns(8).ColumnWidth = 25
objExcel.Columns(1).ColumnWidth = 20
objExcel.Columns(9).ColumnWidth = 14
objExcel.Columns(2).ColumnWidth = 15
End Function
 
' Save the spreadsheet and close the workbook.
objExcel.ActiveWorkbook.SaveAs strExcelPath
objExcel.ActiveWorkbook.Close
 
' Quit Excel.
objExcel.Application.Quit
 
' Clean Up
Set objUser = Nothing
Set objGroup = Nothing
Set objSheet = Nothing
Set objExcel = Nothing
 
WScript.Echo "Printer listing is done"