PowerShell et les lecteurs réseaux

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).

Shared folder

Dans le dossier Share, j’ai ajouté un sous dossier Folder_1 et My_File_1.txt.

Content of folder Share

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ètreValeur
-NameCorrespond au nom qui sera utilisé pour mapper le lecteur, il n’est pas obligatoire d’utiliser une lettre
-RootCorrespond au chemin UNC du partage.
-PSProviderFileSystem : 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ètreValeur
-CredentialPermet de spécifier des informations d’identifications différentes que le compte en cours d’utilisation. Il faut utiliser la cmdlet Get-Credential.
-PersistPermet de rendre le lecteur permanant (persistant), en indiquant $true ou $false.
Par défaut la valeur est à $false.
-DescriptionPermet d’indiquer une courte description.

Je vais maintenant vous montrez comment utiliser New-PSDrive pour mapper un partage réseau dans la session PowerShell.

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.

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.

dir on share folder mapped with new-psdrive

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ètreValeur
-LocalPathLettre utilisée pour mapper le serveur (P:)
-RemotePathChemin UNC du partage. (\\SERVER\Share)

Il est aussi possible de passer les paramètres suivants :

ParamètreValeur
-UsernameNom d’utilisateur
-PasswordMot de passe du paramètre -Username
-SaveCredentialsPermet de sauvegarde le couple de paramètre -Username / -Password
-PersistentPermet 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 :

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 :

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.




Laisser un commentaire