Question [Résolu] Créer raccourci depuis lecteurs réseaux

Plus d'informations
il y a 14 ans 2 mois #11313 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

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

Plus d'informations
il y a 14 ans 2 mois #11317 par Matthew BETTON
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 = \&quot;Shortcut Name\&quot;
$shortcutPath = \&quot;\\server\share\&quot;
$oShortcut = $oShell.CreateShortcut(\&quot;$NetHood\$shortcutName.lnk\&quot;«»)
$oShortcut.TargetPath = $shortcutPath
$oShortcut.Save()[/code:1]

Le dossier spécial \&quot;Favoris Réseau\&quot; (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 \&quot;Ordinateur\&quot; =&gt; \&quot;Emplacement réseau\&quot;, 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.

Plus d'informations
il y a 14 ans 2 mois #11334 par DELBREUVE
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(\&quot;\\&quot;,\&quot;_\&quot;«»)
$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 = \&quot;$name\&quot;
$shortcutPath = \&quot;$unc\&quot;
$oShortcut = $oShell.CreateShortcut(\&quot;$NetHood\$shortcutName.lnk\&quot;«»)
$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.

Plus d'informations
il y a 14 ans 1 mois #11380 par DELBREUVE
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(\&quot;\\&quot;«»)

$OFS=''
$i=0
$explode | ForEach {
$explode[$i++] = ([string]$_[0]).ToUpper()+$_[1..$_.length]
}


$OFS='_'
$sharename = $explode[$explode.length-1]+\&quot; sur \&quot;+$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 = \&quot;$sharename\&quot;
$shortcutPath = \&quot;$unc\&quot;
$oShortcut = $oShell.CreateShortcut(\&quot;$NetHood\$shortcutName.lnk\&quot;«»)
$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.038 secondes
Propulsé par Kunena