使用PowerShell时,有时我只想显示文件的名称或全名
根据我的收集方式,使用Get-ItemProperty
(别名gp
)并传递-n fullname
,例如
PS C:\Dev> gp . -n fullname
值得注意的是,我希望在结合foreach
和where
的较长脚本中使用此功能,依此类推
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'文件。我想要做的是将这些多个列表合并到一个列表中,而不是显示Mode
,LastWriteTime
,Length
或任何其他不相关的内容。如果Get-ItemProperty
不是展示这些内容的正确方法,那么是什么?
答案 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"}