Si vous avez l'habitude de faire un net use avec l'invite de commande aujourd'hui je vous propose l'équivalent en PowerShell, pour connecter un partage UNC comme un lecteur réseau.
Rien de bien compliqué, mais rien de bien évident non plus, bref c'est du PowerShell quoi ^^
Connexion
Et voici le script de connexion :
# VARIABLES $utilisateur = "domaine\utilisateur" $mdp ="LeMot2Passe" $UNC = "\\monserveur\partage\dossier" $lettre = "Z" # sans ":\" ############################################################ # NE RIEN TOUCHER EN DESSOUS - début du script $SecureString = ConvertTo-SecureString $mdp -AsPlainText -Force $lettrePath = $lettre + ":\" $Credentials = New-Object System.Management.Automation.PSCredential $utilisateur, $SecureString New-PSDrive -name $lettre -PSProvider FileSystem -Root $UNC -Persist -Credential $Credentials if((Test-Path -Path $lettrePath )) { write "Connexion lecteur: OK" } else { write "ERREUR : connexion lecteur reseau impossible" }
Vous devez simplement modifier les variables au début, nom de connexion format Windows 2000 ou classique utilisateur@maboite.tld.
La lettre de lecteur sera "Z:\" pensez aussi à la modifier si vous utilisez déjà cette lettre.
Déconnexion
Et pour déconnecter le lecteur réseau mappé :
Remove-PSDrive $lettre -force if(!(Test-Path -Path $lettrePath )) { write "Deconnexion lecteur: OK" } else { write "ERREUR: déconnexion lecteur impossible" }
Conclusion
Il existe sûrement une tonne de scripts similaires sur le net, mais comme d'habitude j'ai grappillé des infos à droites et à gauche et j'ai écrit celui que je vous partage aujourd'hui.
Commentaires et améliorations sont les bienvenus.
Auteur : Mr Xhark
Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter
9 commentaires
Bonjour,
Merci pour ton script, par contre $credential devrait être $Credentials sur la ligne New-PSDrive.
Cordialement
@Dimitri: corrigé merci!
Salut,
Dans certaines conditions, pour que le lecteur ne soit pas uniquement mappé dans le contexte du powershell, il faut rajouter "-Scope Global"
@Overcrash: merci pour le complément d'info!
Merci pour votre script très intéressant. J'ai essayé de le modifier selon mes besoins à savoir qu'il remplace l'action de monter n lecteurs réseaux manuellement depuis l'explorateur de fichier Windows. L'utilisateur exécutera ce script à la place quand il démarrera son ordi (je devrai même chercher à faire exécuter ce script au démarrage de la session...) et l'on doit voir les lecteurs réseaux depuis l'explorateur Windows bien sûr... bref ça donnerait ça. Est-ce que vous trouvez cela cohérent (je ne peux pas le tester tout de suite) ?
###### Début script : ######
# je ne le veux pas persistant, je dois pouvoir demander le mot de passe et monter plusieurs lecteurs réseau en même temps
# VARIABLES
$mdp ="LeMot2Passe"
$UNC1 = "\\192.168.1.111\Archive1"
$UNC2 = "\\192.168.1.111\Archive2"
$UNC3 = "\\192.168.1.111\Archive3"
$lettre1 = "X" # sans ":\"
$lettre2 = "Y"
$lettre3 = "Z"
############################################################
# NE RIEN TOUCHER EN DESSOUS - début du script
$lettrePath1 = $lettre1 + ":\"
$lettrePath2 = $lettre2 + ":\"
$lettrePath3 = $lettre3 + ":\"
#$Credentials = New-Object System.Management.Automation.PSCredential $utilisateur, $SecureString
$Credentials = Get-Credential
New-PSDrive -name $lettre1 -PSProvider FileSystem -Root $UNC1 -Credential $Credentials -Scope Global
New-PSDrive -name $lettre2 -PSProvider FileSystem -Root $UNC2 -Credential $Credentials -Scope Global
New-PSDrive -name $lettre3 -PSProvider FileSystem -Root $UNC3 -Credential $Credentials -Scope Global
if((Test-Path -Path $lettrePath1 )) {
write "Connexion lecteur 1 : OK"
} else {
write "ERREUR : connexion lecteur reseau 1 impossible"
}
if((Test-Path -Path $lettrePath2 )) {
write "Connexion lecteur 2 : OK"
} else {
write "ERREUR : connexion lecteur reseau 2 impossible"
}
if((Test-Path -Path $lettrePath3 )) {
write "Connexion lecteur 3 : OK"
} else {
write "ERREUR : connexion lecteur reseau 3 impossible"
}
###### Fin script : ######
Merci pour votre script très intéressant.
J'ai essayé de le modifier selon mes besoins à savoir qu'il remplace l'action de monter n lecteurs réseaux manuellement depuis l'explorateur de fichier Windows. L'utilisateur exécutera ce script à la place quand il démarrera son ordi (je devrai même chercher à faire exécuter ce script au démarrage de la session...) et l'on doit voir les lecteurs réseaux depuis l'explorateur Windows bien sûr... bref ça donnerait ça.
Est-ce que vous trouvez cela cohérent (je ne peux pas le tester tout de suite) ?
@Datasudiste: oui pas de souci avec le script, testez-le 🙂
@Mr Xhark: Merci pour votre réponse.
J'ai essayé le code : pour le moment, je dois le lancer par un clique droit "exécuter dans PowerShell. J'ai eu un message me proposant de modifier la politique de sécurité vis à vis des scripts. J'ai répondu "non" et cela n'a pas empêché l'exécution du script. Identifiant et mot de passe me sont demandés comme prévu.
Il monte effectivement les lecteurs réseau puisqu'en collant le raccourcis "\\192.168.1.111\Archive1", je peux effectivement me connecter sans qu'il me soit demandé de mot de passe... mais les lettres de lecteur réseau semblent ne servir à rien : je ne vois pas les lecteurs réseau dans l'explorateur Windows, dans "Poste de travail" et si je clique sur un lien avec l'URL : X:\Archive1, ça ne marche pas...
Je croyais que c'était ce que permettait l'option "-Scope Global" ?
@Datasudiste: Tu confonds 2 choses :