<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JScript: вызов методов WMI с выходными параметрами]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=625&amp;type=atom" />
	<updated>2008-07-24T15:20:24Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=625</id>
		<entry>
			<title type="html"><![CDATA[Re: JScript: вызов методов WMI с выходными параметрами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=12862#p12862" />
			<content type="html"><![CDATA[<p>Ещё один пример. На этот раз вызывается метод &quot;EnumKey&quot; WMI-класса StdRegProv, который принимает выходной параметр в виде массива, который будет необходимо потом перебирать в коде довольно громоздким способом:<br /></p><div class="codebox"><pre><code>var objReg = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default:StdRegProv&quot;);
var objInParams = objReg.Methods_(&quot;EnumKey&quot;).InParameters.SpawnInstance_();
objInParams.hDefKey = 0x80000001;
objInParams.sSubKeyName = &#039;Software\\Microsoft&#039;;
var objOutParams = objReg.ExecMethod_(&quot;EnumKey&quot;, objInParams);
var sNames = objOutParams.sNames.toArray();
for (var i=0; i&lt;=sNames.length-1; i++) {
    WScript.Echo(sNames[i]);
}</code></pre></div><p>Пример читает и выводит на экран названия разделов реестра внутри ветки HKEY_CURRENT_USER\Software\Microsoft.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2008-07-24T15:20:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=12862#p12862</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JScript: вызов методов WMI с выходными параметрами]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=4255#p4255" />
			<content type="html"><![CDATA[<p>Иногда в сценариях с использованием WMI требуется вызов методов WMI с выходными параметрами. Например, создать процесс и получить его pID. На VBScript это получается вполне естественно:<br /></p><div class="codebox"><pre><code>Set objProcess = GetObject(&quot;winmgmts:\\.\root\cimv2:Win32_Process&quot;)
errReturn = objProcess.Create(&quot;cmd&quot;, null, null, pID)
WScript.Echo pID</code></pre></div><p>На JScript при таком подходе в переменную pID ничего не попадёт (в примере ниже эта переменная так и останется нулём):<br /></p><div class="codebox"><pre><code>objProcess = GetObject(&quot;winmgmts:\\\\.\\root\\cimv2:Win32_Process&quot;);
pID = 0;
errReturn = objProcess.Create(&quot;cmd&quot;, null, null, pID);
WScript.Echo(pID);</code></pre></div><p>Решение проблемы на JScript выглядит довольно громоздко:<br /></p><div class="codebox"><pre><code>objProcess = GetObject(&quot;winmgmts:\\\\.\\root\\cimv2:Win32_Process&quot;);
objInParams = objProcess.Methods_(&quot;Create&quot;).InParameters.SpawnInstance_();
objInParams.CommandLine = &quot;cmd&quot;;
objOutParams = objProcess.ExecMethod_(&quot;Create&quot;, objInParams);
WScript.Echo(objOutParams.ProcessId);</code></pre></div><p>Вывод: сценарии с использованием WMI часто удобнее писать на VBScript <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" />.</p>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2007-08-26T11:24:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=4255#p4255</id>
		</entry>
</feed>
