Question [Résolu]Mauvais Raccourci...

Plus d'informations
il y a 15 ans 5 mois #8309 par Thierry
Bonjour à tous et d'avance merci pour votre aide.

Voici ce que je tente de faire :
Je connecte un disque dur contenant un système d'exploitation en USB. A l'aide d'un script je liste les fichiers \".lnk\" présents dans les dossiers \"recent\" et je tente d'accéder à la propriété \"Targetpath\" de chacun de ces fichiers pour déterminer le chemin du fichier original.

Le problème c'est que lorsque je retourne cette propriété le mécanisme de substitution de varaible se met en oeuvre et les chemins communiqués pointent vers mon système et pas vers celui de la source...d'où des résultats erronés.

Comment selon vous pourrais-je obtenir les résultats sans substitution des variables d'environnement que contient cette propriété ?

[code:1]
! $list contient les fichiers .lnk

# création d'un objet COM pour accéder aux propriétés des raccourcis

$link = New-Object -comObject \"WScript.Shell\"

$list | foreach-object {

$shortcut = $link.CreateShortcut($_.fullname)
$shortcut = $shortcut.TargetPath
$shortcut

}
[/code:1]<br><br>Message édité par: Arnaud, à: 17/12/10 16:35

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

Plus d'informations
il y a 15 ans 5 mois #8346 par xyz
Réponse de xyz sur le sujet Re:Mauvais Raccourci...
thierry92 écrit:

Le problème c'est que lorsque je retourne cette propriété le mécanisme de substitution de variable se met en oeuvre

Il me semble que c'est l'objet COM utilisé qui opère une substitution, PS ici ne gère que des string, si c'est vraiment le cas il n'y a pas de solution simple

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 5 mois #8364 par Thierry
Réponse de Thierry sur le sujet Re:Mauvais Raccourci...
Bonjour,

Une fois de plus merci pour votre réponse.

Je me doutais que cela pouvait poser problème alors au final je me tourne vers une solution bien moins classe mais efficace à base de strings.exe et de grep....

Après tout le principal c'est d'y arriver :)

Merci pour votre aide présente, passée (et à venir ???)

Thierry

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

Plus d'informations
il y a 15 ans 5 mois #8365 par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Mauvais Raccourci...
En effet, il semble bien que ce soit l'objet COM qui fasse la traduction des variables d'environnement à la volée, avant même que PowerShell ait la main.

On pourrait imaginer une solution qui vaut ce qu'elle vaut : puisque l'objet COM a traduit la variable en sa valeur (un chemin), on peut vérifier quelle variable d'environnement contient le chemin en question et remplacer le chemin par la variable elle-même dans le texte de la propriété TargetPath.

Problème : certaines variables d'environnement pointent sur le même chemin, comme par exemple %windir% et %systemroot% qui pointent toutes les deux vers le répertoire Windows du disque C: dans une installation standard.

Ce n'est un vrai problème que s'il y a un risque que cette équivalence soit propre au poste sur lequel on effectue la conversion, soit parce que ces mêmes variables désignent des chemins différents sur un autre poste, soit parce que la variable retenue par le mécanisme de conversion n'existe pas sur l'autre poste.

Mais bon, ça vaut peut-être le coup de creuser cette solution ? :)<br><br>Message édité par: janel, à: 17/12/10 15:34

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

Plus d'informations
il y a 15 ans 5 mois #8366 par xyz
Réponse de xyz sur le sujet Re:Mauvais Raccourci...
Le projet PSCX propose les bases (Pscx.Interop.CShellLink) pour créer un cmdlet autour de cette interface.
Il existe déjà la classe (cmdlet) Pscx.Commands.IO.NewShortcutCommand pour la création de raccourcis.
De mon côté je n'ai pas le temps de le coder, bien que j'en ai aussi l'utilité.
Tu peux aussi, sur le forum du projet, leur demander d'ajouter un cmdlet de lecture de raccourcis...

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 4 mois #8484 par Thierry
Réponse de Thierry sur le sujet Re:Mauvais Raccourci...
Merci à vous deux pour ces réponses et désolé pour le retour tardif...

Janel : J'avais effectivement pensé à cette solution pour contourner la substitution mais elle ne me satisfaisait pas car les variables d'environnement peuvent être modifiées et en conséquence il y avait un trop grand risque d'erreurcar mes analyses portent sur les disques de tierces personnes...

Laurent Dardenne : j'ai pris note de ta solution mais j'avoue ne pas avoir creusé le sujet qui m'apparaissait un peu complexe aux vus du résultat recherché. (bref j'ai pas été très courageux...)

Au final je suis passé par un \&quot;get-content RACCOURCI\&quot; suivi d'un string pour en tirer les infos utiles et cela marche très bien...bon c'est pas une solution très \&quot;powershellienne\&quot; mais ça fonctionne et c'est simple :)


Encore merci pour votre temps et vos réponses.

Joyeux réveillon à vous et tous les participants du forum.

Thierry

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

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