在 PowerShell 代码中测试文件夹是否是连接点?

2023-11-27

如何在 PowerShell 代码中测试文件夹是否是连接点?


至少从 PowerShell v5.0 开始,对链接有了更好的支持(或者 MS 称之为:重新分析点)

改进的 Item cmdlet -LinkType财产

链接的文章位于 WMF 5.0 类别下,这可能意味着该方法自 PS v5.0 起可用。
这些功能包含在标准 Get-Item、Get-ChildItem 中,因此不需要额外的步骤。它可以在任何当前的 PS 上使用。

LinkType 是对象的 String 属性,由 Get-Item 和 Get-ChildItem 返回,
它可以具有以下四个值之一:''、'Junction'、'SymbolicLink'、'HardLink'。

要回答OP的问题,您可以使用以下命令检查文件夹是否是连接点:

if ((Get-Item -Path $Target -Force).LinkType -eq "Junction") { }

要检查文件/文件夹是否是任何类型的“ReparsePoint”(Junction、SymbolicLink 或 HardLink):

if ((Get-Item -Path $Target -Force).LinkType) { }

普通文件/文件夹上的 LinkType 值是一个空字符串,当用作ifPS 中的条件解析为 False


Get-ChildItem 可用于列出所有 Junction 文件夹:

(Get-ChildItem -Path $Target -Force) | Where-Object { $_.LinkType -eq "Junction" }

请注意,文件或文件夹的“SymbolicLink”值相同,因此仅列出文件夹的符号链接:

(Get-ChildItem -Path $Target -Directory -Force) | Where-Object { $_.LinkType -eq "SymbolicLink" }


Cmdlet Get-ChildItem(别名:dir、ls、gci)现在显示 ReparsePoint 属性,如下所示l在模式列中,没有任何扩展名。但它不会显示“硬链接”并显示l对于 Junction 和 SymbolicLink:

> Get-ChildItem -Path $Target -Force


    Directory: C:\Users


Mode                LastWriteTime         Length Name                          
----                -------------         ------ ----                          
d--hsl       2018-04-12     01:45                All Users                     
d-rh--       2018-05-09     06:12                Default                       
d--hsl       2018-04-12     01:45                Default User                  
d-----       2018-06-24     03:05                Papo                          
d-r---       2018-07-27     07:12                Public
  • LinkType 不适用于 \Users 和 \Users\ 内具有特殊权限的文件夹,即使上面所示的 Get-ChildItem 确实有效并显示l在他们。
  • 删除项目有问题。它无法删除 Junction,如果强制,将删除原始内容。据说这个问题将在未来版本 PS v6 中修复

使用这些改进的或当今的标准 Cmdlet 比以前的方法具有一些优势,如此处较旧的答案中所述。

  • 它确实区分了连接和符号链接
    如果OP想要测试文件夹是否是连接点,则通过属性属性检查将导致文件夹符号链接误报。

  • 检测到硬链接。

  • LinkType 是 [String],而不是 Attributes 属性,后者是 [FileAttributes] 类型,需要 .ToString() 或使用 -band

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 PowerShell 代码中测试文件夹是否是连接点? 的相关文章

随机推荐

  • 为 docker 镜像创建一个图标

    我创建了我的应用程序的 docker 映像 songkong songkong 但我注意到它没有图标 而许多其他 docker 映像却有 如何向 docker 映像添加图标 我的 docker 镜像可在 docker hub 上找到 并非所
  • “发明原则”视频中的 Javascript 树源代码

    Bret Victor 的 Inventing on Principle 视频 http vimeo com 36579366 给我很大启发 另外 我对用 Javascript 绘制的那棵树非常着迷 我没有做过太多图形编程 在我的整个职业生
  • 使用 Box2D 模拟“牛顿万有引力定律”

    我想模拟牛顿万有引力定律使用 Box2D 我浏览了手册 但找不到执行此操作的方法 基本上我想做的是将几个物体放置在太空中 零重力 并模拟运动 有小费吗 实现起来非常容易 for int i 0 i lt numBodies i b2Body
  • 当 git tfs 无法创建合并提交时,如何纠正它

    当 git tfs 无法创建合并提交时 它说warning this changeset 7504 is a merge changeset But it can t have been managed accordingly becaus
  • QT版本未正确安装,请运行make install

    我从下载的副本安装了 QT creatorqt creator linux x86 opensource 2 6 1 bin using sudo qt creator linux x86 opensource 2 6 1 bin 在Ubu
  • jQuery 更改所有子项的 id 属性

    我需要一些帮助来弄清楚如何编写一些 jQuery 代码 我需要动态克隆一个表 onclick 但随后我每次都需要更改表及其子元素的 id 由于该表可能有很多子项 因此手动执行此操作会很困难 我需要一种方法来更改所有子 所有后代 元素的 id
  • 如何在MySQL中从DATETIME中分离DATE和TIME?

    我正在存储一个DATETIME表中的字段 每个值看起来都像这样 2012 09 09 06 57 12 我正在使用这个语法 date Y m d H i s 现在我的问题是 在获取数据时 如何同时获取日期和时间分别地 使用单个 MySQL
  • 使用 JavaScript 打印多个 PDF 文件

    我想知道如何通过一次打印点击打印多个 PDF 文件 我可以轻松打印单个 PDF 文件 但当文件较多时我不知道如何打印 提前致谢 您可以致电print 在代码中多次出现 导致文件被一个接一个地打印 function PrintAll var
  • 为什么像“volatile int * p”这样的指向易失性的指针有用?

    volatile就是告诉编译器不要优化引用 这样每次读 写都不会使用寄存器中存储的值 而是进行真正的内存访问 我可以理解它对于某些普通变量很有用 但不明白如何volatile影响指针 volatile int p some addr int
  • 如何将 Bullet 物理应用于绘制的 Opengl 3d 形状

    我只是想知道是否有一种方法可以将子弹物理应用于 opengl 绘制的对象 使用 glVertex3f 或带有 glVertexAttribPointer 的三角形网格创建 我目前正在使用 jogl 和 jbullet 将物理应用到我的 3D
  • 尝试播放声音时出现“play() 失败,因为用户没有先与文档交互”错误 (javascript/html)

    我正在尝试使用 javascript 在网页上播放声音 但每当我这样做时 我都会收到上述错误 这是我的代码 if thing startsWith 0 var a new Audio audio mp4 a play 此外 如果您打开控制台
  • 如何设置 Elastic beanstalk Windows 应用程序的文件夹权限?

    我目前正在构建一个 C WebApi 2 应用程序 我将其上传到 Amazon Elastic Beanstalk 实例进行部署 到目前为止 我取得了成功 并且在我的本地计算机上 我刚刚完成了文件上传功能的测试 以便客户端上传图像 它的方式
  • 在 VirtualBox 来宾中运行 perf

    我的教授要求我跑步 perf stat e mem loads mem stores test 为了让我找到 C 文件的内存加载和存储 我在 VirtualBox Linux 来宾中执行此操作 问题是perf说这是无效或不受支持的事件 任何
  • 在 Clion 中启用 Cuda 代码索引

    我正在使用 Clion 开发 cuda 程序 当扩展名是 h 时 代码突出显示可以正常工作 但是 当它更改为 cuh 时 Clion 仅将新文件视为纯文本文件 并且我无法启用代码突出显示 我知道完整的 Cuda 工具链是不可能的 所以我不希
  • 为 Outlook 2007 构建表单

    我刚刚了解到 Outlook 表单的概念 我不知道这是否能解决我的问题 但这就是我想做的 我希望能够让公司内部的员工填写一些表格 那么我所要做的就是创建表单并将其推送到他们的 Outlook 中 他们填写表格后 我可以以某种方式捕获数据吗
  • WebAPI OData $格式转换为xml

    对于我的 WebAPI OData 应用程序 我试图让我的客户端 浏览器 决定数据输出应该采用什么格式 作为 format尚未在 WebAPI OData 中实现 我在这里使用 Raghuramn 的示例 https gist github
  • React + Typescript:如何输入 event.target.name 来声明?

    我有一些反应状态被定义为一个接口并且有专门命名的键 我尝试了下面的解决方案 该解决方案在技术上应该基于状态键工作 但它仍然给我错误 x string string provides no match for the signature 做这
  • 有没有一种简单的方法可以使用 Microsoft Web Optimization 框架/脚本捆绑来呈现绝对 URL?

    我正在尝试使用 Microsoft 的 Web Optimization 框架呈现 JavaScript 包 如下所示 Scripts Render assets bundle js 并构建一个小包 如下所示 public static v
  • Fabric API 密钥无效

    我正在尝试将 Fabric 安装到我的 iOS 应用程序中 我下载了 Fabric 应用程序来安装 Crashlytics 但是当我在应用程序提供的构建阶段添加运行脚本时 在构建项目后出现错误 第 2 行 1 myfirebaseid io
  • 在 PowerShell 代码中测试文件夹是否是连接点?

    如何在 PowerShell 代码中测试文件夹是否是连接点 至少从 PowerShell v5 0 开始 对链接有了更好的支持 或者 MS 称之为 重新分析点 改进的 Item cmdlet LinkType财产 链接的文章位于 WMF 5