So, I'm trying to get the owner of a process on a remote machine. More
specifically, I'm trying to determine if one or more of many processes
with the same name is owned by a particular user. If at least one
process is running in that user context, all is good, otherwise, alarm
bells will go off.

The machine on which the script is executed is Win2008R2, and the
machine it's querying is Win2003R2.

This is the script - a little one-liner:

get-wmiobject -class win32_process -filter "name = 'example.exe'"
-computername computer.example.tld | where-object { $_.getowner().user
-eq 'userid' }

It seems to work - at least I always get output like the following:

__GENUS                    : 2
__CLASS                    : Win32_Process
__SUPERCLASS               : CIM_Process
__DYNASTY                  : CIM_ManagedSystemElement
__RELPATH                  : Win32_Process.Handle="12600"
__PROPERTY_COUNT           : 45
__DERIVATION               : {CIM_Process, CIM_LogicalElement,
CIM_ManagedSystemElement}
__SERVER                   : computername
__NAMESPACE                : root\cimv2
__PATH                     :
\\computername\root\cimv2:Win32_Process.Handle="12600"
Caption                    : example.exe
CommandLine                : E:\bin\example PHANTOM "ECL.SVCMGR 20001"
"_PH_\userid24"
CreationClassName          : Win32_Process
CreationDate               : 20150219000024.108524-480
CSCreationClassName        : Win32_ComputerSystem
CSName                     : computername
Description                : example.exe
ExecutablePath             : E:\bin\example.exe
ExecutionState             :
Handle                     : 12600
HandleCount                : 122
InstallDate                :
KernelModeTime             : 2594375000
MaximumWorkingSetSize      : 1380
MinimumWorkingSetSize      : 200
Name                       : example.exe
OSCreationClassName        : Win32_OperatingSystem
OSName                     : Microsoft Windows Server 2003 Standard
Edition|C:\WINDOWS|\Device\Harddisk0\Partition2
OtherOperationCount        : 4149573
OtherTransferCount         : 112256404
PageFaults                 : 1217120
PageFileUsage              : 5480
ParentProcessId            : 12780
PeakPageFileUsage          : 9368
PeakVirtualSize            : 83656704
PeakWorkingSetSize         : 12732
Priority                   : 8
PrivatePageCount           : 5611520
ProcessId                  : 12600
QuotaNonPagedPoolUsage     : 4
QuotaPagedPoolUsage        : 100
QuotaPeakNonPagedPoolUsage : 6
QuotaPeakPagedPoolUsage    : 112
ReadOperationCount         : 1485929
ReadTransferCount          : 7417721489
SessionId                  : 0
Status                     :
TerminationDate            :
ThreadCount                : 2
UserModeTime               : 1453593750
VirtualSize                : 66973696
WindowsVersion             : 5.2.3790
WorkingSetSize             : 11386880
WriteOperationCount        : 5844057
WriteTransferCount         : 5828253887
PSComputerName             : computername
ProcessName                : example.exe
Handles                    : 122
VM                         : 66973696
WS                         : 11386880
Path                       : E:\bin\example.exe

But, if I run it manually more than once or twice, I get an error
afterward, about every other time I run it:

Exception calling "GetOwner" : "Not found "
At line:1 char:111
+ ... Where-Object { $_.GetOwner().User -eq 'userid' }
+                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WMIMethodException

The script will be polling the target machine about every 5 minutes,
which might be sufficient to avoid this problem, but also perhaps not.
Anyone have insight into what might be happening?

Kurt


================================================
Did you know you can also post and find answers on PowerShell in the forums?
http://www.myitforum.com/forums/default.asp?catApp=1

Reply via email to