Beautiful! I downloaded Scriptomatic to check it out and it offers a lot of good stuff. I don't suppose either of you know if I can use it to generate code to add/remove printers, do you. I now I can shell out to rundll32 printui.dll,PrintUIEntry, but would prefer to use the same method as prnmngr.vbs which uses oPrinter.Put_(kFlagCreateOnly) and oPrinter.Delete_. I don't know how those translate to AutoIt.
And... Thanks, guys, for your help. I've used the code example above to capture the information into an INI file....
Global $wbemFlagReturnImmediately = 0x10
Global $wbemFlagForwardOnly = 0x20
Global $colItems = ""
Global $strComputer = @Computername
Global $objWMIService = ObjGet("winmgmts:" & $strComputer & "rootCIMV2")
Global $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_Printer", "WQL",$wbemFlagReturnImmediately + $wbemFlagForwardOnly)
ListPrinters()
Func ListPrinters()
If IsObj($colItems) then
For $objItem In $colItems
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Device ID", $objItem.DeviceID)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Attributes", $objItem.Attributes)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Comments", $objItem.Comment)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Default Priority", $objItem.DefaultPriority)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Driver Name", $objItem.DriverName)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Location", $objItem.Location)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Port Name", $objItem.PortName)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Print Job Data Type", $objItem.PrintJobDataType)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Print Processor", $objItem.PrintProcessor)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Priority", $objItem.Priority)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Separator File", $objItem.SeparatorFile)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Server Name", $objItem.ServerName)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"Shared", $objItem.Shared)
IniWrite(@ScriptDir & "Printers.ini",$objItem.DeviceID,"ShareName", $objItem.ShareName)
;if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
;'$Output=""
Next
Else
Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_Printer" )
Endif
EndFunc