Joe*_*oey 24 powershell symlink hardlink
我有一个PowerShell脚本,它正在走一个目录树,有时我在那里硬链接的辅助文件不应该被处理.有没有一种简单的方法可以找出文件(即System.IO.FileInfo)是否是硬链接?
如果没有,用符号链接(符号链接)会更容易吗?
Kei*_*ill 34
试试这个:
function Test-ReparsePoint([string]$path) {
$file = Get-Item $path -Force -ea SilentlyContinue
return [bool]($file.Attributes -band [IO.FileAttributes]::ReparsePoint)
}
Run Code Online (Sandbox Code Playgroud)
这是一个非常小的实现,但它应该做的伎俩.请注意,这不区分硬链接和符号链接.在下面,他们都只利用NTFS重新分析点,IIRC.
Ant*_*lov 19
如果您有Powershell 5+,则以下单行递归列出所有文件硬链接,目录连接和符号链接及其目标,从d:\Temp\以下开始:
dir 'd:\Temp' -recurse -force | ?{$_.LinkType} | select FullName,LinkType,Target
Run Code Online (Sandbox Code Playgroud)
输出:
FullName LinkType Target
-------- -------- ------
D:\Temp\MyJunctionDir Junction {D:\exp\junction_target_dir}
D:\Temp\MySymLinkDir SymbolicLink {D:\exp\symlink_target_dir}
D:\Temp\MyHardLinkFile.txt HardLink {D:\temp\MyHardLinkFile2.txt, D:\exp\hlink_target.xml}
D:\Temp\MyHardLinkFile2.txt HardLink {D:\temp\MyHardLinkFile.txt, D:\exp\hlink_target.xml}
D:\Temp\MySymLinkFile.txt SymbolicLink {D:\exp\symlink_target.xml}
D:\Temp\MySymLinkDir\MySymLinkFile2.txt SymbolicLink {D:\temp\normal file.txt}
Run Code Online (Sandbox Code Playgroud)
如果您关心硬链接的多个目标,请使用此变体列出以制表符分隔的目标:
dir 'd:\Temp' -recurse -force | ?{$_.LinkType} | select FullName,LinkType,@{ Name = "Targets"; Expression={$_.Target -join "`t"} }
Run Code Online (Sandbox Code Playgroud)
您可能需要管理员权限才能运行此脚本C:\.
jzs*_*-sz 17
对于那些想要检查资源是否是硬链接或符号链接的人:
(Get-Item ".\some_resource").LinkType -eq "HardLink"
(Get-Item ".\some_resource").LinkType -eq "SymbolicLink"
Run Code Online (Sandbox Code Playgroud)
小智 14
利用Where-Object搜索的ReparsePoint文件属性.
Get-ChildItem | Where-Object { $_.Attributes -match "ReparsePoint" }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20362 次 |
| 最近记录: |