You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为PowerShell自定义Get-ChildItemUnix函数添加Terminal-Icons图标

实现PowerShell自定义ll命令显示文件图标

你当前的ll别名对应自定义函数Get-ChildItemUnix,因为使用Format-Table输出纯文本表格,丢失了文件类型识别的上下文,所以无法显示文件图标。要实现类似原生带图标ls的效果,需要借助Terminal-Icons模块,并调整函数逻辑,具体步骤如下:

1. 安装Terminal-Icons模块

打开PowerShell(以管理员身份运行),执行以下命令安装模块:

Install-Module -Name Terminal-Icons -Scope CurrentUser -Force

2. 修改自定义函数

根据需求,有两种实现方式:

方式一:保留原生对象,让Terminal-Icons自动添加图标

这种方式输出原始的文件系统对象,Terminal-Icons会自动在名称前添加对应图标,同时显示自定义的Owner属性和链接目标:

function Get-ChildItemUnix {
    Get-ChildItem $Args[0] | ForEach-Object {
        # 给对象添加Owner属性
        $_ | Add-Member -MemberType NoteProperty -Name 'Owner' -Value (Get-Acl $_.FullName).Owner -PassThru
    } | Select-Object Mode, Owner, Length, LastWriteTime, @{
        Name = 'Name'
        Expression = {
            if ($_.Target) { "$($_.Name) -> $($_.Target)" } else { $_.Name }
        }
    }
}
New-Alias ll Get-ChildItemUnix

方式二:手动添加图标到自定义名称列

如果需要更灵活的控制,可以手动调用Terminal-Icons的API获取图标,拼接到自定义名称前:

function Get-ChildItemUnix {
    Get-ChildItem $Args[0] | Format-Table Mode, @{
        N='Owner'
        E={(Get-Acl $_.FullName).Owner}
    }, Length, LastWriteTime, @{
        N='Name'
        E={
            $icon = Get-TerminalIcon $_
            $displayName = if ($_.Target) { "$($_.Name) -> $($_.Target)" } else { $_.Name }
            "$icon $displayName"
        }
    }
}
New-Alias ll Get-ChildItemUnix

3. 启用模块

每次打开PowerShell时,需要导入Terminal-Icons模块才能显示图标,你可以把导入命令添加到PowerShell配置文件中,实现自动加载:

# 打开配置文件
notepad $PROFILE
# 在文件中添加以下内容并保存
Import-Module Terminal-Icons

完成以上步骤后,执行ll命令就能看到带文件/文件夹图标的结果了。

内容的提问来源于stack exchange,提问作者yeferson cordoba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 00:45:59