Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lister les utilisateurs d'un domaine ou groupe de travail

3 réponses
Avatar
zoo_h
Bonjour,

Je débute en WHS et j'ai quelques difficultés à réussir à créer un petit
script permettant de lister les machines connectées à un domaine et à en
connaitre les noms d'utilisateurs.
Je pensais utiliser :
set WshNetwork = WScript.CreateObject("WScript.Network")

WScript.Echo "Domaine = " & WshNetwork.UserDomain
WScript.Echo "Nom ordinateur = " & WshNetwork.ComputerName
WScript.Echo "Nom utilisateur = " & WshNetwork.UserName

Mais je n'ai pas trouvé comment lister tout le domaine.

Si quelqu'un peut m'aider !!

Merci d'avance !

3 réponses

Avatar
Philippe [MS]
Un exemple fourni par Microsoft :

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

' Script d'exemple pour l'environnement d'exécution de scripts Windows
'
' ------------------------------------------------------------------------
' Copyright (C) 1996 Microsoft Corporation
'
' Microsoft vous concède le droit d'utiliser, de modifier, de reproduire
' et de distribuer les exemple de fichiers d'application (et/ou toutes
' versions modifiées) comme vous l'entendez, à condition que vous
' reconnaissiez que Microsoft n'a aucune garantie, aucune obligation,
' et aucune responsabilité pour aucun des exemples de fichiers
' d'application.
' ------------------------------------------------------------------------
'
' Cet exemple montre comment utiliser l'objet WSHNetwork.
' Il lit les propriétés réseau (nom d'utilisateur et de l'ordinateur),
' connecte, déconnecte et énumère les lecteurs réseau.


L_Welcome_MsgBox_Message_Text = "Cet exemple montre comment utiliser
l'objet WSHNetwork."
L_Welcome_MsgBox_Title_Text = "Exemple pour l'environnement d'exécution
de scripts Windows"
Call Welcome()

'
****************************************************************************
****
' *
' * Objet réseau WSH.
' *

Dim WSHNetwork
Dim colDrives, SharePoint
Dim CRLF

CRLF = Chr(13) & Chr(10)
Set WSHNetwork = WScript.CreateObject("WScript.Network")


Function Ask(strAction)

' Cette fonction demande à l'utilisateur s'il veut effectuer une action
' spécifique et paramètre un code de retour ou quitte l'exécution
' du script suivant le bouton pressé par l'utilisateur. Cette fonction
' est appelée à divers points du script ci-dessous.

Dim intButton
intButton = MsgBox(strAction, _
vbQuestion + vbYesNo, _
L_Welcome_MsgBox_Title_Text )
Ask = intButton = vbYes
End Function

' **************************************************
' *
' * Affiche les propriétés de l'objet WSHNetwork
' *
' *
MsgBox "UserDomain" & Chr(9) & "= " & WSHNetwork.UserDomain & CRLF &
_
"UserName" & Chr(9) & "= " & WSHNetwork.UserName & CRLF &
_
"ComputerName" & Chr(9) & "= " & WSHNetwork.ComputerName,
_
vbInformation + vbOKOnly,
_
"Propriétés WSHNetwork"

' **************************************************
' *
' * WSHNetwork.AddNetworkDrive
' *
' *

Function TryMapDrive(intDrive, strShare)
Dim strDrive
strDrive = Chr(intDrive + 64) & ":"
On Error Resume Next
WSHNetwork.MapNetworkDrive strDrive, strShare
TryMapDrive = Err.Number = 0
End Function

If Ask("Voulez-vous connecter un lecteur réseau ?") Then
strShare = InputBox("Entrez le partage réseau auquel vous voulez vous
connecter ")
For intDrive = 26 To 5 Step -1
If TryMapDrive(intDrive, strShare) Then Exit For
Next

If intDrive <= 5 Then
MsgBox "Impossible de se connecter au partage. "
& _
"Il n'y a plus de lettre de lecteur disponible. " & _
CRLF
& _
"Veuillez déconnecter une connexion existante " & _
"et réessayer. ", _
vbExclamation + vbOkOnly, _
L_Welcome_MsgBox_Title_Text
Else
strDrive = Chr(intDrive + 64) & ":"
MsgBox "Connexion " & strShare & " au lecteur " & strDrive, _
vbInformation + vbOkOnly, _
L_Welcome_MsgBox_Title_Text

If Ask("Voulez-vous déconnecter le lecteur réseau que vous venez de
créer ?") Then
WSHNetwork.RemoveNetworkDrive strDrive

MsgBox "Déconnexion du lecteur " & strDrive, _
vbInformation + vbOkOnly, _
L_Welcome_MsgBox_Title_Text
End If
End If
End If


' **************************************************
' *
' * WSHNetwork.EnumNetworkDrive
' *
' *
'Demande à l'utilisateur s'il veut énumérer les lecteurs réseau
If Ask("Voulez-vous énumérer les lecteurs réseau ?") Then
'Énumère les lecteurs réseau dans un objet collection de type
WshCollection
Set colDrives = WSHNetwork.EnumNetworkDrives

'Si aucun lecteur réseau n'a été énuméré, alors l'utilisateur en est
'averti ; sinon, les lecteurs sont affichés
If colDrives.Count = 0 Then
MsgBox "Il n'y a pas de lecteur à énumérer.", _
vbInformation + vbOkOnly, _
L_Welcome_MsgBox_Title_Text
Else
strMsg = "Connexion en cours : " & CRLF
For i = 0 To colDrives.Count - 1 Step 2
strMsg = strMsg & CRLF & colDrives(i) & Chr(9) & colDrives(i +
1)
Next

MsgBox strMsg, _
vbInformation + vbOkOnly, _
L_Welcome_MsgBox_Title_Text

End If
End If

'
****************************************************************************
****
' *
' * Bienvenue
' *
Sub Welcome()
Dim intDoIt

intDoIt = MsgBox(L_Welcome_MsgBox_Message_Text, _
vbOKCancel + vbInformation, _
L_Welcome_MsgBox_Title_Text )
If intDoIt = vbCancel Then
WScript.Quit
End If
End Sub



































































Phil.


"zoo_h" wrote in message
news:
Bonjour,

Je débute en WHS et j'ai quelques difficultés à réussir à créer un petit
script permettant de lister les machines connectées à un domaine et à en
connaitre les noms d'utilisateurs.
Je pensais utiliser :
set WshNetwork = WScript.CreateObject("WScript.Network")

WScript.Echo "Domaine = " & WshNetwork.UserDomain
WScript.Echo "Nom ordinateur = " & WshNetwork.ComputerName
WScript.Echo "Nom utilisateur = " & WshNetwork.UserName

Mais je n'ai pas trouvé comment lister tout le domaine.

Si quelqu'un peut m'aider !!

Merci d'avance !

































































Avatar
Jean-Claude BELLAMY
Dans le message news: ,
zoo_h s'est ainsi exprimé:

Bonjour,

Je débute en WHS et j'ai quelques difficultés à réussir à créer
un petit script permettant de lister les machines connectées à un
domaine et à en connaitre les noms d'utilisateurs.
Je pensais utiliser :
set WshNetwork = WScript.CreateObject("WScript.Network")

WScript.Echo "Domaine = " & WshNetwork.UserDomain
WScript.Echo "Nom ordinateur = " & WshNetwork.ComputerName
WScript.Echo "Nom utilisateur = " & WshNetwork.UserName

Mais je n'ai pas trouvé comment lister tout le domaine.


L'objet WScript.Network est très limité !
Tu n'iras pas loin avec.

Pour énumérer comptes et machines, il faut pratiquer autrement.
P.ex. avec les objets "ADODB.Connection", "ADSystemInfo", "LDAP://", .. ou
avec WMI et la classe "Win32_NTDomain" , ...

On trouve plein d'exemples très intéressants dans le "Script Center
Repository" et le "ScriptOMatic" :
http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid´cb2678-dafb-4e30-b2da-b8814fe2da5a


P.ex. pour énumérer les utilisateurs :
-------- couper ici --------
On Error Resume Next
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
' Le domaine est à modifier ci-dessous :
Domain="dc=jcb,dc=org"
Set objOU = GetObject("LDAP://cn=Users," & Domain)
ObjOU.Filter= Array("user")

For Each objUser in objOU
arrMemberOf = objUser.Getex("memberof")
If Err.Number <> E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo objUser.cn & " est membre de : "
For Each Group in arrMemberOf
WScript.Echo vbTab & Group
Next
Else
WScript.Echo objUser.cn & " attribut 'membre de' non défini"
Err.Clear
End If
script=objUser.Get("scriptPath")
If Err.Number <> E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "script de connexion : " & script
else
WScript.Echo "script de connexion non défini"
end if
Wscript.Echo VbCrLf
Next
-------- couper ici --------

Tu peux aussi utiliser l'objet "WinNT://" (je l'utilise souvent dans mes
scripts)
P.ex. pour énumérer les machines d'un domaine :
set oWinnt=GetObject("WinNT://" & domain)
For each oDomainItem in oWinnt
classe=oDomainItem.Class
If classe="Computer" Then
Computer=oDomainItem.Name
....
end if
Next
...


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org *


Avatar
zoo_h
Merci beaucoup !
Je vais décortiquer tout cela avec attention ...


Dans le message news: ,
zoo_h s'est ainsi exprimé:

Bonjour,

Je débute en WHS et j'ai quelques difficultés à réussir à créer
un petit script permettant de lister les machines connectées à un
domaine et à en connaitre les noms d'utilisateurs.
Je pensais utiliser :
set WshNetwork = WScript.CreateObject("WScript.Network")

WScript.Echo "Domaine = " & WshNetwork.UserDomain
WScript.Echo "Nom ordinateur = " & WshNetwork.ComputerName
WScript.Echo "Nom utilisateur = " & WshNetwork.UserName

Mais je n'ai pas trouvé comment lister tout le domaine.


L'objet WScript.Network est très limité !
Tu n'iras pas loin avec.

Pour énumérer comptes et machines, il faut pratiquer autrement.
P.ex. avec les objets "ADODB.Connection", "ADSystemInfo", "LDAP://", .. ou
avec WMI et la classe "Win32_NTDomain" , ...

On trouve plein d'exemples très intéressants dans le "Script Center
Repository" et le "ScriptOMatic" :
http://www.microsoft.com/downloads/details.aspx?displaylang=en&familyid´cb2678-dafb-4e30-b2da-b8814fe2da5a


P.ex. pour énumérer les utilisateurs :
-------- couper ici --------
On Error Resume Next
Const E_ADS_PROPERTY_NOT_FOUND = &h8000500D
' Le domaine est à modifier ci-dessous :
Domain="dc=jcb,dc=org"
Set objOU = GetObject("LDAP://cn=Users," & Domain)
ObjOU.Filter= Array("user")

For Each objUser in objOU
arrMemberOf = objUser.Getex("memberof")
If Err.Number <> E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo objUser.cn & " est membre de : "
For Each Group in arrMemberOf
WScript.Echo vbTab & Group
Next
Else
WScript.Echo objUser.cn & " attribut 'membre de' non défini"
Err.Clear
End If
script=objUser.Get("scriptPath")
If Err.Number <> E_ADS_PROPERTY_NOT_FOUND Then
WScript.Echo "script de connexion : " & script
else
WScript.Echo "script de connexion non défini"
end if
Wscript.Echo VbCrLf
Next
-------- couper ici --------

Tu peux aussi utiliser l'objet "WinNT://" (je l'utilise souvent dans mes
scripts)
P.ex. pour énumérer les machines d'un domaine :
set oWinnt=GetObject("WinNT://" & domain)
For each oDomainItem in oWinnt
classe=oDomainItem.Class
If classe="Computer" Then
Computer=oDomainItem.Name
....
end if
Next
...


--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] - http://www.bellamyjc.org
http://www.bellamyjc.org *