0

所以我几乎已经解决了我最初的问题,但我在这里遇到了一堵砖墙:我有一组需要格式化为表格的 3 个变量(最终会变得更多)。我为每个变量创建了函数,并且可以使用以下代码成功组合两个变量:

$pids = get-counter -listset process | get-counter -maxsamples 1 | select -expandproperty countersamples | where {$_.path -like "*\id process" -and $_.path -like $filter} | select cookedvalue | ForEach {$_.cookedvalue}
function GetMemoryUsage  { ...code here... }
function GetAppID { ...code here.... }
$combined = $pids | %{ $wapp = GetAppID $_
             $obj = new-object psobject
             $obj | add-member -name WP -type noteproperty -value $wapp
             $obj | add-member -name "Process ID" -type noteproperty -value $_
             $obj
        }
Write-Output $combined

我的问题是:如何在此处添加 GetMemoryUsage 作为对象?我试过使用一个函数,但它并不顺利。请注意,我不想在这里使用哈希表,因为我相信它们只在 v2 中工作,而且我仍然让机器运行 v1。谢谢!

4

2 回答 2

0

如果进程 ID 和内存消耗是您所追求的,那么这应该适合您:

Get-Process | Select Name,ID,WorkingSet
于 2012-06-20T07:22:18.473 回答
0

弄清楚了!

这里的关键是将它成功地输送到一个数组中。我在这里有很多缺点,但你必须克服它们。

$pids = get-counter -listset process | get-counter -maxsamples 1 | select -expandproperty countersamples | where {$_.path -like "*\id process" -and $_.path -like $filter} | select cookedvalue | ForEach {$_.cookedvalue}
function GetMemoryUsage  { ...code here... }
function GetAppID { ...code here.... }
$myresults = @()
$x = foreach ($ids in $pids) {
         $thisapp = GetAppID $ids
         $thismem = GetMemoryUsage $ids
         $robj = New-Object System.Object
     $robj | Add-Member -type NoteProperty -name WP -value $thisapp
     $robj | Add-Member -type NoteProperty -name Memory -value $thismem
     $robj | Add-Member -type NoteProperty -name Process -value $ids
     $myresults += $robj
}
$myresults | ft -auto

这种方法的好处是您可以通过管道输入无限数量的变量,只要您可以将这些变量与数组相关联,那么您就可以开展业务了。

于 2012-06-20T18:22:54.960 回答