powershell - 选择对象 - 保留默认列但添加一列

标签 powershell

我可以使用 Select-Object 选择要显示的列,甚至可以添加计算列。一个例子:

gci | select *, @{n='LAS'; e={(Get-Date)-$_.LastAccessTime}}

我想添加一个计算列但保留默认列。如果没有 * 通配符,我只会得到我计算出的属性。有了它,我得到了一切。我必须使用的唯一解决方法是手动列出默认属性名称。有什么想法吗?

最佳答案

问题是您实际上声明要显示所有 属性('*')。

因此要仅添加到标准属性,您首先需要获取标准属性。

[string[]]$StdProperties = (Get-ChildItem).PSStandardMembers.DefaultDisplayPropertySet[1].ReferencedPropertyNames

我们实际上并不想改变返回对象的标准属性

Get-Childitem | select Name | Get-Member| group TypeName | select Name

Name
----
Selected.System.IO.DirectoryInfo
Selected.System.IO.FileInfo

所以我们只需要使用要使用的新属性扩展提取的字符串数组。

$StdProperties += 'LAS'

最后,使用它......

Get-ChildItem | select *, @{n='LAS'; e={(Get-Date) - $_.LastAccessTime}} | 
select $StdProperties

关于powershell - 选择对象 - 保留默认列但添加一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68706871/

相关文章:

powershell - 如何查询 Hashtable 的嵌套属性?

c# - 在 IEnumerable 上使用 C# 实现的 PowerShell 中的 GetEnumerator

command-line - 使用 WiX 安装 Powershell 脚本

sql-server - Invoke-Sqlcmd、InputFile 和变量

powershell - 我正在尝试使用不知道目标文件名的PowerShell来下载文件?

Windows ctrl + c 信号未触发

c# - 'Microsoft.AspNet.Server.Kestrel' 不包含适合入口点的静态 'Main' 方法

powershell - 在 Powershell 的 GUI 窗口中创建进度条

powershell - Powershell-Http请求的超时

powershell选择菜单(do-until)不退出