'(c)2014 s@xxxxxxxx.com
' defaultlist example: service Client,\\2K12SRV\HP 4050 P005
PrintServer = "2K8SRV" 'Old Print server name goes here - case sensitive
listfile = "\defaultlist.txt"
lockfile = "\defaultprt"
Set objNetwork = CreateObject("WScript.Network")
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objSysInfo = CreateObject("ADSystemInfo")
Set objShell = CreateObject("WScript.Shell")
userprrf = objShell.Environment("PROCESS")("UserProfile")
strComputer = "."
'strCurPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(strComputer)
strCurPath = "\\2k12srv\netlogon\deploy" ' relpath doesn't seems to work on UNC
wscript.echo strCurPath
If (objFSO.FileExists(userprrf & lockfile)) Then
'Debug
'with createobject("wscript.shell")
'.popup userprrf & "Lockfile EXIST!" , 1 , "Info"
'end with
Wscript.Quit
End If
'On Error Resume Next
strName = objSysInfo.UserName
' Split full username by comma (warning: comma is a valid char in OU, verify personally that it doesn't exist in your OU!)
arrUserName = Split(strName, ",")
' remove OU= or DC= for the last 2 OU's
arrOU = Split(arrUserName(1), "=")
arrOU2 = Split(arrUserName(2), "=")
'put those OU toghether
strOU = arrOU2(1) & " " & arrOU(1)
' open the list of OU vs printers pairs
Set objFile = objFSO.OpenTextFile(strCurPath + listfile, 1)
Do Until objFile.AtEndOfStream
' they are separated by comma, first is OU second is printer
defaultArray = split(objFile.ReadLine,",")
readOU=defaultArray(0)
defaultprt=defaultArray(1)
' Debug
'with createobject("wscript.shell")
'.popup "Check: """ & strOU & """ = """ & readOU & """ Choose """ & defaultprt & """. " , 1 , "Info"
'end with
If strOU = readOU Then
' Debug
'with createobject("wscript.shell")
'.popup "Found: """ & strOU & """ = """ & readOU & """ Printer: """ & defaultprt & """. " , 5 , "Info"
'end with
' first ensure that the printer is installed, then set it default
objNetwork.AddWindowsPrinterConnection defaultprt
objNetwork.SetDefaultPrinter defaultprt
exit do
End If
Loop
objFile.Close
'Remove old printers
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery _
("Select * from Win32_Printer")
For Each objPrinter in colInstalledPrinters
'Debug
'with createobject("wscript.shell")
'.popup "Name: " & objPrinter.Name , 1 , "Info"
'end with
'Wscript.Echo "Name: " & objPrinter.Name
i = 0
ReDim Preserve arrPrinterName(i)
arrPrinterName(i) = objPrinter.Name
If InStr(arrPrinterName(i), PrintServer) Then
Set objNetwork = WScript.CreateObject("WScript.Network")
'Debug
'with createobject("wscript.shell")
'.popup "Removing: " & arrPrinterName(i) , 5 , "Info"
'end with
objNetwork.RemovePrinterConnection arrPrinterName(i)
i=i+1
Else
'Debug
'with createobject("wscript.shell")
'.popup "Skipped: " & arrPrinterName(i) , 5 , "Info"
'end with
End If
Next
' Leave a lockfile in user's home
Set objFile1 = objFSO.CreateTextFile(userprrf & lockfile)
Wscript.Quit
No comments:
Post a Comment