Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - сканирование ПК на наличие установленных принтеров

Ответить
Настройки темы
VBS/WSH/JS - сканирование ПК на наличие установленных принтеров

Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


Добрый день!

мне в сети необходимо найти у кого установлен принтер с определенным IP адресом, компов порядка 300, ручками искать и по пользователям ходить не вариант
хотелось бы что бы скрипт писал в файл "имя ПК" кто залогинен и список принтеров которые у него установлены

p.s. задача от руководства ибо к нему на принтер иногда печатается текст за который он хочет наказать печатающего

Отправлено: 10:28, 03-10-2012

 

Старожил


Сообщения: 280
Благодарности: 72

Профиль | Отправить PM | Цитировать


Я так понимаю принтер подключен к компу руководства. Так в логах пишется кто печатал когда печатал и с какого ip печатали.

Отправлено: 12:33, 03-10-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


на этом принтере я не нашел логи

Отправлено: 13:52, 03-10-2012 | #3


Аватара для IT Shepherd

Ветеран


Сообщения: 700
Благодарности: 148

Профиль | Отправить PM | Цитировать


Anufriev, озвучьте каким образом принтер расшарен, ну можно и модель принтера в придачу

-------
Эникейщик :)


Отправлено: 15:08, 03-10-2012 | #4


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Anufriev:
на этом принтере я не нашел логи »
Включите.

Цитата Dmitrii:
Протоколирование успешных событий печати - системная настройка. На серверных платформах "окошек" она включена по умолчанию. На XP включается так:
Папка "Принтеры и факсы" - меню "Файл" - пункт "Свойства сервера" - вкладка "Дополнительные параметры" - "коробочка" "Вести журнал сообщений очереди печати".
На Vista и 7 - не проверял.

Отправлено: 17:47, 03-10-2012 | #5


Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


принтер HP 1212
он сетевой (к нему все подключаются по IP), у начальника на ПК он не расшарен, поэтому на компе логировать не чего!
на самом принтере логов нет, поэтому и нужно вычислить у кого он установлен

Отправлено: 06:01, 04-10-2012 | #6


Старожил


Сообщения: 210
Благодарности: 76

Профиль | Отправить PM | Цитировать


Anufriev, у вас в организации домен? Если домен, то предлагаю в качестве опорной точки сценарий, решающий описанную задачу для одной станции. Если подобный подход устроит, то можно эту заготовку развивать в нужном направлении.
Код: Выделить весь код
Dim objWMI, objCollection, objItem
Dim objReg, arrValueNames, arrValueTypes
Dim strComputer, strDomain, strUser, strSID, strList, strTemp
Const HKU = &H80000003
Const strSubKeyName = "\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts"

strComputer = "здесь - имя станции"
If Available(strComputer) Then
    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objCollection = objWMI.ExecQuery("SELECT UserName FROM Win32_ComputerSystem")
    For Each objItem In objCollection
        strTemp = objItem.UserName
        If IsNull(strTemp) Then strTemp = vbNullString
    Next
    If Len(strTemp) > 0 Then
        strDomain = Split(strTemp, "\")(0)
        strUser = Split(strTemp, "\")(1)
        If StrComp(strComputer, strDomain, vbTextCompare) <> 0 Then
            Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
        Else
            Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
        End If
        Set objAccount = objWMI.Get("Win32_UserAccount.Domain='" & strDomain & "',Name='" & strUser & "'")
        strSID = objAccount.SID
        Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
        objReg.EnumValues HKU, strSID & strSubKeyName, arrValueNames, arrValueTypes
        For i = 0 To UBound(arrValueNames)
            If Left(arrValueNames(i), 2) = "\\" Then strList = strList & arrValueNames(i) & vbNewLine
        Next
        If Len(strList) > 0 Then
            WScript.Echo "Станция: " & strComputer & vbNewLine & "Пользователь: " & strTemp & vbNewLine & _
                                    "Подключения к сетевым принтерам: " & vbNewLine & strList
        Else
            WScript.Echo "Не найдено ни одного подключения к сетевому принтеру."
        End If
    Else
        WScript.Echo "Сеанс не обнаружен."
    End If
Else
    WScript.Echo "Станция не отвечает."
End If
WScript.Quit 0

'======

Function Available(strName)
Dim objWMI, objItem

Set objWMI = GetObject("winmgmts:").ExecQuery("SELECT StatusCode FROM Win32_PingStatus WHERE Address='" & strName & "'")
For Each objItem In objWMI
    If IsNull(objItem.StatusCode) Or objItem.StatusCode <> 0 Then
        Available = False
    Else
        Available = True
    End If
Next
Set objItem = Nothing
Set objWMI = Nothing
End Function

Отправлено: 14:56, 05-10-2012 | #7


Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


да у нас домен, можно было бы политикой запустить скрипт по всем машинкам, и собрать отчет

Отправлено: 07:13, 08-10-2012 | #8


Старожил


Сообщения: 210
Благодарности: 76

Профиль | Отправить PM | Цитировать


Цитата Anufriev:
... политикой запустить скрипт по всем машинкам, и собрать отчет
Пример сценария для запуска через GPO при начале сеанса пользователя. Журнал будет создан в папке Application Data профиля пользователя (разумеется, можете указать свой путь, но советую добавить проверку на наличие/доступность этого пути).
Код: Выделить весь код
Dim objWMI, objWsNet, objAccount
Dim objFS, objFile, strLog
Dim arrValueNames, arrValueTypes
Dim strDomain, strUser, strSID, strList
Const HKU = &H80000003
Const strSubKeyName = "\Software\Microsoft\Windows NT\CurrentVersion\PrinterPorts"
strLog = "_LanPrinters.log"
Set objWsNet = CreateObject("WScript.Network")
strComputer = objWsNet.ComputerName
strDomain = objWsNet.UserDomain
strUser = objWsNet.UserName
Set objWsNet = Nothing
On Error Resume Next
Set objWMI = GetObject("winmgmts:\\.\root\cimv2")
If Err.Number = 0 Then
    Set objAccount = objWMI.Get("Win32_UserAccount.Domain='" & strDomain & "',Name='" & strUser & "'")
    If Err.Number = 0 Then
        strSID = objAccount.SID
        If Err.Number = 0 Then
            Set objAccount = Nothing
            Set objWMI = GetObject("winmgmts:\\.\root\default:StdRegProv")
            If Err.Number = 0 Then
                objWMI.EnumValues HKU, strSID & strSubKeyName, arrValueNames, arrValueTypes
                If Err.Number = 0 Then
                    For i = 0 To UBound(arrValueNames)
                        If Left(arrValueNames(i), 2) = "\\" Then strList = strList & Mid(arrValueNames(i), 3) & ";"
                    Next
                    strLog = CreateObject("Shell.Application").NameSpace(&H1A).Self.Path & "\" & strUser & strLog
                    Set objFS = CreateObject("Scripting.FileSystemObject")
                    Set objFile = objFS.CreateTextFile(strLog, True)
                    If Err.Number = 0 Then
                        If Len(strList) > 0 Then
                            If Right(strList, 1) = ";" Then strList = Mid(strList, 1, Len(strList) - 1)
                            objFile.WriteLine strList
                        End If
                        objFile.Close
                        Set objFile = Nothing
                    Else
                        Err.Clear
                    End If
                    Set objFS = Nothing
                Else
                    Err.Clear
                End If
            Else
                Err.Clear
            End If
        Else
            Err.Clear
        End If
    Else
        Err.Clear
    End If
    Set objWMI = Nothing
Else
    Err.Clear
End If
WScript.Quit 0
Диагностику ошибок, если нужна, добавляйте самостоятельно.
Это сообщение посчитали полезным следующие участники:

Отправлено: 13:43, 08-10-2012 | #9


Пользователь


Сообщения: 102
Благодарности: 1

Профиль | Отправить PM | Цитировать


Цитата:
Журнал будет создан в папке Application Data профиля пользователя
все хорошо, а где данная строка, что бы изменить путь?

Отправлено: 07:05, 10-10-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - сканирование ПК на наличие установленных принтеров

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Безопасность - Сбор информации об установленных программах volon_85 Программное обеспечение Windows 7 25-05-2013 20:21
CMD/BAT - [решено] сканирование папки на наличие файла и его архивация Anufriev Скриптовые языки администрирования Windows 34 14-09-2012 12:36
CMD/BAT - [решено] Отсчет установленных обновлений sov44 Скриптовые языки администрирования Windows 11 19-06-2011 12:06
Flash - Как удалить драйвера установленных USB-устройств? Vady Накопители (SSD, HDD, USB Flash) 2 13-11-2010 20:44
Сканирование HDD на наличие bad секторов dimon55 Хочу все знать 5 15-12-2003 15:36




 
Переход