<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS: Мониторинг состояния сетевых принтеров]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6037&amp;type=atom" />
	<updated>2013-11-18T18:19:19Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=6037</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=77402#p77402" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Crowrav пишет:</cite><blockquote><p>... как получить количество отпечатанных страниц?..</p></blockquote></div><p>Читайте журнал событий <strong><span style="color: blue">&quot;System&quot;</span></strong> на предмет поиска в нём уведомлений (тип события - <strong><span style="color: blue">3</span></strong>) от источника с именем <strong><span style="color: blue">&quot;Print&quot;</span></strong>. Для XP/2003 код события - <strong><span style="color: blue">10</span></strong>, для других версий ОС - посмотрите в журнале.<br />После нахождения соответствующей записи анализируйте текст уведомления, т.к. в нём содержится информация и о количестве напечатанных страниц.<br />По умолчанию у серверных версий ОС журналирование событий успешной обработки заданий печати включено, у клиентских - выключено, следовательно потребуется предварительно включить функцию <strong><em><span style="color: green">&quot;Вести журнал сообщений очереди печати&quot;</span></em></strong>.</p>]]></content>
			<author>
				<name><![CDATA[Dmitrii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=13351</uri>
			</author>
			<updated>2013-11-18T18:19:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=77402#p77402</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=77133#p77133" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Crowrav пишет:</cite><blockquote><p>как получить количество отпечатанных страниц?<br />Определенный принтер(независимо как подключен), кол-во распечатанного.<br />вкратце.</p></blockquote></div><p>Я задачу опроса спулера удаленной системы на предмет количества заданий (jobs) по всем принтерам машины - количество заданий &quot;в работе&quot; и общее количество заданий отправленных на принтера после включения машины (или перезапуска спулера) реализовывал в упоминаемом в этой теме своём скрипте <strong>PrinterListPC.hta<br /></strong></p><p>Правда, &quot;задания&quot;, отправленые на принтер с конкретной машины - это далеко не &quot;страницы&quot; принтера, если быть точным.</p><p>Описание программы с кодом и картинками - <a href="https://sites.google.com/site/scripttools/home/printerlistpc-hta">https://sites.google.com/site/scripttoo … listpc-hta</a></p>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2013-11-10T17:58:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=77133#p77133</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=77115#p77115" />
			<content type="html"><![CDATA[<p>Хотел бы продолжить, тему и спросить.<br />как получить количество отпечатанных страниц?<br />Определенный принтер(независимо как подключен), кол-во распечатанного.<br />вкратце.<br />Спасибо!</p>]]></content>
			<author>
				<name><![CDATA[Crowrav]]></name>
			</author>
			<updated>2013-11-10T05:31:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=77115#p77115</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50533#p50533" />
			<content type="html"><![CDATA[<p>Совершенно верно, alexii, все зависет от заправщика тонера. Кроме количества тонера многое зависит от барабана, изношенности дозируещего устройства и прочего богатого внутреннего мира картриджа <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Shwan]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27107</uri>
			</author>
			<updated>2011-08-10T11:06:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50533#p50533</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50508#p50508" />
			<content type="html"><![CDATA[<p><strong>smaharbA</strong>, имеется в виду, что, даже если картриджи не чипованные/не перешитые — расчёт зависит от количества и характеристик засыпаемого порошка, которые, в свою очередь, сильно зависят от вменяемости и совести засыпающего.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2011-08-09T14:05:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50508#p50508</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50506#p50506" />
			<content type="html"><![CDATA[<p>Shwan - прогнозирование вполне будет работать по счетчикам и не зависит от оригинальности катриджа (почти)</p>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2011-08-09T13:06:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50506#p50506</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50505#p50505" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Shwan пишет:</cite><blockquote><p>Радоватся или грустить по этому поводу я не знаю.</p></blockquote></div><p>Смириться и принять.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2011-08-09T13:03:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50505#p50505</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50500#p50500" />
			<content type="html"><![CDATA[<p>Доброго дня.<br />Пасиба откликнувшимся за помощь.<br />Проблема с принтерами решилась совсем неожиданным способом.<br />Результатом всех манипуляций должен был стать инструмент который бы позволил прогнозировать расход тонера. Но как оказалось, это возможно только при использовании оригинальных (не заправленных \ перезаправленных) картриджей. На такой &quot;геройский поступок&quot; никто денег не даст, по этому все остается без изменений. Радоватся или грустить по этому поводу я не знаю.</p>]]></content>
			<author>
				<name><![CDATA[Shwan]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27107</uri>
			</author>
			<updated>2011-08-09T10:52:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50500#p50500</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50268#p50268" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Dmitrii пишет:</cite><blockquote><div class="quotebox"><cite>Shwan пишет:</cite><blockquote><p>... 30% принтеров не подключены серверу но подключены к сети...</p></blockquote></div><p>Это принтеры с собственными сетевыми картами? Где установлены драйверы для этих принтеров?</p><div class="quotebox"><cite>Shwan пишет:</cite><blockquote><p>... определяются сетевые принтеры не подключенные к серверу...</p></blockquote></div><p>Каким признаком предполагаете пользоваться для того, чтобы отличать их от рабочих станций?</p></blockquote></div><p>Считаю, что именно с предположения, что на сетевой принтер по идее на какой-то - хотя бы одной) рабочей станции уже стоят драйвера с прописанным портом, и стоит начать собирать сбор данных о таких принтерах. Т.е. сканируя включенные рабочие машины собирать массив имеющихся на них портов, и потом уже его анализировать - то ли это расшаренный у кого-то принтер, то ли это принтер заданный именем хоста, то ли - заданный айпи.</p><p>А уже от рабочих станций, где задействован интересующий порт - получать данные о принтере.</p><br /><p>ps. хотя может имеет смысл поискать утилиту как у HP, но от остальных производителей имеющихся принтеров?...</p>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2011-07-29T22:03:21Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50268#p50268</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50267#p50267" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Shwan пишет:</cite><blockquote><p>... 30% принтеров не подключены серверу но подключены к сети...</p></blockquote></div><p>Это принтеры с собственными сетевыми картами? Где установлены драйверы для этих принтеров?</p><div class="quotebox"><cite>Shwan пишет:</cite><blockquote><p>... определяются сетевые принтеры не подключенные к серверу...</p></blockquote></div><p>Каким признаком предполагаете пользоваться для того, чтобы отличать их от рабочих станций?</p><div class="quotebox"><cite>Shwan пишет:</cite><blockquote><p>... как подправить скрипт для сохранения результатов в файл...</p></blockquote></div><p>Пример:<br /></p><div class="codebox"><pre><code>&#039;предыдущий код
strLog = &quot;Printers.txt&quot;
Set objFS = CreateObject(&quot;Scripting.FileSystemObject&quot;)
strLog = objFS.BuildPath(objFS.GetParentFolderName(WScript.ScriptFullName), strLog)
Set objFile = objFS.CreateTextFile(strLog, True)
For Each objItem In colItems
    objFile.WriteLine &quot;Printers on &quot; &amp; objItem.name &amp; &quot;, Printer Number: &quot; &amp; _
        intPrinters &amp; VbCr &amp; &quot;====================================&quot;
    objFile.WriteLine &quot;Availability: &quot; &amp; objItem.Availability
    &#039;и далее подобным же образом
    objFile.WriteLine &quot;Vertical Res: &quot; &amp; objItem.VerticalResolution &amp; VbCr
    intPrinters = intPrinters + 1
Next
objFile.Close
Set objFile = Nothing
Set objFS = Nothing
&#039;последующий код</code></pre></div><div class="quotebox"><cite>Shwan пишет:</cite><blockquote><p>... Как (где? )&nbsp; посмотреть пользователей подключенных к принтеру...</p></blockquote></div><p>Если речь обо всех пользователях, в профилях которых настроены соответствующие подключения, то в этих профилях и смотреть.<br />Если речь о пользователях, задания печати которых выполняются в текущий момент (или выполнялись в течение активного сеанса работы), то, вероятнее всего, надо периодически смотреть список сеансов, открытых для спулера.</p>]]></content>
			<author>
				<name><![CDATA[Dmitrii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=13351</uri>
			</author>
			<updated>2011-07-29T21:43:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50267#p50267</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50266#p50266" />
			<content type="html"><![CDATA[<p>Может кому-то пригодится мое небольшое hta-приложение по отображению имеющихся на удаленной системе принтеров и задействованных TCPIPPrinterPort.</p><p>Применение - до подключения Ремоут.Ассистентом к юзеру выполняю предварительный контроль имещихся принтеров на его машине, поиски расшареного принтера на других &quot;соседних&quot; машинах, тест доступности принтера по значению TCPIPPrinterPort.</p><p>Помимо этого, т.к. приложение было на коленке переделано из другой моей программки, то выполняется еще и: определение времени включения машины, ее дескрипшн, логин пользователя и доменные данные - по машине, юзеру и менеджеру машины. Код определения времени логона юзера, увы, несовершенен (т.е. время однозначно определяется далеко не всегда) - был бы рад, если бы подсказали по этому моменту (т.к. это у меня небольшой камень преткновения в приложении, мониторящем перелогон пользователя).</p><p>И был бы рад, если бы коллеги подсказали скриптовый способ определения принтера по умолчанию у залогиненого на удаленнй пользователя (может как-то из ветки реестра пользователя?).</p><div class="codebox"><pre><code>&lt;!-- === PrinterListPC.hta ====================================================
Может получать в качестве параметра - Имя компьютера / ip-адрес

Предоставляет интерфейс для опроса установленых в удаленной системе принтеров.
Roman, rgv15@list.ru
=========================================================================== --&gt;

&lt;HTML&gt;
&lt;HEAD&gt;
&lt;TITLE&gt;PrinterListPC&lt;/TITLE&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=windows-1251&quot;&gt;

&lt;HTA:APPLICATION ID=&quot;oHTA_PrinterListPC&quot;
  APPLICATIONNAME=&quot;PrinterListPC&quot;
  VERSION=&quot;1.1 27.07.2011&quot;
  SCROLL=&quot;yes&quot;
  SELECTION=&quot;yes&quot;
/&gt;

&lt;SCRIPT LANGUAGE=&quot;JScript&quot;&gt;
self.resizeTo(900,560); // To make the window XXXX pixels wide and YYYYY pixels tall 
&lt;/SCRIPT&gt;

&lt;SCRIPT Language=&quot;VBScript&quot;&gt;

&#039; ----- константы глобальные для всего приложения
Const ADS_SERVER_BIND = &amp;h200
Const wbemFlagReturnImmediately = &amp;h10
Const wbemFlagForwardOnly = &amp;h20

&#039; ----- объекты глобальные для всего приложения ---------------------------------------
Dim fso, oShell
Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set oShell = CreateObject(&quot;WScript.Shell&quot;)

&#039; глоб.переменные для последних данных пингования машины&#039;
Dim gsPing_IP                   : gsPing_IP = &quot;&quot;
Dim giLastLog_OS                : giLastLog_OS = 0 &#039;номер версии OS&#039;
Dim gsLastLog_BOOT              : gsLastLog_BOOT = &quot;&quot;
Dim gsLastLog_namePC            : gsLastLog_namePC = &quot;&quot;
Dim gsLastLog_timeLogon         : gsLastLog_timeLogon = &quot;&quot;
Dim gsLastLog_WMIdescription    : gsLastLog_WMIdescription = &quot;&quot;
Dim gsLastLog_PC_OU
Dim gsLastLog_PC_description    : gsLastLog_PC_description = &quot;&quot; &#039;AD&#039;
Dim gsLastLog_PC_mgr_name_OU
Dim gsLastLog_PC_mgr_phone
Dim gsLastLog_user_login        : gsLastLog_user_login = &quot;&quot;
Dim gsWhoami                    : gsWhoami = &quot;&quot;
&#039;---&#039;
Dim gsEmptyLog : gsEmptyLog = &quot;&quot;

Sub Window_OnLoad &#039;-----------------------------------------------------------------&#039;

    gsEmptyLog = div_Log.innerHTML
    ue_whoami &#039;определяем учетку, под которой стартовало приложение&#039;
    ue_defaultNameApp &#039; устанавливаем имя окна приложения&#039;
    idNamePC.focus()
    
    &#039; в качестве имени сканируемой машины берем последний параметр из командной строки запуска и выполняем сканирование
    arrCmd = Split( oHTA_PrinterListPC.commandLine, chr(32) )
    If (Ubound( arrCmd ) &gt;= 1) Then &#039;имеются переданные параметры
        sLastParam = arrCmd( Ubound(arrCmd) )
        If sLastParam &lt;&gt; &quot;&quot; Then
            idNamePC.Value = sLastParam &#039;берем последний
            id_btScan.onClick()
        End IF
    End IF
End Sub

Sub ue_defaultNameApp &#039; устанавливаем имя окна приложения&#039;
    document.title = oHTA_PrinterListPC.APPLICATIONNAME &amp; &quot; v.&quot; &amp; _
        oHTA_PrinterListPC.version &amp; &quot; (&quot;&amp;gsWhoami&amp;&quot;)&quot;
End Sub

Function ue_whoami()
    Dim sUSERNAME
    sUSERNAME = &quot;&quot;
    sUSERNAME = oShell.ExpandEnvironmentStrings(&quot;%USERNAME%&quot;)
    gsWhoami = sUSERNAME
End Function

&#039;--- uf_pingWIN32( host ) --------------------------------------
&#039; Проверяем через WMI доступность компьютера %host%
&#039;---------------------------------------------------------------
&#039; Возврат строковый: либо &quot;off&quot;, либо IP-адрес&#039;
&#039;---------------------------------------------------------------
Function uf_pingWIN32(sHostName) 
    uf_pingWIN32 = &quot;&quot; &#039; &quot;off line&quot; 
    Dim objPing 
    Set objPing = _
        GetObject(&quot;winmgmts:{impersonationLevel=impersonate}&quot;).ExecQuery(&quot;select * from Win32_PingStatus where address = &#039;&quot; &amp; sHostName &amp; &quot;&#039;&quot;) 
    For Each objStatus in objPing 
        If IsNull(objStatus.StatusCode) or objStatus.StatusCode &lt;&gt; 0 Then 
            uf_pingWIN32 = &quot;off&quot; 
        Else 
            uf_pingWIN32 = objStatus.ProtocolAddress &#039; &quot;on&quot;
        End If
    Next 
    Set objPing = Nothing
End Function 

Sub uf_getDataPing &#039; --- начальное сканирование (до начала цикличнх проверок)
    div_Log.innerHTML = gsEmptyLog
    document.title = &quot;prn:&quot; &amp; LCase(idNamePC.Value)
    tdTimeScan.innerHTML = Now()
    tm = time()
    tdTimeBoot.innerHTML = &quot;Н/Д&quot;
    tdIP.innerHTML = &quot;Н/Д&quot;
    tdTimeLogon.innerHTML = &quot;Н/Д&quot;
    tdWMI_NamePC.innerHTML = &quot;Н/Д&quot;
    tdAD_OUPC.innerHTML = &quot;Н/Д&quot;
    tdWMI_DescPC.innerHTML = &quot;Н/Д&quot;
    tdAD_DescPC.innerHTML = &quot;Н/Д&quot;
    tdWMI_user.innerHTML = &quot;Н/Д&quot;
    tdAD_manager.innerHTML = &quot;Н/Д&quot;
    gsPing_IP = uf_pingWIN32( idNamePC.Value )
    If gsPing_IP &lt;&gt; &quot;off&quot; Then
        tdIP.innerHTML = &quot;&lt;font color=Blue&gt;&quot; &amp; gsPing_IP &amp; &quot;&lt;/font&gt;&quot;
        gsLastLog_ipPC = gsPing_IP
        If uf_scanHost() Then &#039;--- скан, результат - успешность получения WMI &#039;
            tdWMI_NamePC.innerHTML = gsLastLog_namePC
            tdWMI_DescPC.innerHTML = gsLastLog_WMIdescription
            tdTimeLogon.innerHTML = gsLastLog_timeLogon
            tdWMI_user.innerHTML = &quot;&lt;font color=Blue&gt;&quot; &amp; gsLastLog_user_login &amp; &quot;&lt;/font&gt;&quot;
            If Len(gsLastLog_user_login)&gt;0 Then document.title = document.title &amp; &quot;\&quot; &amp; gsLastLog_user_login
            uf_getPrnList()
        End IF
        If Len(gsLastLog_BOOT)&gt;0 Then tdTimeBoot.innerHTML = &quot;&lt;font color=Blue&gt;&quot; &amp; gsLastLog_BOOT &amp; &quot;&lt;/font&gt;&quot;
    else
        tdIP.innerHTML = &quot;&lt;font color=Red&gt;no ping&lt;/font&gt;&quot;
        gsLastLog_ipPC = &quot;&quot;
    End IF
    uf_AD_select( LCase(idNamePC.Value) )
    If Len(gsLastLog_PC_OU)&gt;0 Then tdAD_OUPC.innerHTML = gsLastLog_PC_OU
    If Len(gsLastLog_PC_description)&gt;0 Then tdAD_DescPC.innerHTML = gsLastLog_PC_description
    If Len(gsLastLog_PC_mgr_name_OU)&gt;0 Then tdAD_manager.innerHTML = gsLastLog_PC_mgr_name_OU
    If Len(gsLastLog_PC_mgr_phone)&gt;0 Then tdAD_manager.innerHTML = _
        &quot;&lt;b&gt;&quot; &amp; gsLastLog_PC_mgr_phone &amp; &quot;&lt;/b&gt;, &quot; &amp; tdAD_manager.innerHTML
End Sub

Sub uf_getPrnList()
    Set objDictionary = CreateObject(&quot;Scripting.Dictionary&quot;) 

    Set objWMIService = GetObject(&quot;winmgmts:\\&quot; &amp; gsPing_IP &amp; &quot;\root\CIMV2&quot;)
    Set colItems = objWMIService.ExecQuery(&quot;SELECT * FROM Win32_Printer&quot;, &quot;WQL&quot;, wbemFlagReturnImmediately + wbemFlagForwardOnly)
    s = &quot;&lt;table width=&#039;100%&#039; cellpadding=0 cellspacing=0 border=1 style=&#039;font-family: Arial; font-size: 12;&#039;&gt;&lt;tr&gt;&quot; &amp;_
    &quot;&lt;th&gt;Default&lt;/th&gt;&lt;th&gt;Caption&lt;/th&gt;&lt;th&gt;DriverName&lt;/th&gt;&lt;th&gt;PortName&lt;/th&gt;&lt;th&gt;Shared&lt;/th&gt;&lt;th&gt;ShareName&lt;/th&gt;&lt;th&gt;PrinterStatus&lt;/th&gt;&lt;/tr&gt;&quot;
    For Each objItem In colItems
        objDictionary.Add objItem.PortName,objItem.PortName
        strPrinterStatus = &quot;(?)&quot;
        Select Case objItem.PrinterStatus
        Case 1
            strPrinterStatus = &quot;Other (not responding)&quot;
        Case 2
            strPrinterStatus = &quot;Unknown (not responding)&quot;
        Case 3
            strPrinterStatus = &quot;Idle&quot;
        Case 4
            strPrinterStatus = &quot;Printing&quot;
        Case 5
            strPrinterStatus = &quot;Warmup&quot;
        End Select
        
        s = s &amp; &quot;&lt;tr&gt;&quot;
        If objItem.Default Then sTmp = &quot;+&quot; Else sTmp = &quot;--&quot;
        s = s &amp; &quot;&lt;td align=center&gt;&quot; &amp; sTmp &amp; &quot;&lt;/td&gt;&quot;
        s = s &amp; &quot;&lt;td&gt;&quot; &amp; objItem.Caption &amp; &quot;&lt;/td&gt;&quot;
        s = s &amp; &quot;&lt;td&gt;&quot; &amp; objItem.DriverName &amp; &quot;&lt;/td&gt;&quot;
        s = s &amp; &quot;&lt;td&gt;&quot; &amp; objItem.PortName &amp; &quot;&lt;/td&gt;&quot;
        If objItem.Shared Then sTmp = &quot;+&quot; Else sTmp = &quot;--&quot;
        s = s &amp; &quot;&lt;td align=center&gt;&quot; &amp; sTmp &amp; &quot;&lt;/td&gt;&quot;
        If Len(objItem.ShareName)&gt;0 Then strPrinterShareName = objItem.ShareName Else strPrinterShareName = &quot;&amp;nbsp;&quot;
        s = s &amp; &quot;&lt;td&gt;&quot; &amp; strPrinterShareName &amp; &quot;&lt;/td&gt;&quot;
        s = s &amp; &quot;&lt;td&gt;&quot; &amp; strPrinterStatus  &amp; &quot;&lt;/td&gt;&quot;
        s = s &amp; &quot;&lt;/tr&gt;&quot; &amp; vbCR
    Next
    div_Log.innerHTML = s &amp; &quot;&lt;/table&gt;&quot;
    
    Set colPorts = objWMIService.ExecQuery (&quot;Select * from Win32_TCPIPPrinterPort&quot;) 
    For Each objPort in colPorts 
    If objDictionary.Exists(objPort.Name) Then 
      strUsedPorts = strUsedPorts &amp; &quot;&lt;LI&gt;&quot; &amp; objDictionary.Item(objPort.Name) &amp; &quot;&lt;/LI&gt;&quot;
    Else 
      strFreePorts = strFreePorts &amp; &quot;&lt;LI&gt;&quot; &amp; objPort.Name &amp; &quot;&lt;/LI&gt;&quot; 
    End If 
    Next
    div_Log.innerHTML = div_Log.innerHTML &amp; _
        &quot;&lt;div style=&#039;background-color: azure;&#039;&gt;&lt;hr&gt;&quot;&amp;_
        &quot;&lt;strong&gt;List TCPIPPrinterPort&lt;/strong&gt;&lt;hr&gt;&quot; &amp;_ 
        &quot;&lt;u&gt;The following ports are in use:&lt;/u&gt; &quot; &amp; &quot;&lt;OL&gt;&quot; &amp; strUsedPorts &amp; &quot;&lt;/OL&gt;&quot; &amp;_
        &quot;&lt;u&gt;The following ports are available:&lt;/u&gt; &quot; &amp; &quot;&lt;OL&gt;&quot; &amp; strFreePorts &amp; &quot;&lt;/OL&gt;&lt;hr&gt;&lt;/div&gt;&quot;
    
End Sub

Function uf_scanHost &#039; проверка хоста по его IP (gsPing_IP) и занесение результата в глоб.переменные&#039;
    gsLastLog_user_login = &quot;&quot;
    gsLastLog_namePC = &quot;&quot;
    gsLastLog_BOOT = &quot;&quot;
    gsLastLog_WMIdescription = &quot;&quot;
    gsLastLog_timeLogon = &quot;&quot;
    giLastLog_accessWMI = 1
    giLastLog_OS = 0
    
    spnStatus.innerTEXT = now()
    
    
    Dim objWMIService, colItems
    On Error Resume Next
    Set objWMIService = GetObject(&quot;winmgmts:\\&quot; &amp; gsPing_IP &amp; &quot;\root\CIMV2&quot;)
    If Err.Number &lt;&gt; 0 Then
        &#039; MsgBox &quot;Ошибка получения данных от компьютера `&quot; &amp; idNamePC.Value &amp; &quot;`!&quot; &amp; vbCR &amp; vbCR &amp;_
        &#039; &quot;Ошибка: [ &quot; &amp; Err.Description &amp; &quot; ]&quot; &amp; vbCR &amp; vbCR, vbCritical, &quot;Подключение к WMI-сервису&quot;
        spnStatus.innerTEXT = now() &amp; &quot;. Ошибка получения WMI-данных : [ &quot; &amp; Err.Description &amp; &quot; ]&quot;
        On Error GoTo 0
        giLastLog_accessWMI = 0
        &#039;&#039;&#039;&#039;--- Пробуем поискать файл c:\pagefile.sys для определения времени включения машины&#039;
        sPath = &quot;&quot;
        If Len(gsLastLog_namePC)&gt;0 _
            Then sPath = &quot;\\&quot; &amp; gsLastLog_namePC _
            else sPath = &quot;\\&quot; &amp; idNamePC.Value
        sPathPagefile = sPath &amp; &quot;\C$\pagefile.sys&quot;
        If FSO.FileExists(sPathPagefile) Then
            Set oFile = FSO.GetFile( sPathPagefile )
            gsLastLog_BOOT = oFile.DateLastModified
            Set oFile = Nothing
        else
            spnStatus.innerTEXT = spnStatus.innerTEXT &amp; &quot; | NotExist &quot; &amp; sPathPagefile
        End IF
        &#039;&#039;&#039;-----&#039;
    else
        On Error GoTo 0
        Dim sUsrLogin : sUsrLogin = &quot;&quot;
        Set colItems = objWMIService.ExecQuery (&quot;SELECT * FROM Win32_ComputerSystem&quot;, &quot;WQL&quot;, _
            wbemFlagReturnImmediately + wbemFlagForwardOnly)
        For Each objItem In colItems
            gsLastLog_namePC = objItem.Caption
            spnStatus.innerTEXT = spnStatus.innerTEXT &amp; &quot; | &quot; &amp; gsLastLog_namePC
            If IsNull(objItem.UserName) Then 
                sUsrLogin=&quot;&quot;
                spnStatus.innerTEXT = spnStatus.innerTEXT &amp; &quot; | IsNull(objItem.UserName)!&quot;
            End IF
            If Len(objItem.UserName) Then
                sUsrLogin = objItem.UserName
                spnStatus.innerTEXT = spnStatus.innerTEXT &amp; &quot; | &quot; &amp; sUsrLogin
                Dim iPos
                iPos = InStr(1,sUsrLogin,&quot;\&quot;)
                If iPos&gt;0 Then
                    sUsrLogin = Right(sUsrLogin, Len(sUsrLogin) - iPos)
                End IF
                gsLastLog_user_login = sUsrLogin
            End IF
        Next
        &#039;Версия и билд системы удаленной машины, дескрипшн&#039;
        Set colItems = objWMIService.ExecQuery( _
            &quot;SELECT * FROM Win32_OperatingSystem&quot;, &quot;WQL&quot;, wbemFlagReturnImmediately + wbemFlagForwardOnly)
        For Each objItem In colItems
            &#039;--- определение версии OS&#039;
            giLastLog_OS = CInt(Trim(Left(objItem.Version,1)))
            sOperSyst = objItem.Version &amp; &quot;, &quot; &amp; objItem.Caption
            If Len(objItem.CSDVersion)&gt;0 Then sOperSyst = sOperSyst &amp; &quot;, &quot; &amp; objItem.CSDVersion
            sOperSyst = sOperSyst &amp; &quot;, &quot; &amp; objItem.WindowsDirectory
            spnStatus.innerTEXT = spnStatus.innerTEXT &amp; &quot; | &quot; &amp; sOperSyst
            &#039;--- дескрипшн компьютера&#039;
            gsLastLog_WMIdescription = objItem.Description
        Next
        Set colItems = Nothing
        &#039;--- время логона&#039;
        If Len(gsLastLog_user_login)&gt;0 Then
            Set colItems = objWMIService.ExecQuery( _
                &quot;SELECT * FROM Win32_LogonSession&quot;, &quot;WQL&quot;, wbemFlagReturnImmediately + wbemFlagForwardOnly)
            For Each objItem In colItems
                if  objItem.LogonType=11 then
                    gsLastLog_timeLogon = WMIDateStringToDate(objItem.StartTime)
                end if
            Next
            Set colItems = Nothing
            &#039;---&#039;
        End IF
        &#039;--- время включения&#039;
        Set colItems = objWMIService.ExecQuery( _
            &quot;SELECT * FROM Win32_LogonSession&quot;, &quot;WQL&quot;, wbemFlagReturnImmediately + wbemFlagForwardOnly)
        For Each objItem In colItems
            if  objItem.LogonType=0 then
                gsLastLog_BOOT = WMIDateStringToDate(objItem.StartTime)
            end if
        Next
        &#039; spnStatus.innerTEXT = spnStatus.innerTEXT &amp; &quot; | Win32_LogonSession:&quot; &amp; UBound(colItems)
        Set colItems = Nothing
        &#039;---&#039;
        Set objWMIService = Nothing
    End IF
    uf_scanHost = giLastLog_accessWMI
END FUNCTION

Function WMIDateStringToDate(dtmDate)
    WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) &amp; &quot;/&quot; &amp; _
    Mid(dtmDate, 7, 2) &amp; &quot;/&quot; &amp; Left(dtmDate, 4) _
    &amp; &quot; &quot; &amp; Mid (dtmDate, 9, 2) &amp; &quot;:&quot; &amp; Mid(dtmDate, 11, 2) &amp; &quot;:&quot; &amp; Mid(dtmDate,13, 2))
End Function


&#039;*********************************************************************************************&#039;
Function uf_AD_select(pNamePC)
    
    Dim sDC
    sDC = &quot;nameMyDC&quot;
    
    gsLastLog_PC_OU = &quot;&quot;
    gsLastLog_PC_description = &quot;&quot;
    gsLastLog_PC_mgr_name_OU = &quot;&quot;
    gsLastLog_PC_mgr_phone = &quot;&quot;
    
    Dim StrCN, strManagedBy, StrlastLogon, StrDescription
    Set objConnection = CreateObject(&quot;ADODB.Connection&quot;)
    objConnection.Provider = &quot;ADsDSOObject&quot;
    objConnection.Properties(&quot;ADSI Flag&quot;) = ADS_SERVER_BIND
    objConnection.Open &quot;Active Directory Provider&quot;
    Set objCommand = CreateObject(&quot;ADODB.Command&quot;)
    Set objCommand.ActiveConnection = objConnection
    objCommand.Properties(&quot;Page Size&quot;) = 1000
    objCommand.Properties(&quot;Timeout&quot;) = 30
    strAttributesPC = &quot;cn,managedby,distinguishedName,Description&quot; 
    objCommand.CommandText = &quot;&lt;LDAP://&quot; &amp; sDC &amp; &quot;&gt;;&quot; &amp;_
        &quot;(&amp;(objectCategory=Computer)&quot; &amp;_
        &quot;(name=&quot; &amp; pNamePC &amp; &quot;));&quot; &amp; strAttributesPC &amp; &quot;;Subtree&quot; &#039; ???&#039;
    On Error Resume Next
    Err.Clear
    Set objRSet = objCommand.Execute
    If Err.Number &lt;&gt; 0 Then &#039;Обработка ошибки, прерываем выполнение&#039;
        s = _
            &quot;Ошибка при поиске учетки компьютера на доменном контролере: &quot; &amp; tCurrentDC.value &amp;vbCr&amp;vbCr &amp;_
            &quot;Запрос к AD:&quot; &amp;vbCr &amp; objCommand.CommandText &amp;vbCr&amp;vbCr &amp;_
            &quot;Описание ошибки:&quot; &amp;vbCr &amp; Err.Description &amp;vbCr &amp;vbCr&amp;vbCr &amp;_
            &quot;Поиск прерывается, возможно надо сменить контролер.&quot;
        spnStatus.innerTEXT = spnStatus.innerTEXT &amp; &quot; | AD ERROR: &quot; &amp; s
        On Error GoTo 0
    else
        On Error GoTo 0
        Dim sMgr
        sMgrCN = &quot;&quot;
        If objRSet.RecordCount &gt; 0 Then
            objRSet.MoveFirst
            Do Until objRSet.EOF
                StrCN = objRSet.Fields(&quot;cn&quot;).Value 
                strManagedBy = ufGetCN( objRSet.Fields(&quot;managedby&quot;).Value )
                sMgrCN = strManagedBy &#039;objRSet.Fields(&quot;managedby&quot;).Value
                gsLastLog_PC_mgr_name_OU = sMgrCN
                strDN = objRSet.Fields(&quot;distinguishedName&quot;)
                StrDescription = FuncGetDescriptionComputerFromAdByDistinguishedName( sDC &amp; &quot;/&quot; &amp; strDN )
                s_OU = uf_getOutlet_fromDN( strDN )   &#039;получаем имя отделения или брэнча&#039;
                s_infoPCOU = uf_strOUfromDN( strDN ) &#039;сокращение юнита для отображения в таблице&#039;
                &#039; s_DNOU = uf_strOUfromDN_fullOU( strDN ) &#039;полный юнит - будет использовано при запросах к AD&#039;
                gsLastLog_PC_description = StrDescription &#039;for_PINGfileLog&#039;
                If Len(s_OU)&gt;0 Then 
                        s_infoPCOU = Replace(s_infoPCOU,s_OU,&quot;&lt;b&gt;&lt;u&gt;&quot;&amp;s_OU&amp;&quot;&lt;/u&gt;&lt;/b&gt;&quot;)
                End IF
                gsLastLog_PC_OU = s_infoPCOU &#039;for_PINGfileLog&#039;
                spnStatus.innerTEXT = spnStatus.innerTEXT &amp; &quot; | AD: &quot; &amp; s_infoPCOU
                objRSet.MoveNext
            Loop
        End If &#039; (objRSet.RecordCount &gt; 0)
        Set objRSet = Nothing
        
        strAttributesUsr = &quot;cn,telephoneNumber,distinguishedName&quot;
        objCommand.CommandText = &quot;&lt;LDAP://&quot;&amp;sDC&amp;&quot;&gt;;&quot;&amp;_
        &quot;(&amp;(objectCategory=person)(objectClass=user)(name=&quot; &amp; sMgrCN &amp; &quot;));&quot; &amp; strAttributesUsr &amp; &quot;;Subtree&quot;
        Set objRSet = objCommand.Execute
        Dim sPhone
        sPhone = &quot;&quot;
        If objRSet.RecordCount &gt; 0 Then
            objRSet.MoveFirst
            Do Until objRSet.EOF
                StrCN = objRSet.Fields(&quot;cn&quot;).Value
                sPhone = objRSet.Fields(&quot;telephoneNumber&quot;).Value
                If Len(sPhone)&gt;0 Then
                    gsLastLog_PC_mgr_phone   = sPhone
                    sPhone = sPhone &amp; &quot;, &quot;
                End IF
                strDN = objRSet.Fields(&quot;distinguishedName&quot;)
                sDN_small = uf_strDN_small( strDN )
                gsLastLog_PC_mgr_name_OU = sDN_small &#039;for_PINGfileLog&#039;
                objRSet.MoveNext
            Loop
        End If &#039; (objRSet.RecordCount &gt; 0)
        Set objRSet = Nothing
        
    End IF
End FUNCTION

&#039; ---- uf_strDN_small() ---------------------------------------&#039;
&#039; возвращаем в более читабельном виде distinguishedName
Function uf_strDN_small( pStrDN)
    uf_strDN_small = pStrDN
    uf_strDN_small = Replace( uf_strDN_small, &quot;CN=&quot;, &quot;&quot;)
    uf_strDN_small = Replace( uf_strDN_small, &quot;,OU=&quot;, &quot;/&quot;)
    &#039; оставляем только первый DC=&#039;
    Dim iPos
    iPos = InStr(uf_strDN_small, &quot;,DC=&quot; )
    If iPos&gt;0 Then uf_strDN_small = Left( uf_strDN_small, iPos - 1)
End Function

&#039; --- ufGetCN() ----------------------------------------------- 
&#039; получение из строки первого до запятой параметра (т.е. &quot;CN=&quot;)
Function ufGetCN (sParam)
    If Left(sParam,3) = &quot;CN=&quot; Then
        Dim iPos
        iPos = InStr(1,sParam,&quot;,&quot;)
        If iPos&gt;0 Then
            ufGetCN = Left(sParam, iPos-1)
            ufGetCN = Right(ufGetCN, iPos-4)
        End IF
    else
        ufGetCN = sParam
    End IF
End Function
&#039;--------------------------------------------------------------

Function FuncGetDescriptionComputerFromAdByDistinguishedName( DN ) 
    Dim LDAPQuery 
    LDAPQuery = &quot;LDAP://&quot; &amp; DN 
    Dim objComputer 
    Dim StrobjPropertyDescription 
    On Error Resume Next 
    Set objComputer = GetObject( LDAPQuery )
    &#039;--------------Description 
    FuncGetDescriptionComputerFromAdByDistinguishedName = objComputer.Get(&quot;Description&quot;) 
    On Error GoTo 0
    If IsNull(FuncGetDescriptionComputerFromAdByDistinguishedName) Then 
         FuncGetDescriptionComputerFromAdByDistinguishedName = &quot;-&quot; 
    Else 
    End If 
    StrobjPropertyDescription = Null 
End Function 

&#039; --- uf_getOutlet_fromDN() ----------------------------------- 
&#039; получение из строки distinguishedName имени отделения/брэнча
&#039; или возвращаем &quot;HO&quot; для юнитов самого ГО,
&#039; или возвращаем имя региона, если учетка не в бренче/отделении
Function uf_getOutlet_fromDN( sParam )
    &#039;разбираем строку на массив и выбираем в новую строку только элементы OU
    arr = Split(sParam,&quot;,&quot;)
    s2 = &quot;&quot;
    If IsArray(arr) Then
        iMax = UBound(arr)
        s1 = &quot;Line: [&quot; &amp; sParam &amp;&quot;]&quot;&amp; vbCr
        For i=iMax to 0 Step -1
            If InStr(arr(i),&quot;OU=&quot;)&gt;0 Then &#039;оставляем в новой строке только элементы OU, причем в обратноц последовательности&#039;
                If Len(s2)&gt;0 Then s2 = s2 &amp; &quot;\&quot;
                s2 = s2 &amp; Right( arr(i), Len(arr(i)) -  3 )
            End IF
        NEXT
        &#039;-------- работаем с отраженной строкой элементов OU
        arr = Split(s2, &quot;\&quot;)
        If IsArray(arr) Then
            iMax = UBound(arr)
            s1 = &quot;Line: [&quot; &amp; s2 &amp;&quot;]&quot;&amp; vbCr
            s2 = &quot;&quot;
            &#039;[..... далее выполнялись некоторые замены в возвращаемом перечне юнитов организации ..... удалено перед отправкой в форум]&#039;
            If arr(0)=&quot;[.....]&quot; Then &#039;Sorry, &#039;
                    s2 = &quot;....&quot;
            End IF
            If arr(0)=&quot;[.... Outlets]&quot; Then
                    s2 = arr(1)
            End IF
            If arr(0)=&quot;[..... Regions]&quot; Then
                If iMax&gt;1 Then 
                    s2 = arr(2) &#039;Branch / Outlet&#039; 
                else 
                    s2 = &quot;_&quot; &amp; Replace(arr(1),&quot; Region&quot;,&quot;&quot;) &#039;only name Region&#039;
                End IF
            End IF
        End IF
    End IF
    uf_getOutlet_fromDN = s2
End Function

&#039; ---- uf_strOUfromDN() ---------------------------------------&#039;
&#039; возвращаем в более читабельном виде юниты из distinguishedName
Function uf_strOUfromDN( pStrDN)
    uf_strOUfromDN = pStrDN
    Dim iPos
    iPos = InStr(uf_strOUfromDN, &quot;,OU=&quot; )
    If iPos&gt;0 Then uf_strOUfromDN = Right( uf_strOUfromDN, Len(uf_strOUfromDN) - iPos - 3)
    uf_strOUfromDN = Replace( uf_strOUfromDN, &quot;,OU=&quot;, &quot;/&quot;)
    &#039; --- ,DC убираем &#039;
    iPos = InStr(uf_strOUfromDN, &quot;,DC=&quot; )
    If iPos&gt;0 Then uf_strOUfromDN = Left( uf_strOUfromDN, iPos - 1)
End Function

&#039;*****************************************************************************************&#039;
&#039; --- uf_pingRunTimeOut( sNamePC ) ------------------------------------
&#039; Запукаем внешнюю команду PING -t на укзанный параметром комп.
&#039;---------------------------------------------------------------
&#039; (!) Объект &quot;oShell&quot; должен быть опеределен глобально:
&#039;   Set oShell = CreateObject(&quot;WScript.Shell&quot;) &#039;
&#039;---------------------------------------------------------------
Function uf_pingRunTimeOut(sParam, pTimeout)
    If not IsNull(sParam) Then
        If Len(sParam) &gt; 0 Then
            sCmd = &quot;ping.exe -w &quot; &amp; pTimeout &amp; &quot; -t &quot; &amp; sParam
            If NOT IsEmpty (gsFileLogPing) Then
                uf_wrLogPing ( sParam &amp; vbTab &amp; Now() &amp; &quot; (ping) --} &quot; &amp; sCmd)
            End IF
            uf_pingRunTimeOut = 0
            oShell.Run( sCmd )
        else
            uf_pingRunTimeOut = 1
            MsgBox &quot;Не задано имя пингуемого компьютера!&quot; ,vbCritical, &quot;Ping -t &lt;sNamePC&gt;&quot;
        End IF
    else
        uf_pingRunTimeOut = 2
    End IF
End Function

&#039; Запукаем внешнюю программу iexplore на укзанный в поле idHost адрес.
Sub ue_btHostIE
    s = Trim(idHost.value)
    If Len(s)=0 Then
        MsgBox &quot;Пусто в адресе хоста!&quot;, vbCritical, &quot;Запуск IE&quot;
    else
        sCmd = &quot;iexplore http://&quot; &amp; s &amp; &quot;/&quot;
        oShell.Run( sCmd )
    End IF
End SUB

&lt;/SCRIPT&gt;

&lt;!-- ****************** Стили *************** --&gt;

&lt;style type=&quot;text/css&quot;&gt;
&lt;!--
/* окно прокрутки слоя с протоколом*/
.frameLog    {
    width: 860px;
    height: 340px;
    border: 1px solid #000;
    overflow: auto;
}
--&gt;
&lt;/style&gt;


&lt;style type=&quot;text/css&quot;&gt;
&lt;!-- /*** стиль для строк окна редактирования настроек, небольших инф.сообщений */ --&gt;
.cssBtn {font-family: Arial; font-size: 12; cursor: hand}

&lt;!-- заголовочные ячейки таблицы  --&gt;
.cssTD_hd {font-family: Arial; font-size: 12; background-color:whitesmoke; }
&lt;!-- остальные ячейки таблицы  --&gt;
.cssTD    {font-family: Arial; font-size: 11; color: darkblue;}

&lt;/style&gt;

&lt;/HEAD&gt;

&lt;BODY bgcolor=&quot;#FFFFFF&quot; text=&quot;#000000&quot; leftmargin=&quot;5&quot; rightmargin=&quot;5&quot; topmargin=&quot;5&quot; bottommargin=&quot;5&quot;
style=&quot;font-family: Arial; font-size: 12;&quot;&gt;
&lt;div align=&quot;Right&quot;&gt;
&lt;span id=&quot;spnTm&quot; style=&quot;background:lightblue&quot;&gt;&lt;/span&gt;
&lt;/div&gt;

&lt;LABEL for=idNamePC title=&#039;Имя проверяемого компьютера. Клавиша &lt;Enter&gt; - запуск команды &quot;Получение списка принтеров&quot;&#039;&gt; 
Компьютер 
&lt;input type=&quot;text&quot; name=&quot;textBox&quot; size=&quot;18&quot; id=&quot;idNamePC&quot; 
    onKeyPress=&quot;if (window.event.keyCode==13) document.getElementById(&#039;id_btScan&#039;).onclick();&quot;&gt;&lt;/LABEL&gt;
&lt;input type=button name=&quot;btScan&quot; id=&quot;id_btScan&quot; value=&quot;Получить список принтеров&quot; class=&quot;cssBtn&quot;
    onClick=&quot;uf_getDataPing();&quot; 
    title=&quot;Запуск получения данных по компьютеру&quot;&gt;
&amp;nbsp;
&amp;nbsp;
&lt;LABEL for=idHost title=&#039;Имя/адрес проверяемого хоста. Клавиша &lt;Enter&gt; - запуск команды &quot;ping Host&quot;&#039;&gt; 
Host 
&lt;input type=&quot;text&quot; name=&quot;textBox&quot; size=&quot;18&quot; id=&quot;idHost&quot; 
    onKeyPress=&quot;if (window.event.keyCode==13) document.getElementById(&#039;id_btHostPing&#039;).onclick();&quot;&gt;&lt;/LABEL&gt;
&lt;input type=button name=&quot;btHostPing&quot; id=&quot;id_btHostPing&quot; value=&quot;ping Host&quot; class=&quot;cssBtn&quot;
    onClick=&quot;var oNmPC; oNmPC=document.getElementById(&#039;idHost&#039;); uf_pingRunTimeOut(oNmPC.value,8000);&quot; 
    title=&quot;Запуск проверки доступности хоста бесконечным пингом&quot;&gt;
&lt;input type=button name=&quot;btHostIE&quot; id=&quot;id_btHostIE&quot; value=&quot;Host in IE&quot; class=&quot;cssBtn&quot;
    onClick=&quot;ue_btHostIE();&quot; 
    title=&quot;Запуск http:\\&#039;host_address&#039;&quot;&gt;


&lt;table width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; border=&quot;1&quot; style=&quot;font-family: Arial; font-size: 12;&quot;&gt;
    &lt;tr&gt;
        &lt;label title=&quot;Время заполнения таблицы первоначальных данных&quot;&gt;
        &lt;td width=&quot;15%&quot; class=&quot;cssTD_hd&quot;&gt;Время теста&lt;/td&gt;   &lt;td width=&quot;25%&quot; id=&quot;tdTimeScan&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/label&gt;
        &lt;label title=&quot;Время загрузки: результат WMI-запроса по IP-адресу либо время изменения файла: \\_компьютер_\c$\pagefile.sys при недоступности WMI&quot;&gt;
        &lt;td width=&quot;15%&quot; class=&quot;cssTD_hd&quot;&gt;Время загрузки&lt;/td&gt;&lt;td width=&quot;45%&quot; id=&quot;tdTimeBoot&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/label&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;label title=&quot;IP-адрес, определившийся через WMI-запрос&quot;&gt;
        &lt;td class=&quot;cssTD_hd&quot;&gt;WMI IP&lt;/td&gt;          &lt;td id=&quot;tdIP&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/label&gt;
        &lt;label title=&quot;Время последнего логона, определившееся через WMI-запрос по IP-адресу&quot;&gt;
        &lt;td class=&quot;cssTD_hd&quot;&gt;Время логона&lt;/td&gt;    &lt;td id=&quot;tdTimeLogon&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/label&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;label title=&quot;Имя машины, определившееся через WMI-запрос по IP-адресу&quot;&gt;
        &lt;td class=&quot;cssTD_hd&quot;&gt;WMI Name&lt;/td&gt;        &lt;td id=&quot;tdWMI_NamePC&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/label&gt;
        &lt;label title=&quot;AD: юнит машины.&quot;&gt;
        &lt;td class=&quot;cssTD_hd&quot;&gt;AD OU&lt;/td&gt;&lt;td id=&quot;tdAD_OUPC&quot; class=&quot;cssTD&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/label&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;label title=&quot;Описание машины, определившееся через WMI-запрос по IP-адресу&quot;&gt;
        &lt;td class=&quot;cssTD_hd&quot;&gt;WMI Description&lt;/td&gt; &lt;td id=&quot;tdWMI_DescPC&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/label&gt;
        &lt;label title=&quot;AD: описание машины.&quot;&gt;
        &lt;td class=&quot;cssTD_hd&quot;&gt;AD Description&lt;/td&gt;&lt;td id=&quot;tdAD_DescPC&quot; class=&quot;cssTD&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/label&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;label title=&quot;Залогиненный пользователь машины, определившийся через WMI-запрос по IP-адресу&quot;&gt;
        &lt;td class=&quot;cssTD_hd&quot;&gt;WMI LogonUser&lt;/td&gt;   &lt;td id=&quot;tdWMI_user&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/label&gt;
        &lt;label title=&quot;AD: телефон и учетка менеджера машины.&quot;&gt;
        &lt;td class=&quot;cssTD_hd&quot;&gt;AD Manager&lt;/td&gt;&lt;td id=&quot;tdAD_manager&quot; class=&quot;cssTD&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;/label&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;br&gt;

&lt;!-- ----- Слой page_PINGfileLog со стилем прокрутки протокола скана машины---- --&gt;
&lt;div id=div_Log style=&quot;background:beige&quot; class=&quot;frameLog&quot;&gt;
&lt;table width=&quot;100%&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; border=&quot;1&quot;  style=&#039;font-family: Arial; font-size: 12;&#039;&gt;
&lt;tr&gt;
    &lt;th&gt;Default&lt;/th&gt;
    &lt;th&gt;Caption&lt;/th&gt;
    &lt;th&gt;DriverName&lt;/th&gt;
    &lt;th&gt;PortName&lt;/th&gt;
    &lt;th&gt;Shared&lt;/th&gt;
    &lt;th&gt;ShareName&lt;/th&gt;
    &lt;th&gt;PrinterStatus&lt;/th&gt;
&lt;/tr&gt;
&lt;span id=&quot;spnRowTbl&quot;&gt;&lt;/span&gt;
&lt;/table&gt;

&lt;/div&gt;
&lt;span id=&quot;spnStatus&quot; style=&quot;background:whitesmoke&quot; title=&quot;Доп.данные по последнему сканированию&quot;&gt;&lt;/span&gt;

&lt;/BODY&gt;
&lt;/HTML&gt;</code></pre></div><p>В коде заменено имя контроллера для выборки AD-данных, см.функцию uf_AD_select(), строка: sDC = &quot;nameMyDC&quot;.<br />И еще несколько строк, зависящих от структуры юнитов моего домена - убрано/заменено.</p><p>Приложение запускается от имени админской доменной учетки, может параметром принимать имя сканируемой машины либо ввод имени на форме.</p>]]></content>
			<author>
				<name><![CDATA[Rom5]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=5724</uri>
			</author>
			<updated>2011-07-29T21:40:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50266#p50266</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50265#p50265" />
			<content type="html"><![CDATA[<p>об этом надо было и говорить, все остальное муть</p>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2011-07-29T18:19:12Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50265#p50265</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50258#p50258" />
			<content type="html"><![CDATA[<p>Принтсервер - это железяка под управление windows 2003 R2, которая является частью AD и которая раздает пользователям доступ к принтерам.</p>]]></content>
			<author>
				<name><![CDATA[Shwan]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27107</uri>
			</author>
			<updated>2011-07-29T12:08:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50258#p50258</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50254#p50254" />
			<content type="html"><![CDATA[<p>А всеж таки - что такое &quot;принтсервер&quot; ?</p>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2011-07-29T08:24:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50254#p50254</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS: Мониторинг состояния сетевых принтеров]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50253#p50253" />
			<content type="html"><![CDATA[<p>Спасиба за ссылки. Но пока проблема решается в несколько другой плоскости с применением запросов к OID кодам. <br /> Rom5 - Интересно, но чуток позже. Как только разберусь с своим скриптом, тогда и до Вашего дойдут руки.<br /> alexii - Репозиторий очень полезная штука за ссылки очень благодарен.</p><p>С Уважением Дмитрий.</p>]]></content>
			<author>
				<name><![CDATA[Shwan]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27107</uri>
			</author>
			<updated>2011-07-29T08:22:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50253#p50253</id>
		</entry>
</feed>
