<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; WSH: Поиск файлов на компьютерах по сети WMI]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=9875</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9875&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «WSH: Поиск файлов на компьютерах по сети WMI».]]></description>
		<lastBuildDate>Fri, 22 Aug 2014 05:22:24 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: WSH: Поиск файлов на компьютерах по сети WMI]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=86041#p86041</link>
			<description><![CDATA[<p>Добрый день!</p><p>Задача еще нужна.<br /></p><div class="quotebox"><blockquote><p>AND FileName Like &#039;%qwe%&#039;</p></blockquote></div><p>так не получилось.</p><div class="quotebox"><blockquote><p>в Вашем скрипте идет поиск файлов не на удалённых машинах</p></blockquote></div><p>Почему? Я вместо того что бы указывать ip адреса компьютеров ручками сделал загружать из файла</p><div class="codebox"><pre><code>Dim lngCount, i

Dim objFSO, objFile

On Error Resume Next

Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objFile = objFSO.OpenTextFile(&quot;computers.txt&quot;, 1)


&#039;ТУТ ЗАГРУЖАЕМ ПИСОК КОМПЬЮТЕРОВ ИЗ ФАЙЛА computers.txt
i=0
&#039; reading lines from file
Do Until objFile.AtEndOfStream
    Redim Preserve arrComputers(i)
    arrComputers(i) = objFile.ReadLine
    i = i + 1
Loop

objFile.Close

lngCount     = UBound(arrComputers) + 1

Set objSWbemServicesEx = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\.\Root\CIMV2&quot;)
Set objSWbemSink       = WScript.CreateObject(&quot;WbemScripting.SWbemSink&quot;, &quot;Sink_&quot;)

For Each strComputer In arrComputers
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alt7)]]></author>
			<pubDate>Fri, 22 Aug 2014 05:22:24 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=86041#p86041</guid>
		</item>
		<item>
			<title><![CDATA[Re: WSH: Поиск файлов на компьютерах по сети WMI]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85970#p85970</link>
			<description><![CDATA[<p>Если ещё актуально, то пробуйте добавить символ <strong>&quot;%&quot; и в начало like</strong>-выражения:<br /></p><div class="quotebox"><blockquote><p>...<br />AND FileName Like &#039;qwe%&#039;<br />...</p></blockquote></div><p>вот, так:<br /></p><div class="codebox"><pre><code>
AND FileName Like &#039;%qwe%&#039;
</code></pre></div><p>ps. только, по моему мнению, в Вашем скрипте идет поиск файлов не на удалённых машинах, а только лишь на своей локальной (wmi-подключение и асинхронный запрос - только к ней), а соответственно и лог-файлы создадуться сдублированные, ещё и запись в них без учёта возможной &quot;дозаписи&quot; свеженыйденных файлов на машине.</p><p>В общем, если задача ещё нужна, то маякуйте - доведём до ума.</p>]]></description>
			<author><![CDATA[null@example.com (Rom5)]]></author>
			<pubDate>Tue, 19 Aug 2014 11:10:54 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85970#p85970</guid>
		</item>
		<item>
			<title><![CDATA[WSH: Поиск файлов на компьютерах по сети WMI]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=85719#p85719</link>
			<description><![CDATA[<p>Доброе время суток!</p><p>Столкнулся с необходимостью поиска фалов на компьютерах сети по маске (например, qwe*.*). На форуме нашел реализацию асинхронного поиска с помощью WMI <a href="http://forum.script-coding.com/viewtopic.php?id=3783">http://forum.script-coding.com/viewtopic.php?id=3783</a><br />Пытаюсь переделать под свои нужды не получается в части формирования запроса.</p><div class="codebox"><pre><code>
Option Explicit

Dim arrComputers()
Dim strComputer

Dim objSWbemServicesEx
Dim objSWbemSink
Dim objSWbemNamedValueSet

Dim lngCount, i

Dim objFSO, objFile

On Error Resume Next

&#039; Массив адресов/имён опрашиваемых машин
&#039; В принципе, можно получать из сетевого окружения, с контроллера домена
&#039; или перебором доступных адресов подсети
Set objFSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set objFile = objFSO.OpenTextFile(&quot;computers.txt&quot;, 1)
Const DATA_DIR =&quot;files\&quot;
Const DATA_EXT = &quot;.txt&quot;
Const strDrive = &quot;c:&quot;
Const strPath = &quot;\&quot; &#039;целевой каталог
Const strExtension = &quot;txt&quot;

i=0
&#039; reading lines from file
Do Until objFile.AtEndOfStream
    Redim Preserve arrComputers(i)
    arrComputers(i) = objFile.ReadLine
    i = i + 1
Loop

objFile.Close

lngCount     = UBound(arrComputers) + 1

Set objSWbemServicesEx = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\.\Root\CIMV2&quot;)
Set objSWbemSink       = WScript.CreateObject(&quot;WbemScripting.SWbemSink&quot;, &quot;Sink_&quot;)

For Each strComputer In arrComputers

    &#039; В коллекции «objSWbemNamedValueSet» будем передавать адрес/имя хоста (замечание: в данном конкретном случае
    &#039; сие, в принципе, необязательно, поскольку класс Win32_PingStatus и так содержит
    &#039; свойство «.Address», но тут показана сама технология передачи данных в процедуру асинхронной обработки)
    Set objSWbemNamedValueSet = WScript.CreateObject(&quot;WbemScripting.SWbemNamedValueSet&quot;)
    objSWbemNamedValueSet.Add &quot;HostName&quot;, strComputer
    
    &#039; Все запросы будут обрабатываться в единственной процедуре обработки
&#039;    objSWbemServicesEx.ExecQueryAsync objSWbemSink, &quot;SELECT * FROM Win32_PingStatus WHERE ADDRESS = &#039;&quot; &amp; strComputer &amp; &quot;&#039;&quot;, , , , objSWbemNamedValueSet
    objSWbemServicesEx.ExecQueryAsync objSWbemSink, &quot;SELECT * FROM CIM_DataFile WHERE Drive = &#039;&quot; &amp; strDrive &amp; &quot;&#039; AND Path = &#039;\\&quot; &amp; Replace(strPath,&quot;\&quot;,&quot;\\&quot;) &amp; &quot;\\&#039; AND FileName Like &#039;qwe%&#039; AND Extension = &#039;&quot; &amp; strExtension &amp; &quot;&#039;&quot;, , , , objSWbemNamedValueSet
    
Next

&#039; Ожидаем, пока не будут обработаны все асинхронные запросы
Do
    WScript.Sleep 100
Loop Until lngCount = 0

objSWbemSink.Cancel

Set objSWbemSink       = Nothing
Set objSWbemServicesEx = Nothing

WScript.Quit 0
&#039;=============================================================================

&#039;=============================================================================
&#039; Процедура асинхронной обработки экземпляра объекта (замечание: в данном конкретном случае
&#039; будет возвращаться единственный объект, однако, в большинстве случаев запросы
&#039; возвращают множество объектов)
Sub Sink_OnObjectReady(objWbemObject, objWbemAsyncContext)
    Dim strComputer
    strComputer = objWbemAsyncContext.Item(&quot;HostName&quot;)    

    Dim fso, tf_ip, objFile, i
    Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)    
    Set tf_ip = fso.CreateTextFile(DATA_DIR &amp; strComputer &amp; DATA_EXT, True)    
    Set objFile = CreateObject(&quot;WScript.Shell&quot;)

i = 0 &#039;счетчик

If objWbemObject.Count &gt; 0 Then &#039;если файлы найдены    
    For Each objFile In objFiles
        &#039;пишем имя файла в лог
        tf_ip.Write(objFile.Name)
        i = i + 1
    Next
End If
    tf_ip.Close
End Sub
&#039;=============================================================================

&#039;=============================================================================
&#039; Процедура, вызываемая при завершении асинхронной обработки
Sub Sink_OnCompleted(iHResult, objWbemErrorObject, objWbemAsyncContext)
    objWbemAsyncContext.DeleteAll
    Set objWbemAsyncContext = Nothing
    
    &#039; Уменьшаем счётчик оставшегося числа асинхронных обработок
    lngCount = lngCount - 1
End Sub
&#039;=============================================================================
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (alt7)]]></author>
			<pubDate>Thu, 07 Aug 2014 08:06:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=85719#p85719</guid>
		</item>
	</channel>
</rss>
