如何让Windows Powershell Get-ItemProperty只显示我想要的属性?

时间:2009-01-18 22:54:35

标签: powershell

使用PowerShell时,有时我只想显示文件的名称或全名 根据我的收集方式,使用Get-ItemProperty(别名gp)并传递-n fullname,例如

PS C:\Dev> gp . -n fullname

值得注意的是,我希望在结合foreachwhere的较长脚本中使用此功能,依此类推

然后,Powershell会显示全名,但它还会显示一堆其他内容,如下所示:

PSPath       : Microsoft.PowerShell.Core\FileSystem::C:\Dev
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\
PSChildName  : Dev
PSDrive      : C
PSProvider   : Microsoft.PowerShell.Core\FileSystem
fullname     : C:\Dev

我的问题是,如何才能将powershell设为仅显示我想要的属性(全名),而不是将所有其他内容显示出来。 Get-ItemProperty甚至是正确的方法吗?

更新

如果我这样做:

ls -r | ?{ $_.fullname -match "foo" }

这给了我一系列列表,每个目录一个列表,显示每个目录中的所有'foo'文件。我想要做的是将这些多个列表合并到一个列表中,而不是显示ModeLastWriteTimeLength或任何其他不相关的内容。如果Get-ItemProperty不是展示这些内容的正确方法,那么是什么?

5 个答案:

答案 0 :(得分:9)

有很多方法。我认为你在寻找Get-ChildItem:

PS> get-childitem x.txt |选择全名

    FullName
    --------
    C:\WINDOWS\system32\WindowsPowerShell\v1.0\x.txt


    PS > get-childitem x.txt | select name

    Name
    ----
    x.txt


    PS > get-childitem x.txt | % { $_.fullname }
    C:\WINDOWS\system32\WindowsPowerShell\v1.0\x.txt
    PS >

你可以使用Get-ItemProperty,但我认为它更适用于注册管理机构等。

PS > Get-ItemProperty x.txt | select name

Name
----
x.txt

格式表,别名ft也很好知道...

PS > gci x.txt | format-table -a fullname,length

FullName                                         Length
--------                                         ------
C:\WINDOWS\system32\WindowsPowerShell\v1.0\x.txt    126

Get-ChildItem的常用别名是ls,dir和gci。我在罗马时会和gci一起去。

答案 1 :(得分:3)

你可以使用(取决于你确切需要的):

(gi c:\temp\file -ea 0).fullname

(gi c:\temp\file -ea 0) | select -ExpandProperty fullname
  

C:\ TEMP \文件

-ea:如果文件不存在,则不显示错误

答案 2 :(得分:2)

只是一个额外的评论...... PowerShell向屏幕显示信息的方式也可以通过更改其扩展类型系统(ETS)来修改。

检查Update-TypeData的帮助。

走这条路线确实会介绍一些更高级的话题......

答案 3 :(得分:1)

如果你在foreach循环中并且你有对你感兴趣的对象的引用,那么你是否尝试过类似下面的内容来回显该属性。

foreach ($file in dir)
{
  $file.fullname
}

答案 4 :(得分:0)

我一直限制我对导航提供程序使用Get-ItemProperty,例如通过Get-Item或get-ChildItem获取数据的注册表。比较

ls hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
gp hklm:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

您要做的是直接使用属性

ls | ? { $_.FullName -match "whatever"}