gpt4 book ai didi

powershell - 如何使 Get-ChildItem 不跟踪链接

转载 作者:行者123 更新时间:2023-12-02 20:50:07 25 4
gpt4 key购买 nike

我需要 Get-ChildItem 来返回路径内的所有文件/文件夹。但也有指向远程服务器的符号链接(symbolic link)。链接是通过以下方式创建的:mklink/D link\\remote-server\folder

如果我运行Get-ChildItem -recurse,它会跟踪远程服务器的链接并列出那里的所有文件/文件夹。如果我使用 -exclude 它不会列出与排除模式匹配的文件夹,但仍然会向下列出所有包含的文件和文件夹。

我真正需要的是 Get-ChildItem -recurse 来完全忽略链接并且不关注它们。

最佳答案

我自己也需要同样的东西。定于...

Function Get-ChildItemNoFollowReparse
{
[Cmdletbinding(DefaultParameterSetName = 'Path')]
Param(
[Parameter(Mandatory=$true, ParameterSetName = 'Path', Position = 0,
ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true)]
[ValidateNotNullOrEmpty()]
[String[]] $Path
,
[Parameter(Mandatory=$true, ParameterSetName = 'LiteralPath', Position = 0,
ValueFromPipelineByPropertyName=$true)]
[ValidateNotNullOrEmpty()]
[Alias('PSPath')]
[String[]] $LiteralPath
,
[Parameter(ParameterSetName = 'Path')]
[Parameter(ParameterSetName = 'LiteralPath')]
[Switch] $Recurse
,
[Parameter(ParameterSetName = 'Path')]
[Parameter(ParameterSetName = 'LiteralPath')]
[Switch] $Force
)
Begin {
[IO.FileAttributes] $private:lattr = 'ReparsePoint'
[IO.FileAttributes] $private:dattr = 'Directory'
}
Process {
$private:rpaths = switch ($PSCmdlet.ParameterSetName) {
'Path' { Resolve-Path -Path $Path }
'LiteralPath' { Resolve-Path -LiteralPath $LiteralPath }
}
$rpaths | Select-Object -ExpandProperty Path `
| ForEach-Object {
Get-ChildItem -LiteralPath $_ -Force:$Force
if ($Recurse -and (($_.Attributes -band $lattr) -ne $lattr)) {
Get-ChildItem -LiteralPath $_ -Force:$Force `
| Where-Object { (($_.Attributes -band $dattr) -eq $dattr) -and `
(($_.Attributes -band $lattr) -ne $lattr) } `
| Get-ChildItemNoFollowReparse -Recurse
}
}
}
}

打印路径的所有子项(包括符号链接(symbolic link)/连接),但在递归时不会跟随符号链接(symbolic link)/连接。

不需要 Get-ChildItem 的所有功能,因此没有将它们写入,但如果您只需要 -Recurse 和/或 -Force,这主要是一个直接替换。

在 Windows 7 和 2012 上的 PSv2 和 PSv4 中进行了(短暂)测试。无保证等。

(PS:在这些情况下讨厌动词-名词...)

关于powershell - 如何使 Get-ChildItem 不跟踪链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29763790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com