2013-10-04 69 views
0

我们有一堆PC不属于域(不能添加)。他们没有安装PS,我们不希望安装它。使用Powershell获取远程过程信息(不使用远程处理)

我想从服务器使用Powershell来获取每小时2个进程的内存使用量。不幸的是,get-process似乎不支持-credential参数。我确实得到了win32_process(如下图所示),但它返回了大量的信息(不知道我如何才能获得两个进程的VMsize)。

$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 

有没有办法做到这一点,而无需安装PS或将PC放入域?

回答

1

可以使用Filter参数限制过程你e.g获取信息:

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

想通了。这将获得VM Host和Working集的大小,列在$ HostNames中列出的计算机上的$ Processnames中。它检查计算机是否先存活

$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 [email protected]('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 
    } 
}