来补充@亚伯拉罕齐纳拉 https://stackoverflow.com/users/14903754/abraham-zinala评论:
dir
(别名为Get-ChildItem https://learn.microsoft.com/powershell/module/microsoft.powershell.management/get-childitem) 返回fileinfo https://learn.microsoft.com/dotnet/api/system.io.fileinfo和目录信息对象。如果您想查看所有可用的成员和方法,您可以通过管道连接到获取会员 https://learn.microsoft.com/powershell/module/microsoft.powershell.utility/get-member。如果您想选择除显示内容之外的所有属性,您可以通过管道连接到选择对象 https://learn.microsoft.com/powershell/module/microsoft.powershell.utility/select-object并指定单个属性,或全部使用*
默认情况下Get-Member
隐藏了一些成员以及PSStandardMembers
财产:
Get-ChildItem -File | Get-Member -Name PSStandardMembers
这些成员只有在您使用时才会透露GetMember -Force
switch:
Get-ChildItem -File | Get-Member -Name PSStandardMembers -Force
TypeName: System.IO.FileInfo
Name MemberType Definition
---- ---------- ----------
PSStandardMembers MemberSet PSStandardMembers {DefaultDisplayPropertySet}
此属性包括默认情况下以表格格式显示的成员(也称为'... |格式表' https://learn.microsoft.com/powershell/module/microsoft.powershell.utility/format-table)
(Get-ChildItem -File)[0].PSStandardMembers.DefaultDisplayPropertySet.ReferencedPropertyNames
LastWriteTime
Length
Name
我不知道为什么具体Mode
属性也以表格格式显示,但实际上并未在此处列出,并且如果有人可以解释这部分,我将很高兴 https://stackoverflow.com/questions/77058602/where-does-the-display-property-mode-come-from
The Select-Object
确实会删除这个装饰:
Get-ChildItem -File | Select-Object * | Format-Table -Property @{ e='*'; width = 7 }
PSPath PSParen PSChild PSDrive PSProvi PSIsCon Mode ModeWit Version BaseNam Resolve Target LinkTyp Length Directo Directo IsReadO FullNam Extensi Name Exists Creatio Creatio LastAcc LastAcc LastWri LastWri LinkTar UnixFil Attribu
tPath Name der tainer houtHar Info e dTarget e ryName ry nly e on nTime nTimeUt essTime essTime teTime teTimeU get eMode tes
dLink c Utc tc
------ ------- ------- ------- ------- ------- ---- ------- ------- ------- ------- ------ ------- ------ ------- ------- ------- ------- ------- ---- ------ ------- ------- ------- ------- ------- ------- ------- ------- -------
Micros… Micros… dir.ps1 P Micros… False -a--- -a--- File: … dir P:\Sta… 383 P:\Sta… P:\Sta… False P:\Sta… .ps1 dir.ps1 True 9/7/20… 9/7/20… 9/7/20… 9/7/20… 9/7/20… 9/7/20… -1 Archive
但您可以简单地创建自己的DefaultDisplayPropertySet
在每个对象上这样:
$DefaultDisplayPropertySet = [System.Management.Automation.PSPropertySet]::new(
'DefaultDisplayPropertySet',[string[]]('Name', 'FullName')
)
$PSStandardMembers = [System.Management.Automation.PSMemberInfo[]]$DefaultDisplayPropertySet
$Dir = Get-ChildItem -File | Select-Object * | Foreach-Object {
$_ | Add-Member MemberSet PSStandardMembers $PSStandardMembers -PassThru
}
对象列表($Dir
) 仍然具有所有可用的标准属性,例如:
$Dir.LastWriteTime
Thursday, September 7, 2023 11:07:32 AM
但它在输出到显示器时仅显示两个默认属性:
$Dir
Name FullName
---- --------
dir.ps1 C:\FullPath\Test.ps1