Question Exclure les Reparse points d'une recherche...

Plus d'informations
il y a 15 ans 1 mois #9329 par xyz
thierry92 écrit:

La seule solution que j'ai trouvée c'est de lister tous les RP puis tous les \".lnk\" et de ne garder que les \".lnk\" ne contenant pas un RP dans leur chemin...

Je ne pense pas qu'on puisse obtenir l'info sans interroger chaque répertoire constituant le chemin.
Sinon il faut consulter les API Win32, ou encore les source de PSCX v2 [code:1]:..\Trunk\Src\Pscx.Core\IO\Ntfs\ReparsePointHelper.cs[/code:1]Un début de solution :
[code:1]
#from stackoverflow.com/questions/817794/find-...ymlink-in-powershell
function Test-ReparsePoint([string]$path) {
$file = Get-Item $path -Force -ea 0
return [bool]($file.Attributes -band [IO.FileAttributes]::ReparsePoint)
}

function Find-ReparsePoint([string]$path) {
if (Test-Path -PathType Leaf -Path $Path)
{$Path=Split-Path $Path -Parent}
$Result=$False
Write-Debug \"Begin : $Path\"

do {
$Quit=Test-ReparsePoint $Path
if ($Quit -eq $False)
{
$Path=Split-Path $Path -Parent
Write-Debug \"Next : $Path\"
if ($Path -eq [String]::Empty)
{
$Quit=$True
Write-Debug \"Analyse complète du chemin, aucun reparsepoint trouvé\"
}
}
else
{
$Result=$True
Write-Debug \"Reparsepoint trouvé : $Path\"
}
}
while ($Quit -eq $false)

Write-Debug \"End : $Path\"
return $Result
}
[/code:1]
Un exemple :
[code:1]
$DebugPreference=\"Continue\"
Find-ReparsePoint \"C:\Temp\test_PS\test_PS\Folder1\RP\Raccourci vers Folder3.lnk\"
Find-ReparsePoint \"C:\Temp\test_PS\test_PS\Folder1\"
$DebugPreference=\"SilentlyContinue\"

#Sans les reparsepoints
gci -rec -filter \"*.lnk\" |
where-object {
-not (Find-ReparsePoint $_.Fullname )
} | ft fullname

#Seulement les reparsepoints
gci -rec -filter \"*.lnk\" |
where-object {
Find-ReparsePoint $_.Fullname
} | ft fullname
[/code:1]
Reste à tester d'autres cas, par exemple passer une chaîne vide, un chemin/fichier inexistant, etc<br><br>Message édité par: Laurent Dardenne, à: 4/04/11 13:03

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 15 ans 1 mois #9330 par Thierry
Merci beaucoup pour ces éléments de réponse et le temps que tu y as consacré.

Je vais tester tout cela cette semaine et je ferai un retour dès que possible.

Bonne fin de journée,

Thierry

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.036 secondes
Propulsé par Kunena