<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript:  DNS WMI Provider]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=16399&amp;type=atom" />
	<updated>2021-06-04T17:52:59Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=16399</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript:  DNS WMI Provider]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148278#p148278" />
			<content type="html"><![CDATA[<p>Не… WMI Code Creator — такое себе.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-06-04T17:52:59Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148278#p148278</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript:  DNS WMI Provider]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148272#p148272" />
			<content type="html"><![CDATA[<p>Ага. А я вот хочу оставить ссылку на <a href="http://www.microsoft.com/en-us/download/confirmation.aspx?id=8572">WMI Code Creator</a>.</p><p>Небольшое описание этой утилиты на одном из сайтов:</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p><strong>WMI Code Creator — волшебная палочка для системного администратора</strong></p><br /><p>Такой заголовок придумал, аж самому понравилось. Но что интересно, заголовок справедлив на все 100%. И еще справедливо то, что половина системных администраторов не слышала об этом дивном инструменте, а половина тех, что слышали — его не используют <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>Итак, где может быть полезен это чудо-продукт? В первую очередь для всех скриптописателей под Windows.&nbsp; И еще — для&nbsp; фильтрации по каким-либо признакам из недр WMI в сторонних продуктах (SCCM, например, или еще какой монстр)</p></div></div>]]></content>
			<author>
				<name><![CDATA[inock]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25049</uri>
			</author>
			<updated>2021-06-04T07:09:26Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148272#p148272</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript:  DNS WMI Provider]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148252#p148252" />
			<content type="html"><![CDATA[<p><strong>Cytrus</strong>, <strong>inock</strong>, пробуйте: <a href="https://disk.yandex.ru/d/vGCi_VelMEg0tA">WMI CIM Studio</a>. Плюс, не забудьте про:<br /></p><div class="quotebox"><blockquote><p>Since it took me a bit to learn these nuances of getting WMI CIM Studio to run under Windows 7 or Windows 8 and IE11 (IE9 or later), I thought I&#039;d share it here...</p><p>&nbsp; &nbsp; 1. Install CIM Studio (WMI Administrative Tools, as indicated in @knb&#039;s answer)<br />&nbsp; &nbsp; 2. Add &lt;meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=8&quot; /&gt; into the &lt;HEAD&gt; section ahead of SCRIPT LANGUAGE=&quot;VBS&quot; in the C:\Program Files (x86)\WMI Tools\studio.htm file. This override is necessary because CIM Studio uses VBScript code and IE11+ has dropped support for that.<br />&nbsp; &nbsp; 3. Create a shortcut to &quot;C:\Program Files (x86)\Internet Explorer\iexplore.exe&quot; &quot;C:\Program Files (x86)\WMI Tools\studio.htm&quot;<br />&nbsp; &nbsp; 4. Configure the shortcut to run as Admin (Properties -&gt; Advanced...)</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-06-03T14:52:41Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148252#p148252</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript:  DNS WMI Provider]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148247#p148247" />
			<content type="html"><![CDATA[<p>Конечный вариант. Может кому пригодится, пусть интернет помнит.</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>&#039; просматриваем записи в домене strDomain
&#039; метод CreateInstanceFromTextRepresentation обнуляет поле Timestamp
&#039; (переводит запись DNS в статус &quot;статический&quot;)


strServer = &quot;bte-dc-01&quot;
strZoneDNS = &quot;teplo.local&quot;
strDomain = &quot;ats.&quot; &amp; strZoneDNS

Set objWMIService = GetObject(&quot;winmgmts:\\&quot; &amp; strServer &amp; &quot;\root\MicrosoftDNS&quot;)
&#039;Set objDNS = objWMIService.Get(&quot;MicrosoftDNS_Server.name=&quot;&quot;.&quot;&quot;&quot;)

&#039;Запрос записей
Set objDNS = objWMIService.ExecQuery(&quot;Select * from MicrosoftDNS_ResourceRecord where DomainName=&quot;&quot;&quot; &amp; strDomain &amp; &quot;&quot;&quot;&quot;,,48)
        For Each objInst in objDNS    
          
          If (objInst.Timestamp &lt;&gt; 0) Then
            strProperties = &quot;MicrosoftDNS_AType.ContainerName=&#039;&quot; &amp; objInst.ContainerName &amp; _ 
                &quot;&#039;,DnsServerName=&#039;&quot; &amp; objInst.DnsServerName &amp; _
                &quot;&#039;,DomainName=&#039;&quot; &amp; objInst.DomainName &amp; _
                &quot;&#039;,OwnerName=&#039;&quot; &amp; objInst.OwnerName &amp; _
                &quot;&#039;,RecordClass=&#039;1&#039;,RecordData=&#039;&quot; &amp; objInst.RecordData &amp; &quot;&#039;&quot;
                

            &#039; Obtain an instance of the the class 
            &#039; using a key property value.
            Set objShare = objWMIService.Get(strProperties)

            &#039; Obtain an InParameters object specific
            &#039; to the method.
            Set objInParam = objShare.Methods_(&quot;CreateInstanceFromTextRepresentation&quot;). _
                inParameters.SpawnInstance_()

            &#039; Add the input parameters.
            objInParam.Properties_.Item(&quot;ContainerName&quot;) =  objShare.ContainerName
            objInParam.Properties_.Item(&quot;DnsServerName&quot;) =  objShare.DnsServerName
            objInParam.Properties_.Item(&quot;TextRepresentation&quot;) =  objShare.TextRepresentation


            &#039; Execute the method and obtain the return status.
            &#039; The OutParameters object in objOutParams
            &#039; is created by the provider.
            Set objOutParams = objWMIService.ExecMethod(strProperties, &quot;CreateInstanceFromTextRepresentation&quot;, objInParam)

            &#039; List OutParams
            &#039;Wscript.Echo &quot;Out Parameters: &quot;
            &#039;Wscript.echo &quot;RR: &quot; &amp; objOutParams.RR
          
          End If
        Next</code></pre></div></div></div>]]></content>
			<author>
				<name><![CDATA[inock]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25049</uri>
			</author>
			<updated>2021-06-03T13:07:37Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148247#p148247</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript:  DNS WMI Provider]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148245#p148245" />
			<content type="html"><![CDATA[<p>Но все-таки я выскажусь.</p><p>Вот рабочий код. Все переменные раскрыты, чтобы было максимально наглядно.</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>strServer = &quot;bte-dc-01&quot; 
Set objWMIService = GetObject(&quot;winmgmts:\\&quot; &amp; strServer &amp; &quot;\root\MicrosoftDNS&quot;) 
&#039; Obtain an instance of the the class 
&#039; using a key property value.
Set objShare = objWMIService.Get(&quot;MicrosoftDNS_AType.ContainerName=&#039;teplo.local&#039;,DnsServerName=&#039;BTE-DC-01.teplo.local&#039;,DomainName=&#039;ats.teplo.local&#039;,OwnerName=&#039;1046.ats.teplo.local&#039;,RecordClass=&#039;1&#039;,RecordData=&#039;10.32.99.81&#039;&quot;)


&#039; Obtain an InParameters object specific
&#039; to the method.
Set objInParam = objShare.Methods_(&quot;CreateInstanceFromTextRepresentation&quot;). _
    inParameters.SpawnInstance_()


&#039; Add the input parameters.
objInParam.Properties_.Item(&quot;ContainerName&quot;) =  &quot;teplo.local&quot;
objInParam.Properties_.Item(&quot;DnsServerName&quot;) =  &quot;BTE-DC-01.teplo.local&quot;
objInParam.Properties_.Item(&quot;TextRepresentation&quot;) =  &quot;1046.ats.teplo.local IN A 10.32.99.81&quot;


&#039; Execute the method and obtain the return status.
&#039; The OutParameters object in objOutParams
&#039; is created by the provider.
Set objOutParams = objWMIService.ExecMethod(&quot;MicrosoftDNS_AType.ContainerName=&#039;teplo.local&#039;,DnsServerName=&#039;BTE-DC-01.teplo.local&#039;,DomainName=&#039;ats.teplo.local&#039;,OwnerName=&#039;1046.ats.teplo.local&#039;,RecordClass=&#039;1&#039;,RecordData=&#039;10.32.99.81&#039;&quot;, &quot;CreateInstanceFromTextRepresentation&quot;, objInParam)

&#039; List OutParams
&#039;Wscript.Echo &quot;Out Parameters: &quot;
&#039;Wscript.echo &quot;RR: &quot; &amp; objOutParams.RR
</code></pre></div></div></div><p>То есть он работает, все хорошо. Но сам код!</p><p>Сначала мы делаем objWMIService.Get, где указываем все эти свойства записи, типа ContainerName, DnsServerName и всякое прочее. Хорошо. Захватили объект, теперь будем применять к нему методы. И что? Создаем еще один объект objInParam, который по сути является списком входных параметров, все тех же .Item(&quot;ContainerName&quot;) и прочее. Мы же это уже все указали, зачем снова все повторять?</p><p>Но и это еще не все. Теперь мы создаем выходной объект, который возвращается методом .ExecMethod и тут вообще феерично. Сначала мы опять как зайцы на барабане&nbsp; вдалбливаем&nbsp; уже два раза указанные&nbsp; данные в виде строки, потом указываем собственно метод, который хотим Exec, и через запятую еще раз указываем все те же данные, уже в виде objInParam.</p><p>Что за логика? Кто писал этот фреймворк?<br />Нет, правда... Или это я дебил и ничего не понимаю в программировании? Ладно бы это был метод, который может изменять разные свойства объекта. Тогда мы в get указываем данные, которые сейчас, а в objOutParams - данные, которые должны примениться в результате действия метода. Но нет же. Единственное назначение этого метода - очищать поле TextRepresentation.</p><br /><div class="codebox"><pre><code>Description: 
This method parses the resource record in the TextRepresentation string, and along with the input DNS server 
and Container names, defines and instantiates a ResourceRecord object. The method returns a reference to 
the new object as an output parameter.
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[inock]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25049</uri>
			</author>
			<updated>2021-06-03T12:01:35Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148245#p148245</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript:  DNS WMI Provider]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148243#p148243" />
			<content type="html"><![CDATA[<p><strong>alexii</strong></p><p>Был бы признателен <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />)</p><p>UPD:<br />выкачал WMI code creater. Действительно все становится существенно понятнее. Спасибо за наводку.</p>]]></content>
			<author>
				<name><![CDATA[inock]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25049</uri>
			</author>
			<updated>2021-06-03T08:27:02Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148243#p148243</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript:  DNS WMI Provider]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148240#p148240" />
			<content type="html"><![CDATA[<p><strong>alexii</strong>, выложите. Мне нужно.</p>]]></content>
			<author>
				<name><![CDATA[Cytrus]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=40205</uri>
			</author>
			<updated>2021-06-03T06:51:20Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148240#p148240</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript:  DNS WMI Provider]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148233#p148233" />
			<content type="html"><![CDATA[<p><strong>inock</strong>, иногда пониманию способствует поиграться «ручками» посредством WMI CIM Studio из WMITools (если нужно — скажите, выложу).</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2021-06-02T14:41:17Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148233#p148233</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBScript:  DNS WMI Provider]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=148196#p148196" />
			<content type="html"><![CDATA[<p>Граждане, кто-нибудь работал с этой шнягой?<br /><a href="https://docs.microsoft.com/en-us/windows/win32/dns/dns-wmi-provider">https://docs.microsoft.com/en-us/window … i-provider</a><br />Что-то я читаю-читаю, и никак не разберусь. Возможно, уровень английского не позволяет.</p><p>Мне надо в цикле пройтись по записям и изменить их свойства.<br />Получить список записей удается:</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><div class="codebox"><pre><code>strServer = &quot;bte-dc-01&quot;
strNameSpace = &quot;root\microsoftDNS&quot;
strDomain = &quot;ats.teplo.local&quot;

Set objLocator = CreateObject(&quot;WbemScripting.SWbemLocator&quot;)
Set objService = objLocator.ConnectServer (strServer, strNameSpace)
set objDNS = objService.Get(&quot;MicrosoftDNS_Server.name=&quot;&quot;.&quot;&quot;&quot;)


&#039;Проверяем подключение:
ObjService.Security_.impersonationlevel = 3
    If Err.Number then
        Call Wscript.Echo( &quot;Error 0x&quot; &amp; CStr(Hex(Err.Number)) &amp; _
                           &quot; occurred in connecting to server &quot; _
           &amp; strServer &amp; &quot;.&quot;)
        If Err.Description &lt;&gt; &quot;&quot; Then
            Call Wscript.Echo( &quot;Error description: &quot; &amp; Err.Description &amp; &quot;.&quot; )
        End If
        Err.Clear
        blnConnect = True     &#039;An error occurred
    End If


&#039;Запрос записей
Set objDNS = objService.ExecQuery(&quot;Select * from MicrosoftDNS_ResourceRecord where DomainName=&quot;&quot;&quot; &amp; strDomain &amp; &quot;&quot;&quot;&quot;,,48)
        For Each objInst in objDNS    
             wscript.echo objInst.TextRepresentation
        Next</code></pre></div></div></div><br /><p>Код выводит в консоль список имеющихся записей. Но вот как изменить их свойства - никак не могу разобраться. По сути, мне нужно отключить вот эту опцию (см приложенную картинку). То есть, как я понимаю, надо как-то сделать get записи, изменить ее свойства и сохранить. Кто-нибудь может показать пример кода, а то я что-то голову сломал... Из примеров на docs.microsoft.com ничего не понятно, в гугле примеров практически нет. На powershell еще встречаются, а на vbs практически ничего не нашел.</p><p>Спасибо.</p>]]></content>
			<author>
				<name><![CDATA[inock]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=25049</uri>
			</author>
			<updated>2021-06-01T14:00:26Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=148196#p148196</id>
		</entry>
</feed>
