<div>YES!!!&nbsp; It works.&nbsp; I was able to successfully run the following version:</div>
<div>&nbsp;</div>
<div>###</div>
<div>&nbsp;</div>
<div><font face="courier new,monospace">import wmi</font></div>
<div><font face="courier new,monospace">site = &#39;MV1&#39;<br>wmi_server = &#39;mtv-sql-2&#39;<br>resource = 23012</font></div>
<div><font face="courier new,monospace">wmi_namespace = &#39;root\\sms\\site_%s&#39; % site<br>conn = wmi.WMI(computer=wmi_server, namespace=wmi_namespace)<br>coll = conn.SMS_Collection(CollectionID=&#39;MV100362&#39;)[0]</font></div>

<div><font face="courier new,monospace">rule = conn.SMS_CollectionRuleDirect.new()<br>rule.ResourceID = resource<br>rule.RuleName = &#39;ResourceID: &#39; + str(resource)<br>rule.ResourceClassName = &#39;SMS_R_System&#39;</font></div>

<div><font face="courier new,monospace">result = coll.AddMembershipRule(rule)</font></div>
<div>&nbsp;</div>
<div>###</div>
<div>&nbsp;</div>
<div>I still get the error on my old code, but maybe mixing win32com.client-style objects with wmi objects is causing&nbsp;weirdness there.&nbsp; In any case, I have what I need from here on out.&nbsp; I&#39;d say almost 100% of all WMI scripts out there are for getting information, not setting it, but when you&#39;re dealing with SMS it&#39;s the only way to go.</div>

<div>&nbsp;</div>
<div>Thanks again, and someday I&#39;ll pull a thorn out of your foot or something.&nbsp; :)<br><br></div>
<div class="gmail_quote">On Jan 30, 2008 1:14 AM, Tim Golden &lt;<a href="mailto:mail@timgolden.me.uk" target="_blank">mail@timgolden.me.uk</a>&gt; wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
<div>
<div></div>
<div>Tim Johnson wrote:<br>&gt; Hmm, I&#39;m getting a different error now. &nbsp;Could it be having trouble passing<br>&gt; one wmi object as a parameter to the method of another?<br>&gt;<br>&gt; import wmi<br>&gt; site = &#39;MV1&#39;<br>
&gt; wmi_server = &#39;mtv-sql-2&#39;<br>&gt; resource = 23012<br>&gt; wmi_namespace = &#39;root\\sms\\site_%s&#39; % site<br>&gt; conn = wmi.WMI(computer=wmi_server, namespace=wmi_namespace)<br>&gt; coll = conn.Get(&#39;SMS_Collection.CollectionID=&quot;MV100362&quot;&#39;)<br>
&gt; rule = conn.Get(&#39;SMS_CollectionRuleDirect&#39;).SpawnInstance_()<br>&gt; rule.ResourceID = resource<br>&gt; rule.RuleName = &#39;ResourceID: &#39; +str(resource)<br>&gt; rule.ResourceClassName = &#39;SMS_R_System&#39;<br>
&gt; coll.AddMembershipRule(rule)<br>&gt;<br>&gt; Gives me :<br>&gt;<br>&gt; Traceback (most recent call last):<br>&gt; &nbsp; File &quot;C:\Users\timjohnson\Desktop\addrule.py&quot;, line 16, in ?<br>&gt; &nbsp; &nbsp; coll.AddMembershipRule(rule)<br>
&gt; &nbsp; File &quot;C:\Python24\Lib\site-packages\win32com\client\dynamic.py&quot;, line 491,<br>&gt; in __getattr__<br>&gt; &nbsp; &nbsp; raise pythoncom.com_error, details<br>&gt; pywintypes.com_error: (-2147352567, &#39;Exception occurred.&#39;, (0,<br>
&gt; &#39;SWbemObjectEx&#39;, &#39;Not found &#39;, None, 0, -2147217406), None)<br>&gt;<br>&gt; But this:<br>&gt;<br>&gt; import wmi<br>&gt; site = &#39;MV1&#39;<br>&gt; wmi_server = &#39;mtv-sql-2&#39;<br>&gt; resource = 23012<br>
&gt; wmi_namespace = &#39;root\\sms\\site_%s&#39; % site<br>&gt; conn = wmi.WMI(computer=wmi_server, namespace=wmi_namespace)<br>&gt; coll = conn.SMS_Collection(CollectionID=&#39;MV100362&#39;)[0]<br>&gt; rule = conn.SMS_CollectionRuleDirect.new()<br>
&gt; rule.ResourceID = resource<br>&gt; rule.RuleName = &#39;ResourceID: &#39; +str(resource)<br>&gt; rule.ResourceClassName = &#39;SMS_R_System&#39;<br>&gt; coll.AddMembershipRule(rule)<br>&gt;<br>&gt; Gives me:<br>&gt;<br>
&gt; Traceback (most recent call last):<br>&gt; &nbsp; File &quot;C:\Users\timjohnson\Desktop\addrule.py&quot;, line 16, in ?<br>&gt; &nbsp; &nbsp; coll.AddMembershipRule(rule)<br>&gt; TypeError: __call__() takes exactly 1 argument (2 given)<br>
<br></div></div>Hi, Tim.<br><br>This is one of those ones where I can&#39;t easily check my suspicions<br>because I don&#39;t have the namespace on my box. I can probably give<br>a hint or two, though. And I&#39;ll almost certainly find along the<br>
way that you&#39;re doing something no-one&#39;s asked the wmi module to<br>do before and which, therefore, I don&#39;t support too cleanly!<br><br>No. 1 - get the latest release:<br><br><a href="http://timgolden.me.uk/python/downloads/wmi-1.3.2.zip" target="_blank">http://timgolden.me.uk/python/downloads/wmi-1.3.2.zip</a><br>
<br>which may actually solve the first problem if it&#39;s<br>what I think it is, and will certainly help you with<br>the second. If I&#39;m wrong -- and even if I&#39;m right :) --<br>feel free to post back.<br><br>The first one *might* be a symptom of a long-standing bug<br>
I&#39;ve just squashed which over-cached the WMI methods so<br>that any method call after the first one was attempting<br>to call on the *first* object again.<br><br>The second one is the slight gotcha that -- prior to the<br>
latest release but one -- you had to pass method params<br>as keyword-only. Not helped by the slightly obscure error<br>message which even has me scratching my head when I forget.<br>I&#39;ve fixed that in the latest release so please run it through<br>
and make sure for me.<br><br>Thanks<br>TJG<br>
<div>
<div></div>
<div>_______________________________________________<br>python-win32 mailing list<br><a href="mailto:python-win32@python.org" target="_blank">python-win32@python.org</a><br><a href="http://mail.python.org/mailman/listinfo/python-win32" target="_blank">http://mail.python.org/mailman/listinfo/python-win32</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>_____________________<br>Ceci n&#39;est pas un email.