Question
Exclure les Reparse points d'une recherche...
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 15 ans 1 mois #9329
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Exclure les Reparse points d'une recherche...
thierry92 écrit:
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
Je ne pense pas qu'on puisse obtenir l'info sans interroger chaque répertoire constituant le chemin.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...
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.
- Thierry
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 42
- Remerciements reçus 0
il y a 15 ans 1 mois #9330
par Thierry
Réponse de Thierry sur le sujet Re:Exclure les Reparse points d'une recherche...
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
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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Exclure les Reparse points d'une recherche...