Да, спасибо Dmitrii. этот скрипт выбирает все принтеры заданного подразделения. Хотелось бы знать у кого они установлены. Другими словами я хочу по заданному имени станции получить список всех установленных принтеров этой станции. Локальные принтера я знаю как - через WMI класс Win32_Printer этим скриптом
Option Explicit
Dim WMI, sStr, i, cpsys, p,compname
Dim nwo, comp, user
Set nwo = CreateObject("WScript.Network")
comp = LCase(nwo.ComputerName)
'запросить имя удаленного компьютера
comp = InputBox("Введите имя компьютера:", comp)
'проверить доступность компьютера
If Unavailable(comp) Then
MsgBox "Компьютер недоступен:" & vbCrLf & comp
comp = ""
WScript.Quit(0) ' на выход
End If
If Len(comp) < 1 Then WScript.Quit(0) ' на выход
'Соединимся с WMI
On Error Resume Next
set WMI=GetObject("WinMgmts:{impersonationLevel=impersonate}!\\" & comp & "\Root\CIMV2")
If Err <> 0 Then
dim obj,objs,admname,admpass
dim locator
admname=inputbox("Имя администратора","Введите имя","")
admpass=inputbox("Пароль администратора","Введите пароль","")
set locator =Createobject("WbemScripting.SWbemLocator")
set WMI = locator.ConnectServer(comp,"root\cimv2",admname,admpass)
Err.Clear
End if
Set cpsys = WMI.ExecQuery("SELECT * FROM Win32_ComputerSystem")
For Each p In cpsys
compname=p.name
user=p.UserName
next
sStr="Имя компьютера : "& compname & vbCrLf 'Имя компьютера
sStr=sStr+"Имя пользователя : " & user & vbcrlf
Set cpsys = WMI.ExecQuery("SELECT * FROM Win32_Printer")
For Each p In cpsys
sStr=sStr+"Принтер : " & p.Name & vbcrlf
next
if Wscript.Arguments.Count > 0 then
Dim fso, tf
Set fso = CreateObject("Scripting.FileSystemObject")
Set tf = fso.CreateTextFile(compname & ".TXT", True)
tf.WriteLine sStr
tf.Close
end if
WScript.Echo sStr
WScript.Quit(0) ' на выход
'проверить доступность компьютера в сети
'вернуть True, если адрес недоступен
Function Unavailable(addr)
Dim wmio, ping, p
Set wmio = GetObject("WinMgmts:{impersonationLevel=impersonate}")
Set ping = wmio.ExecQuery("SELECT StatusCode FROM Win32_PingStatus WHERE Address = '" & addr & "'")
For Each p In ping
If IsNull(p.StatusCode) Then
Unavailable = True
Else
Unavailable = (p.StatusCode <> 0)
End If
Next
End Function