Question
Scanner les lecteurs mappé, connecter un lecteur
- Droxolf
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
il y a 12 ans 1 mois #16886
par Droxolf
Scanner les lecteurs mappé, connecter un lecteur a été créé 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
merci d'avance.<br><br>Message édité par: Droxolf, à: 6/02/14 11:46
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
merci d'avance.<br><br>Message édité par: Droxolf, à: 6/02/14 11:46
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 1 mois #16887
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Scanner les lecteurs mappé, connecter un lecteur
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.
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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
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 \"DriveType=4\" |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 !!
pour le mot de passe, il est en clair :
[code:1](New-Object -ComObject WScript.Network).MapNetworkDrive(\"T:\", \"\\nomserveur\partage\", $false, \"domain\login\", \"password1234abcd\"«»)[/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
tu ne voulais plutôt parlé de [code:1]Get-WmiObject -Class Win32_LogicalDisk -Filter \"DriveType=4\" |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 !!
pour le mot de passe, il est en clair :
[code:1](New-Object -ComObject WScript.Network).MapNetworkDrive(\"T:\", \"\\nomserveur\partage\", $false, \"domain\login\", \"password1234abcd\"«»)[/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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 1 mois #16891
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Scanner les lecteurs mappé
6ratgus écrit:
. Merci pour la correction
Situ ne voulais plutôt parlé de
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Droxolf
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 7
- Remerciements reçus 0
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
je veux bien un coup de main
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
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 = @(\"\\srv-fichiers\partage\",
\"\\srv-fichiers\services$\",
\"\\srv-fichiers\test$\",
\"\\srv-fichiers\TOTO\",
\"\\srv-fichiers\donnees$\"«»)[/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 \"DriveType=4\" | 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 { \"$([char]$_):\" } |
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 = @(\"\\srv-fichiers\partage\",
\"\\srv-fichiers\services$\",
\"\\srv-fichiers\test$\",
\"\\srv-fichiers\TOTO\",
\"\\srv-fichiers\donnees$\")
# liste des mappages actuel
Get-WmiObject -Class Win32_LogicalDisk -Filter \"DriveType=4\" | 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
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.
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
alors pour commencer la reference :
[code:1]$base = @(\"\\srv-fichiers\partage\",
\"\\srv-fichiers\services$\",
\"\\srv-fichiers\test$\",
\"\\srv-fichiers\TOTO\",
\"\\srv-fichiers\donnees$\"«»)[/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 \"DriveType=4\" | 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 { \"$([char]$_):\" } |
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 = @(\"\\srv-fichiers\partage\",
\"\\srv-fichiers\services$\",
\"\\srv-fichiers\test$\",
\"\\srv-fichiers\TOTO\",
\"\\srv-fichiers\donnees$\")
# liste des mappages actuel
Get-WmiObject -Class Win32_LogicalDisk -Filter \"DriveType=4\" | 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
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.
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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Scanner les lecteurs mappé, connecter un lecteur