use Win32::OLE qw(in); use Win32::OLE::Variant; my $cmdline = "notepad"; my $machname = 'dev-autotest'; # This is the WMI moniker used to connect to CIM repository. my $class = "WinMgmts:{impersonationLevel=impersonate}!//$machname"; # Get the WMI interface. my $wmi = Win32::OLE->GetObject($class) or die "error: Get WMI $^E"; # Get a Win32_Process class object. my $proc = $wmi->Get('Win32_Process') or die "error: Get Win32_Process $^E"; # Create a BYREF variant so a COM object can modify its value # and return it to us. my $vPid = Variant(VT_I4 | VT_BYREF, 0); # Create the new process if ($proc->Create($cmdline, undef, undef, $vPid) == 0) { print "process created ok, pid=$vPid\n"; } else { print "process create failed $^E\n"; }