[Janni]: Often one needs to execute a command on a remote Windows computer, [WMI] & [tcom] can be used to do just that. Together with [Jaf], we came up with this: ====== proc remote_exec {command machine} { # The impersonation part execs with your current credentials, well...as far as I understood... # if you use "." or "localhost" as machine then the execution is in-situ set wmistr "winmgmts:\{impersonationLevel=impersonate\}!" append wmistr "\\\\$machine\\root\\cimv2:Win32_Process" # get the Win32_Process class if {[catch {::tcom::ref getobject $wmistr} wmiproc]} { return -code error -1 } # there is a method called Methods_, get it set wmiprocmeth [$wmiproc Methods_] # it contains an array, get the Create method out of it set wmiprocmethcreat [$wmiprocmeth Item "Create"] # get the inparameters set inparams [[$wmiprocmethcreat InParameters] SpawnInstance_] # The properties_ of inparams are what we are after set cmdline [[$inparams Properties_] Item "CommandLine"] set cwd [[$inparams Properties_] Item "CurrentDirectory"] set pstart [[$inparams Properties_] Item "ProcessStartupInformation"] # Set the properties $cmdline Value $command # cwd and pstart contain a NULL upon creation, left "as is" # Now exec set result [$wmiproc ExecMethod_ "Create" $inparams] return [[[$result Properties_] Item "ReturnValue"] Value] } ====== For a list of return values see here: [http://msdn.microsoft.com/en-us/library/aa389388%28v=vs.85%29.aspx] Description of the [http://msdn.microsoft.com/en-us/library/aa394372%28v=vs.85%29.aspx%|%Win32_Process%|%] class. <> Example