[python-win32] remote machine file query
Tim Golden
mail at timgolden.me.uk
Tue Feb 14 10:51:30 CET 2012
On 13/02/2012 22:52, Trevor Rowland wrote:
> where self.c is a wmi.WMI() connection to a remote machine using my
> username and password (I am admin)
> why does the line below ALWAYS return an empty list ???
>
> aFile = self.c.Win32_Directory(Name = "C:\\Users"):
> print aFile
> []
>
> I have tried various permutations of Name (raw string, single/ double
> backslashes, different filenames) but all returned an empty list.
> I also tried the Query version:
> aTest = self.c.Query('Select * from Win32_Directory WHERE
> Name=\"C:\\Users\"')
Ah. That would be a bug in the wmi module, by the look of it.
Basically it's a symptom of backslash madness where every
system in the chain does its own thing with backslashes.
As a workaround (while I try to work around what to do),
you can drop down a level at least for this operation:
<code>
import wmi
c = wmi.WMI ("svr-heat")
for d in c.wmi.ExecQuery ("""
SELECT * FROM Win32_Directory
WHERE Name = 'c:\\\\temp'
"""):
directory = wmi._wmi_object (d)
break
</code>
The wmi attribute of the WMI connection is the underlying
WMI COM object so you can call any of its methods including
the ubiquious ExecQuery.
The wmi._wmi_object class attempts to wrap any WMI object you can
throw at it. So what you're doing here is temporarily bypassing
the plumbling which underlies the more Python c.Win32_Directory (...)
stuff.
TJG
More information about the python-win32
mailing list