Question
[Résolu] Créer raccourci depuis lecteurs réseaux
- DELBREUVE
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 14 ans 2 mois #11313
par DELBREUVE
[Résolu] Créer raccourci depuis lecteurs réseaux a été créé par DELBREUVE
Bonjour à tous,
Voilà, je suis nouveau sur le forum, je dois avouer que je suis aussi novice en script. dans le cadre d'un projet je dois faire un script qui me permettrait de tranformer mes lecteurs réseaux (Z: ...) en favoris réseaux.
Les favoris réseaux sont stockés dans le dossier suivant : C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Network Shortcuts\
Nous avons déjà un script qui nous créé un fichier CSV avec deux \"colones\", colone A : la lettre du lecteur, colone B : le chemin UNC. Ce fichier CSV est sous le chemin suivant : C:\Temp\NetworkDrivers.csv
J'ai fait quelques recherches et j'ai fait ceci :
Import-Csv C:\Temp\NetworkDrivers.csv -header (\"first\",\"second\") | foreach {
&
set oUrlLink = WshShell.CreateShortcut(strDesktop & \"\")
oUrlLink.TargetPath = $_.second
oUrlLink.Save
}
Mais une erreur m'indique que \"leperluette n'est pas autorisé\".
Auriez-vous une ou des solutions.
Je demande votre indulgence, je suis novice et je suis peut-être à côté de la plaque...
Cordialement,
Florent<br><br>Message édité par: Florent62, à: 26/03/12 09:58
Voilà, je suis nouveau sur le forum, je dois avouer que je suis aussi novice en script. dans le cadre d'un projet je dois faire un script qui me permettrait de tranformer mes lecteurs réseaux (Z: ...) en favoris réseaux.
Les favoris réseaux sont stockés dans le dossier suivant : C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Network Shortcuts\
Nous avons déjà un script qui nous créé un fichier CSV avec deux \"colones\", colone A : la lettre du lecteur, colone B : le chemin UNC. Ce fichier CSV est sous le chemin suivant : C:\Temp\NetworkDrivers.csv
J'ai fait quelques recherches et j'ai fait ceci :
Import-Csv C:\Temp\NetworkDrivers.csv -header (\"first\",\"second\") | foreach {
&
set oUrlLink = WshShell.CreateShortcut(strDesktop & \"\")
oUrlLink.TargetPath = $_.second
oUrlLink.Save
}
Mais une erreur m'indique que \"leperluette n'est pas autorisé\".
Auriez-vous une ou des solutions.
Je demande votre indulgence, je suis novice et je suis peut-être à côté de la plaque...
Cordialement,
Florent<br><br>Message édité par: Florent62, à: 26/03/12 09:58
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 14 ans 2 mois #11317
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Créer un raccourci depuis les lecteurs réseaux
Bonjour,
Pour créer des raccourcis réseau dans les favoris réseau, tu trouveras des informations ici .
Notamment dans la réponse de Shay Levy :
[code:1]$Const_NETHOOD = 0x13
$oShell = new-object -com Wscript.Shell
$oApp = new-object -com Shell.Application
$oFolder = $oApp.Namespace($Const_NETHOOD)
$oFolderItem = $oFolder.Self
$NetHood = $oFolderItem.Path
$shortcutName = \"Shortcut Name\"
$shortcutPath = \"\\server\share\"
$oShortcut = $oShell.CreateShortcut(\"$NetHood\$shortcutName.lnk\"«»)
$oShortcut.TargetPath = $shortcutPath
$oShortcut.Save()[/code:1]
Le dossier spécial \"Favoris Réseau\" (ou NetHood) correspond à un 'namespace' dont la constante hexadécimale est '0x13' (19 en décimal). D'autres informations sur les 'Special Folders' ici .
A toi ensuite d'adapter ce code en fonction de ton besoin, via comme tu le faisais, un 'Import-Csv' et en intégrant une partie de ce code dans une boucle 'foreach' (Une partie seulement, pas la peine de créer les objets COM en boucle, il suffit de les créer une première fois, avant le foreach).
Sous Windows 7, les raccourcis ainsi créés sont visibles dans \"Ordinateur\" => \"Emplacement réseau\", au même titre que les mappages réseau.
PS : Lorsque tu saisis ton message sur ce forum, penses à utiliser les balises de Code, cela permettra de rendre plus lisible ton code et évitera que les back slash soient supprimés de ton message
@ +
Matthew<br><br>Message édité par: Matthew BETTON, à: 13/03/12 20:49
Pour créer des raccourcis réseau dans les favoris réseau, tu trouveras des informations ici .
Notamment dans la réponse de Shay Levy :
[code:1]$Const_NETHOOD = 0x13
$oShell = new-object -com Wscript.Shell
$oApp = new-object -com Shell.Application
$oFolder = $oApp.Namespace($Const_NETHOOD)
$oFolderItem = $oFolder.Self
$NetHood = $oFolderItem.Path
$shortcutName = \"Shortcut Name\"
$shortcutPath = \"\\server\share\"
$oShortcut = $oShell.CreateShortcut(\"$NetHood\$shortcutName.lnk\"«»)
$oShortcut.TargetPath = $shortcutPath
$oShortcut.Save()[/code:1]
Le dossier spécial \"Favoris Réseau\" (ou NetHood) correspond à un 'namespace' dont la constante hexadécimale est '0x13' (19 en décimal). D'autres informations sur les 'Special Folders' ici .
A toi ensuite d'adapter ce code en fonction de ton besoin, via comme tu le faisais, un 'Import-Csv' et en intégrant une partie de ce code dans une boucle 'foreach' (Une partie seulement, pas la peine de créer les objets COM en boucle, il suffit de les créer une première fois, avant le foreach).
Sous Windows 7, les raccourcis ainsi créés sont visibles dans \"Ordinateur\" => \"Emplacement réseau\", au même titre que les mappages réseau.
PS : Lorsque tu saisis ton message sur ce forum, penses à utiliser les balises de Code, cela permettra de rendre plus lisible ton code et évitera que les back slash soient supprimés de ton message
@ +
Matthew<br><br>Message édité par: Matthew BETTON, à: 13/03/12 20:49
Connexion ou Créer un compte pour participer à la conversation.
- DELBREUVE
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 14 ans 2 mois #11334
par DELBREUVE
Réponse de DELBREUVE sur le sujet Re:Créer un raccourci depuis les lecteurs réseaux
Bonjour,
Merci pour votre aide.
Finalement, je récupère les infos depuis la base de registre et voilà ce j'ai fait pour le moment.
Le soucis c'est que je n'arrive pas à implémenter ma boucle for-each : le script ci-dessous ne fonctionne quand il n'y a qu'un seul mappage réseau.
[code:1]$a = get-itemproperty -path hkcu:\Network\*
$unc = $a.RemotePath
$name = $unc.Replace(\"\\",\"_\"«»)
$name = $name -Replace('__','')
$Const_NETHOOD = 0x13
$oShell = new-object -com Wscript.Shell
$oApp = new-object -com Shell.Application
$oFolder = $oApp.Namespace($Const_NETHOOD)
$oFolderItem = $oFolder.Self
$NetHood = $oFolderItem.Path
$shortcutName = \"$name\"
$shortcutPath = \"$unc\"
$oShortcut = $oShell.CreateShortcut(\"$NetHood\$shortcutName.lnk\"«»)
$oShortcut.TargetPath = $shortcutPath
$oShortcut.Save()[/code:1]
Merci d'avance pour votre aide !
Cordialement,
Florent
Merci pour votre aide.
Finalement, je récupère les infos depuis la base de registre et voilà ce j'ai fait pour le moment.
Le soucis c'est que je n'arrive pas à implémenter ma boucle for-each : le script ci-dessous ne fonctionne quand il n'y a qu'un seul mappage réseau.
[code:1]$a = get-itemproperty -path hkcu:\Network\*
$unc = $a.RemotePath
$name = $unc.Replace(\"\\",\"_\"«»)
$name = $name -Replace('__','')
$Const_NETHOOD = 0x13
$oShell = new-object -com Wscript.Shell
$oApp = new-object -com Shell.Application
$oFolder = $oApp.Namespace($Const_NETHOOD)
$oFolderItem = $oFolder.Self
$NetHood = $oFolderItem.Path
$shortcutName = \"$name\"
$shortcutPath = \"$unc\"
$oShortcut = $oShell.CreateShortcut(\"$NetHood\$shortcutName.lnk\"«»)
$oShortcut.TargetPath = $shortcutPath
$oShortcut.Save()[/code:1]
Merci d'avance pour votre aide !
Cordialement,
Florent
Connexion ou Créer un compte pour participer à la conversation.
- DELBREUVE
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 29
- Remerciements reçus 0
il y a 14 ans 1 mois #11380
par DELBREUVE
Réponse de DELBREUVE sur le sujet Re:Créer un raccourci depuis les lecteurs réseaux
J'ai résolu le problème avec l'aide d'un collègue.
Je mets le script utilisé, ça peut servir à d'autres :
[code:1]Get-ItemProperty -path hkcu:\Network\* | ForEach {
$OldOFS=$OFS
$unc = $_.RemotePath
$explode = $unc.split(\"\\"«»)
$OFS=''
$i=0
$explode | ForEach {
$explode[$i++] = ([string]$_[0]).ToUpper()+$_[1..$_.length]
}
$OFS='_'
$sharename = $explode[$explode.length-1]+\" sur \"+$explode[2..($explode.length-2)]
$OFS=$OldOFS
$Const_NETHOOD = 0x13
$oShell = new-object -com Wscript.Shell
$oApp = new-object -com Shell.Application
$oFolder = $oApp.Namespace($Const_NETHOOD)
$oFolderItem = $oFolder.Self
$NetHood = $oFolderItem.Path
$shortcutName = \"$sharename\"
$shortcutPath = \"$unc\"
$oShortcut = $oShell.CreateShortcut(\"$NetHood\$shortcutName.lnk\"«»)
$oShortcut.TargetPath = $shortcutPath
$oShortcut.Save()
}
[/code:1]
Bonne journée !
Je mets le script utilisé, ça peut servir à d'autres :
[code:1]Get-ItemProperty -path hkcu:\Network\* | ForEach {
$OldOFS=$OFS
$unc = $_.RemotePath
$explode = $unc.split(\"\\"«»)
$OFS=''
$i=0
$explode | ForEach {
$explode[$i++] = ([string]$_[0]).ToUpper()+$_[1..$_.length]
}
$OFS='_'
$sharename = $explode[$explode.length-1]+\" sur \"+$explode[2..($explode.length-2)]
$OFS=$OldOFS
$Const_NETHOOD = 0x13
$oShell = new-object -com Wscript.Shell
$oApp = new-object -com Shell.Application
$oFolder = $oApp.Namespace($Const_NETHOOD)
$oFolderItem = $oFolder.Self
$NetHood = $oFolderItem.Path
$shortcutName = \"$sharename\"
$shortcutPath = \"$unc\"
$oShortcut = $oShell.CreateShortcut(\"$NetHood\$shortcutName.lnk\"«»)
$oShortcut.TargetPath = $shortcutPath
$oShortcut.Save()
}
[/code:1]
Bonne journée !
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.039 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- [Résolu] Créer raccourci depuis lecteurs réseaux