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

如何让PowerShell的dir命令像CMD一样显示所有符号链接目标?

问题:配置PowerShell使其显示符号链接的目标(与cmd的dir命令一致)

在Command Prompt(cmd.exe)中执行dir命令时,符号链接会直接显示目标路径:

C:\path\to\somewhere> dir
2022-10-03  20:17    <DIR>          .
2022-10-03  19:54    <DIR>          ..
2022-10-03  20:16    <SYMLINKD>     link [..\target\]

但在PowerShell中执行dir(即Get-ChildItem的别名)时,仅能通过Mode中的l识别符号链接,无法直接看到目标路径:

PS C:\path\to\somewhere> dir
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d----l        2022-10-03     20:16                link

以下是几种实现PowerShell显示符号链接目标的方法:


解决方案

方法1:临时调整输出格式(单次生效)

直接通过Format-Table自定义输出列,提取符号链接的目标路径:

Get-ChildItem | Format-Table Mode, LastWriteTime, Length, Name, @{Name='Target'; Expression={ if ($_.LinkType) { $_.Target } }} -AutoSize

如果仅需查看目录符号链接,可添加过滤条件:

Get-ChildItem -Directory | Format-Table Mode, LastWriteTime, Name, @{Name='Target'; Expression={ $_.Target }} -AutoSize

方法2:修改默认输出配置(永久生效)

通过编辑PowerShell配置文件,让dir/Get-ChildItem默认显示符号链接目标:

  1. 检查并创建配置文件(若不存在):
if (-not (Test-Path $PROFILE)) { New-Item -Path $PROFILE -ItemType File -Force }
  1. 打开配置文件进行编辑:
notepad $PROFILE
  1. 在配置文件中添加以下内容:
# 自定义Get-ChildItem输出格式,显示符号链接目标
$FormatEnumerationLimit = -1
Update-FormatData -AppendPath (Join-Path $PSScriptRoot 'CustomDir.format.ps1xml')
  1. 创建CustomDir.format.ps1xml文件(与配置文件同目录),内容如下:
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
  <ViewDefinitions>
    <View>
      <Name>childitem</Name>
      <ViewSelectedBy>
        <TypeName>System.IO.DirectoryInfo</TypeName>
        <TypeName>System.IO.FileInfo</TypeName>
      </ViewSelectedBy>
      <TableControl>
        <TableHeaders>
          <TableColumnHeader>
            <Label>Mode</Label>
            <Width>7</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>LastWriteTime</Label>
            <Width>20</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Length</Label>
            <Width>10</Width>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Name</Label>
          </TableColumnHeader>
          <TableColumnHeader>
            <Label>Target</Label>
          </TableColumnHeader>
        </TableHeaders>
        <TableRowEntries>
          <TableRowEntry>
            <TableColumnItems>
              <TableColumnItem>
                <PropertyName>Mode</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>LastWriteTime</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Length</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <PropertyName>Name</PropertyName>
              </TableColumnItem>
              <TableColumnItem>
                <ScriptBlock>
                  if ($_.LinkType) { $_.Target } else { '' }
                </ScriptBlock>
              </TableColumnItem>
            </TableColumnItems>
          </TableRowEntry>
        </TableRowEntries>
      </TableControl>
    </View>
  </ViewDefinitions>
</Configuration>

保存后重启PowerShell,执行dir即可默认看到符号链接的目标列。

方法3:自定义别名简化命令

若不想修改全局格式,可创建自定义命令别名,在$PROFILE中添加:

function Get-ChildItemWithLinkTarget {
    Get-ChildItem | Format-Table Mode, LastWriteTime, Length, Name, @{Name='Target'; Expression={ if ($_.LinkType) { $_.Target } }} -AutoSize
}
Set-Alias -Name dirwithlink -Value Get-ChildItemWithLinkTarget

之后执行dirwithlink就能快速查看带目标路径的目录列表。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:55:22