I use the following code in our VB logon script with no issues whatsoever in Windows 7. As far as your own script only working if you run by hand might have something to do with UAC though.
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colInstalledPrinters = objWMIService.ExecQuery("Select * from Win32_Printer",,48)
On Error Resume Next
For Each objPrinter in colInstalledPrinters
If Error <> 0 Then
'Just catch the error, moving on
'Nothing to see here folks, move along.