167

PowerShellユーザーガイドを読んでいるように、PowerShellのコアコンセプトの1つは、コマンドがテキストではなくオブジェクトを受け入れて返すことです。たとえば、実行すると、いくつかのオブジェクトget-aliasが返されます。System.Management.Automation.AliasInfo

PS Z:\> get-alias

CommandType名の定義
----------- ---- ----------
エイリアス%ForEach-Object
エイリアス?Where-Object
Alias acAdd-Content
エイリアスasnpAdd-PSSnapIn
Alias cat Get-Content
エイリアスcdセット-場所
エイリアスchdirセット-場所
..。

では、これらのオブジェクトの数を取得するにはどうすればよいですか?

4

6 に答える 6

234

これはあなたに数えさせます:

get-alias | measure

オブジェクトと同じように結果を操作できます。

$m = get-alias | measure
$m.Count

また、いくつかの変数にもエイリアスが必要な場合は、Tee-Objectを使用できます。

$m = get-alias | tee -Variable aliases | measure
$m.Count
$aliases

Measure-Objectコマンドレットの詳細については、Technetを参照してください。

時間測定用のMeasure-Commandコマンドレットと混同しないでください。(再びTechnetで)

于 2012-07-17T15:54:29.593 に答える
124

@jumboの答えが:-)である限り、あなたはそれをさらに簡潔に行うことができます。これはCount、先行する部分式によって返される配列のプロパティを返すだけです。

@(Get-Alias).Count

注意すべき点がいくつかあります。

  1. Get-Aliasたとえば、の代わりに任意の複雑な式を配置できます。

    @(Get-Process | ? { $_.ProcessName -eq "svchost" }).Count
    
  2. 堅牢なソリューションには、最初のアットマーク(@)が必要です。答えが2以上である限り、@の有無にかかわらず同等の答えが得られますが、答えが0または1の場合、@記号がない限り出力は得られません。Count出力を配列にすることにより、プロパティを強制的に存在させます。)

2012.01.30更新

上記はPowerShellV2にも当てはまります。PowerShell V3の新機能の1つは、Countシングルトンに対してもプロパティがあるため、このシナリオではアットマークが重要ではなくなることです。

于 2012-07-18T20:57:10.237 に答える
24

括弧と「カウント」を使用するだけです。これはPowershellv3に適用されます

(get-alias).count
于 2014-03-26T11:17:54.590 に答える
6

@($output).Count常に正しい結果が得られるとは限りません。私はその($output | Measure).Count方法を使いました。

これは、VMwareGet-VmQuestionコマンドレットで見つかりました。

$output = Get-VmQuestion -VM vm1
@($output).Count

それが与えた答えは1つですが、

$output

出力は生成されませんでした(メソッドで生成された正解は0でしたMeasure)。

これは、0と1の場合にのみ当てはまるように見えました。1を超えるものはすべて、限られたテストで正しかったです。

于 2015-07-21T14:44:45.067 に答える
1

私の交換では、あなたが提示したcmd-letが機能せず、答えがnullだったので、少し修正する必要があり、うまく機能しました。

@(get-transportservice | get-messagetrackinglog -Resultsize unlimited -Start "MM/DD/AAAA HH:MM" -End "MM/DD/AAAA HH:MM" -recipients "user@domain.com" | where {$_.Event
ID -eq "DELIVER"}).count
于 2020-09-09T20:57:57.670 に答える
0
Get-Alias|ForEach-Object {$myCount++};$myCount

158

于 2021-12-04T21:56:12.087 に答える