0

我们有一堆不属于域的 PC(并且无法添加)。他们没有安装 PS,我们不想安装它。

我想使用服务器上的 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 放入域中的情况下做到这一点?

4

2 回答 2

1

您可以使用该Filter参数来限制您获取信息的进程,例如:

Get-WmiObject -cn $c win32_process -Filter "Name='PowerShell.exe'" | ft Name, PrivatePageCount
于 2013-10-04T17:19:21.640 回答
0

弄清楚了。这将获取 $HostNames 中列出的计算机上 $Processnames 中列出的应用程序的 VM 和工作集的大小。它首先检查计算机是否还活着

$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
  }
}
于 2013-10-04T18:01:42.483 回答