Dans ce tutoriel sur le « scripting », je vous propose de découvrir ou de voir comment gérer les lecteurs réseaux avec PowerShell et vous allez voir que ce n’est pas si « simple » que ça.
Dans le tutoriel : Mappage lecteur réseau : GPO et Script, j’explique comment mapper un lecteur réseau avec une stratégie de groupe en utilisant et comment le faire avec un script.
Avec PowerShell, il existe plusieurs façons de mapper un lecteur réseau et ici nous allons en voir 3 et vous allez voir que chacune à ses particularités avec ses avantages et ses inconvénients
Pour illustrer ce tutoriel, j’ai partagé un dossier share (C:\Share) accessible à tous le monde sur un serveur (LAB-DC1).
Dans le dossier Share, j’ai ajouté un sous dossier Folder_1 et My_File_1.txt.
Maintenant que nous avons le contexte, nous allons voir comment mapper un lecteur réseau avec PowerShell
L’ensemble des commandes PowerShell ont été exécutées dans une fenêtre PowerShell ouverte en tant qu’administrateur.
Etant dans un environnement Active Directory, je n’ai pas eu besoin d’utiliser de paramètres d’authentification (Credential).
New-PSDrive
La première Cmdlet, que nous allons voir est New-PSDrive. Si l’on décompose PSDrive voici ce que l’on a : PowerShell Session Drive.
Cette commande permet de mapper un lecteur réseau dans la session PowerShell, de ce fait, le lecteur réseau ne sera pas disponible depuis l’Explorateur Windows, sauf si celui-ci est persistant avec une portée (Scope) Global
Pour mapper un partage réseau à l’aide de la cmldlet New-PSDrive, il faut à minima passer les paramètres suivants :
Paramètre | Valeur |
---|---|
-Name | Correspond au nom qui sera utilisé pour mapper le lecteur, il n’est pas obligatoire d’utiliser une lettre |
-Root | Correspond au chemin UNC du partage. |
-PSProvider | FileSystem : on indique ici le type de lecteur mappé |
Les paramètres suivants sont optionnels en fonction de votre environnement et de ce que vous souhaitez faire.
Paramètre | Valeur |
---|---|
-Credential | Permet de spécifier des informations d’identifications différentes que le compte en cours d’utilisation. Il faut utiliser la cmdlet Get-Credential . |
-Persist | Permet de rendre le lecteur permanant (persistant), en indiquant $true ou $false .Par défaut la valeur est à $false . |
-Description | Permet d’indiquer une courte description. |
Je vais maintenant vous montrez comment utiliser New-PSDrive pour mapper un partage réseau dans la session PowerShell.
New-PSDrive -Name "NameOfMappage" -Root "\\SERVER\NameOfShare" -PSProvider FileSystem
Si la commande a été correctement exécutée, elle retourne l’équivalent de Get-PSDrive :
Pour naviguer sur le partage, il faut utiliser la cmdlet Set-Location
.
<#
Set-Location -Path "NameOfMappage:"
It is necessary to add : after the name of the mapping
#>
Set-Location -Path "Share:"
Sur la capture ci-après, on peut voir que l’on s’est déplacé sur le partage qui a été mappé.
En utilisant la commande dir
, j’ai bien le contenu du dossier qui s’affiche.
Pour supprimer le partage mappé, il faut utiliser la cmdlet
Remove-PSDrive "NameOfMappage"
Vous l’aurez compris, mapper un partage avec New-PSDrive
est utile quand on travaille avec PowerShell où sur un serveur sans interface graphique.
New-SmbMapping
Maintenant, nous allons voir la cmdlet New-SmbMapping, qui va nous permettre de mapper un partage SMB.
Avec cette cmdlet, le partage réseau sera mappé sur une lettre et sera accessible par l’explorateur de fichiers en tant que lecteur réseau.
L’utilisation de New-SmbMapping requière de passer à minima les deux paramètres suivant :
Paramètre | Valeur |
---|---|
-LocalPath | Lettre utilisée pour mapper le serveur (P:) |
-RemotePath | Chemin UNC du partage. (\\SERVER\Share) |
Il est aussi possible de passer les paramètres suivants :
Paramètre | Valeur |
---|---|
-Username | Nom d’utilisateur |
-Password | Mot de passe du paramètre -Username |
-SaveCredentials | Permet de sauvegarde le couple de paramètre -Username / -Password |
-Persistent | Permet de rendre le lecteur permanant (persistant), en indiquant $true ou $false .Par défaut la valeur est à $false . |
D’autre paramètres sont disponibles, vous les trouverez sur la page Microsoft dédiée à la cmdlet New-SmbMapping.
Pour mapper le partage réseau en tant lecteur entrer la commande ci-dessous :
New-SmbMapping -LocalPath "S:" -RemotePath "\\LAB-DC1\Share"
La commande retourne un résumé de Get-SmbMapping .
Si vous allez dans l’explorateur de fichiers Windows, le lecteur est disponible.
Si le lecteur n’est pas disponible, il suffit de redémarrer, l’explorateur Windows. Depuis le gestionnaire des tâches, faire un clic droit dessus et cliquer sur Redémarrer.
Si vous avez utilisé le paramètre
-Persistent $true
, le lecteur réseau sera disponible à la prochaine ouverture de session normalement.
La cmdlet New-SmbMapping peut être utilisée dans des scripts d’ouverture de session, vue qu’elle nécessite de redémarrer l’Explorateur Windows, elle n’est pas forcément la plus adapté.
New-Object
La troisième et dernière solution, que je vous propose pour mapper un lecteur réseau avec PowerShell, c’est l’utilisateur de la cmdlet New-Object
et l’utilisation de l’objet WScript.Network,
cela ressemble de prêt au script que l’on peut faire avec du VBS.
Toujours lemême exemple, voici comment mapper le lecteur réseau :
# Load object
$Newwork = New-Object -ComObject "Wscript.Network"
# Map Network Drive
$Network.MapNetWorkDrive("S:", "\\LAB-DC1\Share")
Comment en VBS, le lecteur sera disponible immédiatement dans l’Explorateur Windows, il peut également être utilisé sans problème dans un script d’ouverture de session.
Conclusion
Vous savez maintenant comment mapper un lecteur réseau avec PowerShell, à vous de choisir la solution qui vont convient le mieux.