2011-09-13 34 views
12

Nếu tôi chạy lệnh sau trong PowerShell, nó sẽ trở lại với tôi một đối tượng với tổng số tài sản WorkingSet:Làm cách nào để chỉ trả về số nguyên của đối tượng đo trong PowerShell?

PS > get-process chrome | measure-object WorkingSet -sum 

Count : 36 
Average : 
Sum  : 2377129984 
Maximum : 
Minimum : 
Property : WorkingSet 

Nếu tôi muốn quay trở lại chỉ là giá trị Sum, cách duy nhất tôi đã tìm thấy để làm điều đó là:

PS > $a = get-process chrome | measure-object WorkingSet -sum 
PS > $a.Sum 
2359980032 

Có cách nào để đặt lệnh gốc vào lệnh khác để tôi trả về số nguyên trong một bước không? Một cái gì đó như thế này:

PS > get-process chrome | measure-object WorkingSet -sum | {some other command} 

Trả lời

12

Có, sử dụng Select-Object:

Get-Process chrome | Measure-Object WorkingSet -sum | Select-Object -expand Sum 

Select-Object được sử dụng khi người ta cần chỉ có một số thuộc tính từ đối tượng gốc. Nó tạo ra một đối tượng mới và sao chép các thuộc tính mong muốn vào một đối tượng mới.

Get-Process | Select-Object -property ProcessName, Handles 

Trong trường hợp bạn cần phải trích xuất các giá trị (từ một trong những tài sản), bạn sử dụng tham số -expandProperty thay vì -property:

Get-Process | Select-Object -expand ProcessName 

Lưu ý rằng bạn có thể tính toán giá trị trả về:

get-process | Select-Object -property @{Name='descr'; Expression={"{0} - {1}" -f $_.ProcessName, $_.Handles }} 
6

Chỉ cần sử dụng dấu ngoặc đơn để kèm theo lệnh đường ống:

(get-process chrome | measure-object WorkingSet -sum).sum 

Theo quy tắc, PowerShell xử lý bất kỳ thứ gì được đính kèm trong ngoặc đơn dưới dạng đối tượng mà bạn có thể tham chiếu theo thuộc tính/phương thức.

3

Cách khác:

(get-process chrome | measure-object WorkingSet -sum).sum 
Các vấn đề liên quan