Est-ce une bonne base ?
' Script de connection des imprimantes réseau pour la migration du Print Server
' 25.10.2007, v1.3
Dim WshNetwork
dim pDefault
strComputer = "."
cpt = 0
Const newServer="\\serv-1\"
Const oldServer="\\serv-2\"
Set WshNetwork = WScript.CreateObject("WScript.Network" )
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2" )
Set colInstalledPrinters = objWMIService.ExecQuery ("Select * from Win32_Printer" )
'Quel est la default printer
pDefault = GetDefaultPrinter
For Each objPrinter in colInstalledPrinters
Name = LCase(objPrinter.Name)
'Ne modifie que les imprimantes réseau sur l'ancien serveur et non les autres
If inStr(Name, oldServer) Then
cpt = ctp + 1
'Remplace le nom de l'ancien serveur par le nouveau
NewName = Replace(Name, oldServer, newServer)
'Remove de l'ancien mappage
WshNetwork.RemovePrinterConnection Name
'Mappage sur le nouveau print server
WshNetwork.AddWindowsPrinterConnection NewName
End If
Next
'Si il n'y a pas d'imprimante réseau, l'imprimante par défaut reste la même
If (cpt > 0) then
'Nouveau default printer
pDefault = Replace(pDefault, oldServer, newServer)
WshNetwork.SetDefaultPrinter pDefault
End If
'Fin du script
Wscript.quit()
'Trouve l'imprimante définie par défaut
Function GetDefaultPrinter()
Set oShell = CreateObject("WScript.Shell" )
sRegVal = "HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Device"
sDefault = ""
On Error Resume Next
sDefault = oShell.RegRead(sRegVal)
sDefault = Left(sDefault ,InStr(sDefault, "," ) - 1)
On Error Goto 0
GetDefaultPrinter = sDefault
End Function