2017-04-21 9 views
2

私>は20Mbのを使用して、すべてのprocessessの数を返すためにのPowershell 5.0/ISE

(Get-Process | Where-Object {$_.WorkingSet64 -gt 20mb}).Count 

を用いることが提案されているサンプルコードスニペットを持っています。

それは動作しますが、入力する際、インテリセンスや「タブ」キーを示し、このプロパティでもないが、むしろ彼らは、個々のプロセスの特性を示して - 私は誤解を招く見つけます。

私は、アイテムプロパティを指定すると、そのプロパティのリストだけがわかりますが、一般的に、リスト集合体など、すべての有効なプロットが何であるかを簡単に確認する方法はありますか?

割り当てがされた後、実際に実行し、割り当てられた値までであっても、変数

$processes = Get-Process | Where-Object {$_.WorkingSet64 -gt 20mb} 

に割り当てること私は$processesの有効なプロパティとして「カウント」は表示されません - スクリプトを書くとき、それはまだ示してい個々のアイテムのプロパティ。すべてのオプションをカバーしていない種類の目的に反し私にとって

、インテリセンス/タブのヘルプ...(数百オブジェクト/関数とそのプロパティ/パラメータを覚える必要がありません)。

この状況を改善する方法はありますか?いくつかの構文トリック私は逃した?

答えて

2

オブジェクトのすべてのプロパティを見つけるための正しい方法は、パイプにGet-Memberに出力されます。

Get-Process | Get-Member 

時にはあなたが-forceスイッチを追加した場合にのみ見ることができ隠されたプロパティとメソッドがあります:

Get-Process | Get-Member -Force 

countプロパティは常にすべてのコレクションオブジェクトに使用可能であるが、それが明示的にプロパティとしてリストされていない自動プロパティがあります。自動プロパティの別の例はlengthです。それが望まれているものです時に配列型を強制的に@()を使用し

+0

ええ、多分私は明らかではなかった。私は結果としてプロパティのリストを返すことを望んでいません、私は可能なオプションが何であるかを見てみたいと思っています* "ただ知っている"ことなく、または調べるためにテストコードを実行する必要はありません。たとえば、私はIntellisenseやダブルタブのオプションを使用して、有効なオプションを表示します。私は過去13年間のC#プログラマーでしたので、私はこの種のヘルプにかなり慣れてきました。それは絶対に学習と生産性向上のための卓越性です。 Powershellがそれを半分しか実装していないのであれば、私はそれがどこよりも悪いと思うでしょう。(あなたがどこにいるのかは少なくとも知っています) – kpollock

+1

ご覧のとおり、intellisenseはオブジェクトのすべてのプロパティをあなたが覚えておく必要がある 'count'や' length'のような自動のものを除いて、常に利用可能です。 –

+0

このFYIのチャットを開始しました:http://chat.stackoverflow.com/rooms/info/142251/powershell-5-0-ise-intellisense –

2

は便利です。

$processes = @(Get-Process | Where-Object {$_.WorkingSet64 -gt 20mb}).は "Count"と他の配列プロパティを表示します。

それ以外の場合、Intellisenseにはさまざまな制限/欠点があります。私はちょうどそれを学ばなければならないでしょう。