mark1234
mark1234

Reputation: 1121

Getting Remote Process Information with Powershell (w/o remoting)

We have a bunch of PC that are not part of the domain (and cannot be added). They do not have PS installed and we'd prefer not to have to install it.

I want to use Powershell from a server to get the memory usage of 2 process every hour. Unfortunately get-process doesn't seem to support a -credential parameter. I did get win32_process (as shown below), but it returns a ton of info (no idea how I'd just get VMsize for two processes).

$Pass = ConvertTo-SecureString -string "SECRET" -AsPlainText –Force
$User = "USER"
$Cred = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $User, $Pass 


gwmi win32_process -computername PCName -Credential  $Cred

Is there a way to do this without installing PS or putting PC's in domain?

Upvotes: 0

Views: 2559

Answers (2)

mark1234
mark1234

Reputation: 1121

Figured it out. This gets size of VM and Working set for the apps listed in $Processnames on the Computers listed in $HostNames. It checks if the computer is alive first

$Pass = ConvertTo-SecureString -string "SECRET" -AsPlainText –Force
$User = "User"
$Cred = New-Object –TypeName System.Management.Automation.PSCredential –ArgumentList $User, $Pass 
$ProcessNames = @('App1.exe', 'App2.exe')
$HostList =@('Computer1','Computer2')

foreach ($CurrHost in $HostList)
{
    # check if it's alive
    if((Test-Connection -Cn $CurrHost -BufferSize 16 -Count 1 -ea 0 -quiet))
    {
        gwmi win32_process -computername $CurrHost -Credential  $Cred |
            Where-Object  {$ProcessNames -contains $_.Name } |
            Select-Object CSName, Name, WorkingSetSize, VirtualSize #|
            #Format-Table -AutoSize
  }
}

Upvotes: 0

Keith Hill
Keith Hill

Reputation: 201632

You can use the Filter parameter to limit the processes you get info on e.g.:

Get-WmiObject -cn $c win32_process -Filter "Name='PowerShell.exe'" | ft Name, PrivatePageCount

Upvotes: 1

Related Questions