2017-04-21 194 views
2

我有建议使用Powershell的5.0/ISE

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

返回所有processess的使用计数> 20MB的示例代码片段。

它可以工作,但是在打字时,Intellisense或“Tab”键都不显示此属性,而是显示单个过程的属性 - 我发现这些属性具有误导性。

我明白,指定一个项目属性只会给我这个属性的列表,但是有没有办法容易地看到,一般来说,所有有效的propeties是什么,包括列表聚合等?

即使赋值给一个变量

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

不告诉我“计数”作为$processes有效的财产后,才转让已实际运行并赋值为 - 写剧本时,它仍然显示单个项目的属性。

对于我来说,Intellisense/Tab帮助并没有涵盖所有的选项,这种方式无法达到目的...(不必记住数百个对象/函数及其属性/参数)。

有什么办法可以改善这种情况吗?我错过了一些语法技巧?

回答

2

找出所有对象的属性的正确方法是管道输出到Get-Member

Get-Process | Get-Member 

有时也有隐藏的属性和只能被看作方法,如果你添加-force开关:

Get-Process | Get-Member -Force 

count属性是一个自动特性,始终是任何集合对象上使用,但是,其没有明确列出的作为属性。自动属性的另一个示例是length

+0

嗯,也许我不清楚。我不希望返回属性列表,因此我想查看可能的选项*,同时编码*,而不必“仅仅知道”,或运行测试代码以查明。例如我想要Intellisense或双选项卡选项来显示有效的选项。在过去的13年中,我一直是C#程序员,所以我已经习惯了这种帮助......有一段时间了!这绝对是一种学习和生产力援助。如果Powershell只做了一半的实现,我认为我觉得比没有更糟糕(至少你知道你的立场!) – kpollock

+1

正如你所看到的,intellisense将返回对象的所有属性,除了'count'和''''这样的自动类型外,你只需要记住它们总是可用的。 –

+0

我已经开始了这个FYI的聊天:http://chat.stackoverflow.com/rooms/info/142251/powershell-5-0-ise-intellisense –

2

使用@()来强制数组类型在需要的时候很方便。

例如$processes = @(Get-Process | Where-Object {$_.WorkingSet64 -gt 20mb}).会显示“Count”和其他数组属性。

除此之外,假设智能感知具有各种限制/缺点,我只需要学习......感叹。