Question Scanner les lecteurs mappé, connecter un lecteur

Plus d'informations
il y a 12 ans 1 mois #16886 par Droxolf
Bonjour,

Voilà ce que j'aimerais pouvoir faire en début de mon script PS :

J'aimerais pourvoir vérifier si ma session est actuellement mappé vers certains disque réseau.
par exemple :
il faut que je sois connecté au lecteur :
-//serveur1/c$
-//serveur2/d$
-//serveur3/e$
-//serveur4/d$
-//serveur5/c$
donc je vérifie s'il y un lecteur de mappé correspondant à ces lecteurs.

Un fois vérifié et s'il manque par exemple :
-//serveur2/d$
-//serveur3/e$
il me demande mon mot de passe et mon user , puis mappe les deux disques avec ce même identifiant.

une fois tout mappé...
mon script se déroule...

Puis à la fin du script, il déconnecte tous les lecteurs mappé :
-//serveur1/c$
-//serveur2/e$
-//serveur3/d$
-//serveur4/f$
-//serveur5/c$


donc j'ai commencé à codé quelque bout :
[code:1]function Get-NextFreeDrive
{
68..90 | ForEach-Object { \"$([char]$_):\" } |
Where-Object { 'h:', 'k:', 'z:' -notcontains $_ } |
Where-Object { (new-object System.IO.DriveInfo $_).DriveType -eq 'noRootdirectory' }
}

$Credential = Get-Credential
$NetworkCredential = $Credential.GetNetworkCredential()
$ADM = \"$($NetworkCredential.Domain)\$($NetworkCredential.UserName)\"
$MDP = $NetworkCredential.Password
$connection = New-Object -com Wscript.Network
$testtt=$connection.MapNetworkDrive((Get-NextFreeDrive)[0],\"\\serveur1\c$\",\"False\",$ADM,$MDP)

[/code:1]

Ce code permet de mappé un disque avec une lettre de lecteur non attribué avec l’identification.

Et je sais que peux utiliser la fonction EnumNetworkDrives() pour scaner les lecteurs sur le path.
Et je veux si c'est possible, devoir faire une seul demande d'identification pour l'ensemble des lecteurs non mappé.

Enfin voilà, si vous pouvez m'aider :silly:

merci d'avance.<br><br>Message édité par: Droxolf, à: 6/02/14 11:46

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

Plus d'informations
il y a 12 ans 1 mois #16887 par Laurent Dardenne
Salut,
tu peux déjà construire ta liste de drives obligatoires, puis les comparer (Compare-Object) avec la liste des drives existant (Get-WmiObject Win32_Share).

Ensuite dans une boucle tu pourras créer ceux manquant, mais il me reste un doute sur l'usage de credential PS avec la classe WMI.

Tutoriels PowerShell

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

Plus d'informations
il y a 12 ans 1 mois #16889 par Philippe
Réponse de Philippe sur le sujet Re:Scanner les lecteurs mappé
Bonjour Laurent

tu ne voulais plutôt parlé de [code:1]Get-WmiObject -Class Win32_LogicalDisk -Filter \&quot;DriveType=4\&quot; |Format-Table[/code:1] pour avoir la liste de lecteur (ici filtrer sur les lecteur reseau) !?!? ;)

Get-WmiObject Win32_Share donne ... la liste des partages !! :blush:

pour le mot de passe, il est en clair :
[code:1](New-Object -ComObject WScript.Network).MapNetworkDrive(\&quot;T:\&quot;, \&quot;\\nomserveur\partage\&quot;, $false, \&quot;domain\login\&quot;, \&quot;password1234abcd\&quot;«»)[/code:1]

@Droxolf
a tu besoin d'aide pour la boucle que propose Laurent ?<br><br>Message édité par: 6ratgus, à: 7/02/14 11:04

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

Plus d'informations
il y a 12 ans 1 mois #16891 par Laurent Dardenne
6ratgus écrit:

tu ne voulais plutôt parlé de

Si :whistle: . Merci pour la correction :)

Tutoriels PowerShell

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

Plus d'informations
il y a 12 ans 1 mois #16893 par Droxolf
Réponse de Droxolf sur le sujet Re:Scanner les lecteurs mappé
@6ratgus

je veux bien un coup de main :whistle:

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

Plus d'informations
il y a 12 ans 1 mois #16899 par Philippe
Réponse de Philippe sur le sujet Re:Scanner les lecteurs mappé
un petit coup de main pour le week end

alors pour commencer la reference :

[code:1]$base = @(\&quot;\\srv-fichiers\partage\&quot;,
\&quot;\\srv-fichiers\services$\&quot;,
\&quot;\\srv-fichiers\test$\&quot;,
\&quot;\\srv-fichiers\TOTO\&quot;,
\&quot;\\srv-fichiers\donnees$\&quot;«»)[/code:1]

C'est la liste des partages auquel tu veut avoir accès. C'est un tableau de chaine de caractères.

Ensuite la liste de accès actuels de la session en cours :
[code:1]Get-WmiObject -Class Win32_LogicalDisk -Filter \&quot;DriveType=4\&quot; | foreach {$_.ProviderName} [/code:1]

ça renvois la liste des lecteurs logiques, et l'on garde que les lecteurs réseaux (filtre type 4). le foreach c'est pour avoir en résultat un tableau de caractères.

On va pouvoir le comparer avec la base de référence avec :
[code:1]Compare-Object -referenceobject $base -differenceobject $actuel -PassThru | foreach {$_}[/code:1]

au final on a un tableau de chaine que tu peut utilisé dans un foreach pour crée les lecteurs manquants avec :
[code:1](New-Object -ComObject WScript.Network).((Get-NextFreeDrive)[0], $_, $false, $login, $pass) [/code:1]


Le script complet et simplifier donne ca :

[code:1]
# recherche d'un lecteur non utilisé
function Get-NextFreeDrive
{
68..90 | ForEach-Object { \&quot;$([char]$_):\&quot; } |
Where-Object { 'h:', 'k:', 'z:' -notcontains $_ } |
Where-Object { (new-object System.IO.DriveInfo $_).DriveType -eq 'noRootdirectory' }
}

# liste des mappages qui donc être présent
$base = @(\&quot;\\srv-fichiers\partage\&quot;,
\&quot;\\srv-fichiers\services$\&quot;,
\&quot;\\srv-fichiers\test$\&quot;,
\&quot;\\srv-fichiers\TOTO\&quot;,
\&quot;\\srv-fichiers\donnees$\&quot;)

# liste des mappages actuel
Get-WmiObject -Class Win32_LogicalDisk -Filter \&quot;DriveType=4\&quot; | foreach {$_.ProviderName} |
# comparaison avec la base de ref
Compare-Object -referenceobject $base -PassThru | foreach {
# creation des lecteurs manquants
(New-Object -ComObject WScript.Network).((Get-NextFreeDrive)[0], $_, $false, $login, $pass) }


[/code:1]

il te reste la demande login et password a rajouter B)
celui que tu a ne convient pas. il crypte les mots de passes et il faut pas !!!

merci car j'avais besoin d'un script de ce genre mais pas courage de le faire jusqu'à aujourd'hui. :whistle:

j'ai pas tester le script final tu me dira si ca marche bien !

bon week end<br><br>Message édité par: 6ratgus, à: 7/02/14 16:48

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

Temps de génération de la page : 0.052 secondes
Propulsé par Kunena