0

したがって、最初の問題はほぼ解決しましたが、ここでレンガの壁にぶつかっています。テーブルにフォーマットする必要がある 3 つの変数 (最終的にはさらに多くなる) のセットがあります。変数ごとに関数を作成し、次のコードを使用して 2 つの変数を正常に組み合わせることができます。

$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 に答える