My vbs don't work using AD

G

Guest

Guest
Hello, i apologize for my English.
my problem is than i have write a vbs which add or remove printers on local machine but when I'm hosted that on my active directory this script don't apply when a user log on on machine.
someone can help me.
 
G

Guest

Guest
Yes, my script is successful run locally. the problem is when i try to apply that using AD.
here my script:

PrnName = "Kyocera FS-1100 KX"
Set objWshShell = WScript.CreateObject("WScript.Shell")

'retrieve username and computername
strComputer = objWshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
strUserName = objWshShell.ExpandEnvironmentStrings("%username%")
strHome = objWshShell.ExpandEnvironmentStrings("%HOMEPATH%")
strDrive = objWshShell.ExpandEnvironmentStrings("%HOMEDRIVE%")

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

objWMIService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege", True

Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer")

Set dr = objWMIService.ExecQuery("Select * from Win32_Printer where DeviceID = 'Kyocera FS-1100 KX'")

Set fs = CreateObject("Scripting.FileSystemObject")
folder = strDrive & strHome

if fs.FolderExists(folder) and dr.Count <> 0 then
For Each objPrinter in colInstalledPrinters
if objPrinter.DeviceID = PrnName then
objPrinter.SetDefaultPrinter()
end if
Next
else
'if fs.FolderExists(folder) and dr.Count = 0 then
'For Each objPrinter in colInstalledPrinters
'objPrinter.Delete_
'Next
'end if

if (fs.FolderExists(folder)) and (dr.Count = 0 or colInstalledPrinters.Count = 0) then
' Add a l'imprimante
''''''''''''''''''''''''''
Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_
objPrinter.DriverName = PrnName
objPrinter.PortName = "USB001"
objPrinter.DeviceID = PrnName
objPrinter.Location = "Imprimante installée sur la machine " & strComputer
objPrinter.Comment = "Imprimante " & PrnName
objPrinter.Network = False
objPrinter.Put_
objPrinter.SetDefaultPrinter()
end if

For Each objPrinter in colInstalledPrinters
if objPrinter.DeviceID = "Microsoft XPS Document Writer" or objPrinter.DeviceID = "PDF4U Adobe Creator" or objPrinter.DeviceID = "Microsoft Office Document Image Writer" then
objPrinter.Delete_
end if
Next

' restart spooler

Set objSpoolerSvc = objWMIService.Get("Win32_Service.Name='spooler'")
iReturn = objSpoolerSvc.StopService()
iReturn = objSpoolerSvc.StartService()
wscript.quit

end if

'For Each User In objlocal
'If lcase(User.Name) = lcase(strUserName) Then
'Set objUser = GetObject("WinNT://" & strComputer & "/username, " & strUserName)

'msgbox User.Name & " already exists." & vbCrLf & "The password was re-set."
'WScript.Quit
'End If
'Next
'End Sub

'strCommand = "rundll32 printui.dll,PrintUIEntry /y /n Kyocera FS-1100 KX /f /r USB001"
'intResult = objWshShell.run ("rundll32 printui.dll,PrintUIEntry /p /n Kyocera FS-1100 KX" , 0, true)



 

kyeana

Distinguished
May 21, 2008
230
0
18,860
Have you ran gpupdate on any of the clients after setting the script to run on the domain controller? How specifically did you set the script up to run on the domain controller?
 

Bruceification73

Distinguished
Oct 5, 2009
169
0
18,660
Have you installed Group Policy Preferences? Someone at instructables.com suggested that, and highly recommended it. Works on XP and higher, but you have to have the authority to do so.

Also, what Operating System are you running, and what is your server?
 
G

Guest

Guest
Hi, My Client using XP and my server 2003 server.
I try to apply my script on OU where i put users accounts only and apparently something changed when i log in (I do Gpupdate before).
 

Bruceification73

Distinguished
Oct 5, 2009
169
0
18,660
I gotta be honest with you, I can't figure it out. I only got one recommendation on one of the other sites I posted it to, and that was my previous post. Sorry.

From what I can tell it should work, but I've never tried anything with printers in vbs or any language for that matter. I hope someone can help you, but I really don't know what the problem is.