Je cherche à lister tout simplement les groupes du domaine.
J'ai fait un petit script un peu plus pratique qui liste, suivant les
paramètres, les groupes, les ordinateurs, ou les users. Et même les users de
chaque groupe (pour un besoin ponctuel).
Le problème est que je viens de remarquer que certains groupes manquent dans
ma liste. Ce sont des groupes globaux de distribution.
J'ai donc l'impression que les groupes globaux de sécurité sont bien vus,
mais pas les groupes globaux de distribution.
Et là, je ne vois pas comment faire ... J'ai besoin de ces groupes dans ma
liste.
Est-ce parce-que je passe par "WinNT://" et non par LDAP (je trouve cela
beaucoup plus pratique, pas besoin de spécifier une OU et j'ai l'habitude de
faire comme ca...).
Voici mon script :
Option Explicit
'Const cDom = "KRJ.GIE"
Dim oDom,oObj,oExcel,oSheet,oArgs,oArg,oNetwork
Dim oUser,oGroup
Dim nb_lin,tDomain
Dim bExport_to_Excel
Dim bUsers,bGroups,bComputers
Set oNetwork = CreateObject("WScript.Network")
Set oArgs = WScript.Arguments
tDomain = oNetwork.UserDomain
wscript.echo tDomain
If(oArgs.Count<>0) Then
For each oArg in oArgs
Select Case UCase(oArg)
Case "/NOEXCEL" wscript.echo "OK, I promise, I won't user Excel :-("
bExport_to_Excel = False
Case "/GROUPS" wscript.echo "Listing groups"
bGroups = True
Case "/USERS" wscript.echo "Listing users"
bUsers = True
Case "/COMPUTERS" wscript.echo "Listing computers"
bComputers = True
Case Else wscript.echo "Ouch, bad argument !"
wscript.echo "Possible arguments : /noexcel /groups /users"
wscript.quit 0
End Select
Next
Else
wscript.echo "Possible arguments : /noexcel /groups /users /computers"
wscript.quit 0
End If
If(bExport_to_Excel) Then
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
oExcel.Workbooks.Add
Set oSheet = oExcel.ActiveWorkbook.Worksheets(1)
oSheet.Name = tDomain & "Domain Users"
End If
For Each oObj in oDom
wscript.echo "---"&oObj.Name
If(oObj.Class = "User") And bUsers Then
wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & oObj.FullName
If(bExport_to_Excel) Then
oSheet.Cells(nb_lin,1).Value = oObj.Class
oSheet.Cells(nb_lin,2).Value = oObj.Name
oSheet.Cells(nb_lin,3).Value = oObj.FullName
nb_lin = nb_lin+1
End If
End If
If(oObj.Class = "Group") And bGroups Then
wscript.echo oObj.Class & vbtab & oObj.Name
'Si on doit également lister les membres de chaque groupe du domaine :
'Problème : le filtrage sur .Class ne fonctionne pas et renvoie également
les computers membres :-(
On Error Resume Next
For each oUser in oObj.Members
If(oUser.Class = "User") Then
wscript.echo vbtab & vbtab & "Membre du groupe " & Chr(34) & oObj.Name &
Chr(34) & " :" & vbtab & oUser.Name & vbtab & oUser.FullName & vbtab &
oUser.Class
End If
Next
On Error GoTo 0
If(bExport_to_Excel) Then
oSheet.Cells(nb_lin,1).Value = oObj.Class
oSheet.Cells(nb_lin,2).Value = oObj.Name
nb_lin = nb_lin+1
End If
End If
If(oObj.Class = "Computer") And bComputers Then
wscript.echo oObj.Class & vbtab & oObj.Name
If(bExport_to_Excel) Then
oSheet.Cells(nb_lin,1).Value = oObj.Class
oSheet.Cells(nb_lin,2).Value = oObj.Name
nb_lin = nb_lin+1
End If
End If
If((oObj.Class <> "Group") and (oObj.Class <> "User") And (oObj.Class <>
"Computer") And (oObj.Class <> "Schema")) Then
wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & "!!!"
wscript.echo oObj.Name & vbtab & "!!!"
'MsgBox oObj.Class & vbtab & oObj.Name
End If
Next
If(bExport_to_Excel) Then
oExcel.ActiveWorkbook.SaveAs ScriptPath() & WScript.ScriptName & "_" &
tDomain & ".xls"
oExcel.ActiveWorkbook.Close
oExcel.Quit()
Set oExcel = Nothing
End If
Function ScriptPath()
ScriptPath = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) -
Len(WScript.ScriptName))
End Function
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Marc Lognoul [MVP]
Bonjour,
En effet, l'interface ADSI WinNT ne permet pas d'exploiter tous les objets présents à partir de Windows 2000, seul LDAP le peut. Si vous ne souhaitez spécifier d'OU, vous pouvez utiliser le distinguished name du domain et utiliser la profondeur de recherche "Subtree".
-- Marc Lognoul [MCSE, MCTS, MVP] Heureux celui qui a pu pénétrer les causes secrètes des choses Happy is the one who could enter the secret causes of things Blog EN: http://www.marc-antho-etc.net/blog/ Blog FR: http://www.marc-antho-etc.net/blogfr/
"magnum42" wrote in message news:
Bonjour,
Je cherche à lister tout simplement les groupes du domaine. J'ai fait un petit script un peu plus pratique qui liste, suivant les paramètres, les groupes, les ordinateurs, ou les users. Et même les users de chaque groupe (pour un besoin ponctuel). Le problème est que je viens de remarquer que certains groupes manquent dans ma liste. Ce sont des groupes globaux de distribution. J'ai donc l'impression que les groupes globaux de sécurité sont bien vus, mais pas les groupes globaux de distribution. Et là, je ne vois pas comment faire ... J'ai besoin de ces groupes dans ma liste.
Est-ce parce-que je passe par "WinNT://" et non par LDAP (je trouve cela beaucoup plus pratique, pas besoin de spécifier une OU et j'ai l'habitude de faire comme ca...).
Voici mon script :
Option Explicit
'Const cDom = "KRJ.GIE" Dim oDom,oObj,oExcel,oSheet,oArgs,oArg,oNetwork Dim oUser,oGroup Dim nb_lin,tDomain Dim bExport_to_Excel Dim bUsers,bGroups,bComputers
Set oNetwork = CreateObject("WScript.Network") Set oArgs = WScript.Arguments tDomain = oNetwork.UserDomain wscript.echo tDomain
If(oArgs.Count<>0) Then For each oArg in oArgs Select Case UCase(oArg) Case "/NOEXCEL" wscript.echo "OK, I promise, I won't user Excel :-(" bExport_to_Excel = False Case "/GROUPS" wscript.echo "Listing groups" bGroups = True Case "/USERS" wscript.echo "Listing users" bUsers = True Case "/COMPUTERS" wscript.echo "Listing computers" bComputers = True Case Else wscript.echo "Ouch, bad argument !" wscript.echo "Possible arguments : /noexcel /groups /users" wscript.quit 0 End Select Next Else wscript.echo "Possible arguments : /noexcel /groups /users /computers" wscript.quit 0 End If
If(bExport_to_Excel) Then Set oExcel = CreateObject("Excel.Application") oExcel.Visible = True oExcel.Workbooks.Add Set oSheet = oExcel.ActiveWorkbook.Worksheets(1) oSheet.Name = tDomain & "Domain Users" End If
For Each oObj in oDom wscript.echo "---"&oObj.Name If(oObj.Class = "User") And bUsers Then wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & oObj.FullName If(bExport_to_Excel) Then oSheet.Cells(nb_lin,1).Value = oObj.Class oSheet.Cells(nb_lin,2).Value = oObj.Name oSheet.Cells(nb_lin,3).Value = oObj.FullName nb_lin = nb_lin+1 End If End If If(oObj.Class = "Group") And bGroups Then wscript.echo oObj.Class & vbtab & oObj.Name 'Si on doit également lister les membres de chaque groupe du domaine : 'Problème : le filtrage sur .Class ne fonctionne pas et renvoie également les computers membres :-( On Error Resume Next For each oUser in oObj.Members If(oUser.Class = "User") Then wscript.echo vbtab & vbtab & "Membre du groupe " & Chr(34) & oObj.Name & Chr(34) & " :" & vbtab & oUser.Name & vbtab & oUser.FullName & vbtab & oUser.Class End If Next On Error GoTo 0 If(bExport_to_Excel) Then oSheet.Cells(nb_lin,1).Value = oObj.Class oSheet.Cells(nb_lin,2).Value = oObj.Name nb_lin = nb_lin+1 End If End If If(oObj.Class = "Computer") And bComputers Then wscript.echo oObj.Class & vbtab & oObj.Name If(bExport_to_Excel) Then oSheet.Cells(nb_lin,1).Value = oObj.Class oSheet.Cells(nb_lin,2).Value = oObj.Name nb_lin = nb_lin+1 End If End If
If((oObj.Class <> "Group") and (oObj.Class <> "User") And (oObj.Class <> "Computer") And (oObj.Class <> "Schema")) Then wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & "!!!" wscript.echo oObj.Name & vbtab & "!!!" 'MsgBox oObj.Class & vbtab & oObj.Name End If Next
If(bExport_to_Excel) Then oExcel.ActiveWorkbook.SaveAs ScriptPath() & WScript.ScriptName & "_" & tDomain & ".xls" oExcel.ActiveWorkbook.Close oExcel.Quit() Set oExcel = Nothing End If
Function ScriptPath() ScriptPath = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - Len(WScript.ScriptName)) End Function
En effet, l'interface ADSI WinNT ne permet pas d'exploiter tous les objets
présents à partir de Windows 2000, seul LDAP le peut.
Si vous ne souhaitez spécifier d'OU, vous pouvez utiliser le distinguished
name du domain et utiliser la profondeur de recherche "Subtree".
--
Marc Lognoul [MCSE, MCTS, MVP]
Heureux celui qui a pu pénétrer les causes secrètes des choses
Happy is the one who could enter the secret causes of things
Blog EN: http://www.marc-antho-etc.net/blog/
Blog FR: http://www.marc-antho-etc.net/blogfr/
"magnum42" <magnum42@discussions.microsoft.com> wrote in message
news:4FCBA957-6832-435B-A0DE-A51A8530E6F1@microsoft.com...
Bonjour,
Je cherche à lister tout simplement les groupes du domaine.
J'ai fait un petit script un peu plus pratique qui liste, suivant les
paramètres, les groupes, les ordinateurs, ou les users. Et même les users
de
chaque groupe (pour un besoin ponctuel).
Le problème est que je viens de remarquer que certains groupes manquent
dans
ma liste. Ce sont des groupes globaux de distribution.
J'ai donc l'impression que les groupes globaux de sécurité sont bien vus,
mais pas les groupes globaux de distribution.
Et là, je ne vois pas comment faire ... J'ai besoin de ces groupes dans ma
liste.
Est-ce parce-que je passe par "WinNT://" et non par LDAP (je trouve cela
beaucoup plus pratique, pas besoin de spécifier une OU et j'ai l'habitude
de
faire comme ca...).
Voici mon script :
Option Explicit
'Const cDom = "KRJ.GIE"
Dim oDom,oObj,oExcel,oSheet,oArgs,oArg,oNetwork
Dim oUser,oGroup
Dim nb_lin,tDomain
Dim bExport_to_Excel
Dim bUsers,bGroups,bComputers
Set oNetwork = CreateObject("WScript.Network")
Set oArgs = WScript.Arguments
tDomain = oNetwork.UserDomain
wscript.echo tDomain
If(oArgs.Count<>0) Then
For each oArg in oArgs
Select Case UCase(oArg)
Case "/NOEXCEL" wscript.echo "OK, I promise, I won't user Excel :-("
bExport_to_Excel = False
Case "/GROUPS" wscript.echo "Listing groups"
bGroups = True
Case "/USERS" wscript.echo "Listing users"
bUsers = True
Case "/COMPUTERS" wscript.echo "Listing computers"
bComputers = True
Case Else wscript.echo "Ouch, bad argument !"
wscript.echo "Possible arguments : /noexcel /groups /users"
wscript.quit 0
End Select
Next
Else
wscript.echo "Possible arguments : /noexcel /groups /users /computers"
wscript.quit 0
End If
If(bExport_to_Excel) Then
Set oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
oExcel.Workbooks.Add
Set oSheet = oExcel.ActiveWorkbook.Worksheets(1)
oSheet.Name = tDomain & "Domain Users"
End If
For Each oObj in oDom
wscript.echo "---"&oObj.Name
If(oObj.Class = "User") And bUsers Then
wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & oObj.FullName
If(bExport_to_Excel) Then
oSheet.Cells(nb_lin,1).Value = oObj.Class
oSheet.Cells(nb_lin,2).Value = oObj.Name
oSheet.Cells(nb_lin,3).Value = oObj.FullName
nb_lin = nb_lin+1
End If
End If
If(oObj.Class = "Group") And bGroups Then
wscript.echo oObj.Class & vbtab & oObj.Name
'Si on doit également lister les membres de chaque groupe du domaine :
'Problème : le filtrage sur .Class ne fonctionne pas et renvoie également
les computers membres :-(
On Error Resume Next
For each oUser in oObj.Members
If(oUser.Class = "User") Then
wscript.echo vbtab & vbtab & "Membre du groupe " & Chr(34) & oObj.Name &
Chr(34) & " :" & vbtab & oUser.Name & vbtab & oUser.FullName & vbtab &
oUser.Class
End If
Next
On Error GoTo 0
If(bExport_to_Excel) Then
oSheet.Cells(nb_lin,1).Value = oObj.Class
oSheet.Cells(nb_lin,2).Value = oObj.Name
nb_lin = nb_lin+1
End If
End If
If(oObj.Class = "Computer") And bComputers Then
wscript.echo oObj.Class & vbtab & oObj.Name
If(bExport_to_Excel) Then
oSheet.Cells(nb_lin,1).Value = oObj.Class
oSheet.Cells(nb_lin,2).Value = oObj.Name
nb_lin = nb_lin+1
End If
End If
If((oObj.Class <> "Group") and (oObj.Class <> "User") And (oObj.Class <>
"Computer") And (oObj.Class <> "Schema")) Then
wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & "!!!"
wscript.echo oObj.Name & vbtab & "!!!"
'MsgBox oObj.Class & vbtab & oObj.Name
End If
Next
If(bExport_to_Excel) Then
oExcel.ActiveWorkbook.SaveAs ScriptPath() & WScript.ScriptName & "_" &
tDomain & ".xls"
oExcel.ActiveWorkbook.Close
oExcel.Quit()
Set oExcel = Nothing
End If
Function ScriptPath()
ScriptPath = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) -
Len(WScript.ScriptName))
End Function
En effet, l'interface ADSI WinNT ne permet pas d'exploiter tous les objets présents à partir de Windows 2000, seul LDAP le peut. Si vous ne souhaitez spécifier d'OU, vous pouvez utiliser le distinguished name du domain et utiliser la profondeur de recherche "Subtree".
-- Marc Lognoul [MCSE, MCTS, MVP] Heureux celui qui a pu pénétrer les causes secrètes des choses Happy is the one who could enter the secret causes of things Blog EN: http://www.marc-antho-etc.net/blog/ Blog FR: http://www.marc-antho-etc.net/blogfr/
"magnum42" wrote in message news:
Bonjour,
Je cherche à lister tout simplement les groupes du domaine. J'ai fait un petit script un peu plus pratique qui liste, suivant les paramètres, les groupes, les ordinateurs, ou les users. Et même les users de chaque groupe (pour un besoin ponctuel). Le problème est que je viens de remarquer que certains groupes manquent dans ma liste. Ce sont des groupes globaux de distribution. J'ai donc l'impression que les groupes globaux de sécurité sont bien vus, mais pas les groupes globaux de distribution. Et là, je ne vois pas comment faire ... J'ai besoin de ces groupes dans ma liste.
Est-ce parce-que je passe par "WinNT://" et non par LDAP (je trouve cela beaucoup plus pratique, pas besoin de spécifier une OU et j'ai l'habitude de faire comme ca...).
Voici mon script :
Option Explicit
'Const cDom = "KRJ.GIE" Dim oDom,oObj,oExcel,oSheet,oArgs,oArg,oNetwork Dim oUser,oGroup Dim nb_lin,tDomain Dim bExport_to_Excel Dim bUsers,bGroups,bComputers
Set oNetwork = CreateObject("WScript.Network") Set oArgs = WScript.Arguments tDomain = oNetwork.UserDomain wscript.echo tDomain
If(oArgs.Count<>0) Then For each oArg in oArgs Select Case UCase(oArg) Case "/NOEXCEL" wscript.echo "OK, I promise, I won't user Excel :-(" bExport_to_Excel = False Case "/GROUPS" wscript.echo "Listing groups" bGroups = True Case "/USERS" wscript.echo "Listing users" bUsers = True Case "/COMPUTERS" wscript.echo "Listing computers" bComputers = True Case Else wscript.echo "Ouch, bad argument !" wscript.echo "Possible arguments : /noexcel /groups /users" wscript.quit 0 End Select Next Else wscript.echo "Possible arguments : /noexcel /groups /users /computers" wscript.quit 0 End If
If(bExport_to_Excel) Then Set oExcel = CreateObject("Excel.Application") oExcel.Visible = True oExcel.Workbooks.Add Set oSheet = oExcel.ActiveWorkbook.Worksheets(1) oSheet.Name = tDomain & "Domain Users" End If
For Each oObj in oDom wscript.echo "---"&oObj.Name If(oObj.Class = "User") And bUsers Then wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & oObj.FullName If(bExport_to_Excel) Then oSheet.Cells(nb_lin,1).Value = oObj.Class oSheet.Cells(nb_lin,2).Value = oObj.Name oSheet.Cells(nb_lin,3).Value = oObj.FullName nb_lin = nb_lin+1 End If End If If(oObj.Class = "Group") And bGroups Then wscript.echo oObj.Class & vbtab & oObj.Name 'Si on doit également lister les membres de chaque groupe du domaine : 'Problème : le filtrage sur .Class ne fonctionne pas et renvoie également les computers membres :-( On Error Resume Next For each oUser in oObj.Members If(oUser.Class = "User") Then wscript.echo vbtab & vbtab & "Membre du groupe " & Chr(34) & oObj.Name & Chr(34) & " :" & vbtab & oUser.Name & vbtab & oUser.FullName & vbtab & oUser.Class End If Next On Error GoTo 0 If(bExport_to_Excel) Then oSheet.Cells(nb_lin,1).Value = oObj.Class oSheet.Cells(nb_lin,2).Value = oObj.Name nb_lin = nb_lin+1 End If End If If(oObj.Class = "Computer") And bComputers Then wscript.echo oObj.Class & vbtab & oObj.Name If(bExport_to_Excel) Then oSheet.Cells(nb_lin,1).Value = oObj.Class oSheet.Cells(nb_lin,2).Value = oObj.Name nb_lin = nb_lin+1 End If End If
If((oObj.Class <> "Group") and (oObj.Class <> "User") And (oObj.Class <> "Computer") And (oObj.Class <> "Schema")) Then wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & "!!!" wscript.echo oObj.Name & vbtab & "!!!" 'MsgBox oObj.Class & vbtab & oObj.Name End If Next
If(bExport_to_Excel) Then oExcel.ActiveWorkbook.SaveAs ScriptPath() & WScript.ScriptName & "_" & tDomain & ".xls" oExcel.ActiveWorkbook.Close oExcel.Quit() Set oExcel = Nothing End If
Function ScriptPath() ScriptPath = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - Len(WScript.ScriptName)) End Function
En effet, l'interface ADSI WinNT ne permet pas d'exploiter tous les objets présents à partir de Windows 2000, seul LDAP le peut. Si vous ne souhaitez spécifier d'OU, vous pouvez utiliser le distinguished name du domain et utiliser la profondeur de recherche "Subtree".
-- Marc Lognoul [MCSE, MCTS, MVP] Heureux celui qui a pu pénétrer les causes secrètes des choses Happy is the one who could enter the secret causes of things Blog EN: http://www.marc-antho-etc.net/blog/ Blog FR: http://www.marc-antho-etc.net/blogfr/
"magnum42" wrote in message news: > Bonjour, > > Je cherche à lister tout simplement les groupes du domaine. > J'ai fait un petit script un peu plus pratique qui liste, suivant les > paramètres, les groupes, les ordinateurs, ou les users. Et même les users > de > chaque groupe (pour un besoin ponctuel). > Le problème est que je viens de remarquer que certains groupes manquent > dans > ma liste. Ce sont des groupes globaux de distribution. > J'ai donc l'impression que les groupes globaux de sécurité sont bien vus, > mais pas les groupes globaux de distribution. > Et là, je ne vois pas comment faire ... J'ai besoin de ces groupes dans ma > liste. > > Est-ce parce-que je passe par "WinNT://" et non par LDAP (je trouve cela > beaucoup plus pratique, pas besoin de spécifier une OU et j'ai l'habitude > de > faire comme ca...). > > Voici mon script : > > Option Explicit > > 'Const cDom = "KRJ.GIE" > Dim oDom,oObj,oExcel,oSheet,oArgs,oArg,oNetwork > Dim oUser,oGroup > Dim nb_lin,tDomain > Dim bExport_to_Excel > Dim bUsers,bGroups,bComputers > > bExport_to_Excel = True > bUsers = False > bGroups = False > bComputers = False > > Set oNetwork = CreateObject("WScript.Network") > Set oArgs = WScript.Arguments > tDomain = oNetwork.UserDomain > wscript.echo tDomain > > If(oArgs.Count<>0) Then > For each oArg in oArgs > Select Case UCase(oArg) > Case "/NOEXCEL" wscript.echo "OK, I promise, I won't user Excel :-(" > bExport_to_Excel = False > Case "/GROUPS" wscript.echo "Listing groups" > bGroups = True > Case "/USERS" wscript.echo "Listing users" > bUsers = True > Case "/COMPUTERS" wscript.echo "Listing computers" > bComputers = True > Case Else wscript.echo "Ouch, bad argument !" > wscript.echo "Possible arguments : /noexcel /groups /users" > wscript.quit 0 > End Select > Next > Else > wscript.echo "Possible arguments : /noexcel /groups /users /computers" > wscript.quit 0 > End If > > nb_lin = 1 > Set oDom = GetObject("WinNT://" & tDomain & ",Domain") > 'oDom.Filter = Array("User") > > If(bExport_to_Excel) Then > Set oExcel = CreateObject("Excel.Application") > oExcel.Visible = True > oExcel.Workbooks.Add > Set oSheet = oExcel.ActiveWorkbook.Worksheets(1) > oSheet.Name = tDomain & "Domain Users" > End If > > For Each oObj in oDom > wscript.echo "---"&oObj.Name > If(oObj.Class = "User") And bUsers Then > wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & oObj.FullName > If(bExport_to_Excel) Then > oSheet.Cells(nb_lin,1).Value = oObj.Class > oSheet.Cells(nb_lin,2).Value = oObj.Name > oSheet.Cells(nb_lin,3).Value = oObj.FullName > nb_lin = nb_lin+1 > End If > End If > If(oObj.Class = "Group") And bGroups Then > wscript.echo oObj.Class & vbtab & oObj.Name > 'Si on doit également lister les membres de chaque groupe du domaine : > 'Problème : le filtrage sur .Class ne fonctionne pas et renvoie également > les computers membres :-( > On Error Resume Next > For each oUser in oObj.Members > If(oUser.Class = "User") Then > wscript.echo vbtab & vbtab & "Membre du groupe " & Chr(34) & oObj.Name & > Chr(34) & " :" & vbtab & oUser.Name & vbtab & oUser.FullName & vbtab & > oUser.Class > End If > Next > On Error GoTo 0 > If(bExport_to_Excel) Then > oSheet.Cells(nb_lin,1).Value = oObj.Class > oSheet.Cells(nb_lin,2).Value = oObj.Name > nb_lin = nb_lin+1 > End If > End If > If(oObj.Class = "Computer") And bComputers Then > wscript.echo oObj.Class & vbtab & oObj.Name > If(bExport_to_Excel) Then > oSheet.Cells(nb_lin,1).Value = oObj.Class > oSheet.Cells(nb_lin,2).Value = oObj.Name > nb_lin = nb_lin+1 > End If > End If > > If((oObj.Class <> "Group") and (oObj.Class <> "User") And (oObj.Class <> > "Computer") And (oObj.Class <> "Schema")) Then > wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & "!!!" > wscript.echo oObj.Name & vbtab & "!!!" > 'MsgBox oObj.Class & vbtab & oObj.Name > End If > Next > > > If(bExport_to_Excel) Then > oExcel.ActiveWorkbook.SaveAs ScriptPath() & WScript.ScriptName & "_" & > tDomain & ".xls" > oExcel.ActiveWorkbook.Close > oExcel.Quit() > Set oExcel = Nothing > End If > > > Function ScriptPath() > ScriptPath = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - > Len(WScript.ScriptName)) > End Function > > > > Merci d'avance, > > -- > Franck > http://supermarches.faire-le-bon-choix.fr
Bonjour,
Merci pour l'info.
J'ai recodé le script en passant par du LDAP et ca fonctionne bien.
En effet, l'interface ADSI WinNT ne permet pas d'exploiter tous les objets
présents à partir de Windows 2000, seul LDAP le peut.
Si vous ne souhaitez spécifier d'OU, vous pouvez utiliser le distinguished
name du domain et utiliser la profondeur de recherche "Subtree".
--
Marc Lognoul [MCSE, MCTS, MVP]
Heureux celui qui a pu pénétrer les causes secrètes des choses
Happy is the one who could enter the secret causes of things
Blog EN: http://www.marc-antho-etc.net/blog/
Blog FR: http://www.marc-antho-etc.net/blogfr/
"magnum42" <magnum42@discussions.microsoft.com> wrote in message
news:4FCBA957-6832-435B-A0DE-A51A8530E6F1@microsoft.com...
> Bonjour,
>
> Je cherche à lister tout simplement les groupes du domaine.
> J'ai fait un petit script un peu plus pratique qui liste, suivant les
> paramètres, les groupes, les ordinateurs, ou les users. Et même les users
> de
> chaque groupe (pour un besoin ponctuel).
> Le problème est que je viens de remarquer que certains groupes manquent
> dans
> ma liste. Ce sont des groupes globaux de distribution.
> J'ai donc l'impression que les groupes globaux de sécurité sont bien vus,
> mais pas les groupes globaux de distribution.
> Et là, je ne vois pas comment faire ... J'ai besoin de ces groupes dans ma
> liste.
>
> Est-ce parce-que je passe par "WinNT://" et non par LDAP (je trouve cela
> beaucoup plus pratique, pas besoin de spécifier une OU et j'ai l'habitude
> de
> faire comme ca...).
>
> Voici mon script :
>
> Option Explicit
>
> 'Const cDom = "KRJ.GIE"
> Dim oDom,oObj,oExcel,oSheet,oArgs,oArg,oNetwork
> Dim oUser,oGroup
> Dim nb_lin,tDomain
> Dim bExport_to_Excel
> Dim bUsers,bGroups,bComputers
>
> bExport_to_Excel = True
> bUsers = False
> bGroups = False
> bComputers = False
>
> Set oNetwork = CreateObject("WScript.Network")
> Set oArgs = WScript.Arguments
> tDomain = oNetwork.UserDomain
> wscript.echo tDomain
>
> If(oArgs.Count<>0) Then
> For each oArg in oArgs
> Select Case UCase(oArg)
> Case "/NOEXCEL" wscript.echo "OK, I promise, I won't user Excel :-("
> bExport_to_Excel = False
> Case "/GROUPS" wscript.echo "Listing groups"
> bGroups = True
> Case "/USERS" wscript.echo "Listing users"
> bUsers = True
> Case "/COMPUTERS" wscript.echo "Listing computers"
> bComputers = True
> Case Else wscript.echo "Ouch, bad argument !"
> wscript.echo "Possible arguments : /noexcel /groups /users"
> wscript.quit 0
> End Select
> Next
> Else
> wscript.echo "Possible arguments : /noexcel /groups /users /computers"
> wscript.quit 0
> End If
>
> nb_lin = 1
> Set oDom = GetObject("WinNT://" & tDomain & ",Domain")
> 'oDom.Filter = Array("User")
>
> If(bExport_to_Excel) Then
> Set oExcel = CreateObject("Excel.Application")
> oExcel.Visible = True
> oExcel.Workbooks.Add
> Set oSheet = oExcel.ActiveWorkbook.Worksheets(1)
> oSheet.Name = tDomain & "Domain Users"
> End If
>
> For Each oObj in oDom
> wscript.echo "---"&oObj.Name
> If(oObj.Class = "User") And bUsers Then
> wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & oObj.FullName
> If(bExport_to_Excel) Then
> oSheet.Cells(nb_lin,1).Value = oObj.Class
> oSheet.Cells(nb_lin,2).Value = oObj.Name
> oSheet.Cells(nb_lin,3).Value = oObj.FullName
> nb_lin = nb_lin+1
> End If
> End If
> If(oObj.Class = "Group") And bGroups Then
> wscript.echo oObj.Class & vbtab & oObj.Name
> 'Si on doit également lister les membres de chaque groupe du domaine :
> 'Problème : le filtrage sur .Class ne fonctionne pas et renvoie également
> les computers membres :-(
> On Error Resume Next
> For each oUser in oObj.Members
> If(oUser.Class = "User") Then
> wscript.echo vbtab & vbtab & "Membre du groupe " & Chr(34) & oObj.Name &
> Chr(34) & " :" & vbtab & oUser.Name & vbtab & oUser.FullName & vbtab &
> oUser.Class
> End If
> Next
> On Error GoTo 0
> If(bExport_to_Excel) Then
> oSheet.Cells(nb_lin,1).Value = oObj.Class
> oSheet.Cells(nb_lin,2).Value = oObj.Name
> nb_lin = nb_lin+1
> End If
> End If
> If(oObj.Class = "Computer") And bComputers Then
> wscript.echo oObj.Class & vbtab & oObj.Name
> If(bExport_to_Excel) Then
> oSheet.Cells(nb_lin,1).Value = oObj.Class
> oSheet.Cells(nb_lin,2).Value = oObj.Name
> nb_lin = nb_lin+1
> End If
> End If
>
> If((oObj.Class <> "Group") and (oObj.Class <> "User") And (oObj.Class <>
> "Computer") And (oObj.Class <> "Schema")) Then
> wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & "!!!"
> wscript.echo oObj.Name & vbtab & "!!!"
> 'MsgBox oObj.Class & vbtab & oObj.Name
> End If
> Next
>
>
> If(bExport_to_Excel) Then
> oExcel.ActiveWorkbook.SaveAs ScriptPath() & WScript.ScriptName & "_" &
> tDomain & ".xls"
> oExcel.ActiveWorkbook.Close
> oExcel.Quit()
> Set oExcel = Nothing
> End If
>
>
> Function ScriptPath()
> ScriptPath = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) -
> Len(WScript.ScriptName))
> End Function
>
>
>
> Merci d'avance,
>
> --
> Franck
> http://supermarches.faire-le-bon-choix.fr
En effet, l'interface ADSI WinNT ne permet pas d'exploiter tous les objets présents à partir de Windows 2000, seul LDAP le peut. Si vous ne souhaitez spécifier d'OU, vous pouvez utiliser le distinguished name du domain et utiliser la profondeur de recherche "Subtree".
-- Marc Lognoul [MCSE, MCTS, MVP] Heureux celui qui a pu pénétrer les causes secrètes des choses Happy is the one who could enter the secret causes of things Blog EN: http://www.marc-antho-etc.net/blog/ Blog FR: http://www.marc-antho-etc.net/blogfr/
"magnum42" wrote in message news: > Bonjour, > > Je cherche à lister tout simplement les groupes du domaine. > J'ai fait un petit script un peu plus pratique qui liste, suivant les > paramètres, les groupes, les ordinateurs, ou les users. Et même les users > de > chaque groupe (pour un besoin ponctuel). > Le problème est que je viens de remarquer que certains groupes manquent > dans > ma liste. Ce sont des groupes globaux de distribution. > J'ai donc l'impression que les groupes globaux de sécurité sont bien vus, > mais pas les groupes globaux de distribution. > Et là, je ne vois pas comment faire ... J'ai besoin de ces groupes dans ma > liste. > > Est-ce parce-que je passe par "WinNT://" et non par LDAP (je trouve cela > beaucoup plus pratique, pas besoin de spécifier une OU et j'ai l'habitude > de > faire comme ca...). > > Voici mon script : > > Option Explicit > > 'Const cDom = "KRJ.GIE" > Dim oDom,oObj,oExcel,oSheet,oArgs,oArg,oNetwork > Dim oUser,oGroup > Dim nb_lin,tDomain > Dim bExport_to_Excel > Dim bUsers,bGroups,bComputers > > bExport_to_Excel = True > bUsers = False > bGroups = False > bComputers = False > > Set oNetwork = CreateObject("WScript.Network") > Set oArgs = WScript.Arguments > tDomain = oNetwork.UserDomain > wscript.echo tDomain > > If(oArgs.Count<>0) Then > For each oArg in oArgs > Select Case UCase(oArg) > Case "/NOEXCEL" wscript.echo "OK, I promise, I won't user Excel :-(" > bExport_to_Excel = False > Case "/GROUPS" wscript.echo "Listing groups" > bGroups = True > Case "/USERS" wscript.echo "Listing users" > bUsers = True > Case "/COMPUTERS" wscript.echo "Listing computers" > bComputers = True > Case Else wscript.echo "Ouch, bad argument !" > wscript.echo "Possible arguments : /noexcel /groups /users" > wscript.quit 0 > End Select > Next > Else > wscript.echo "Possible arguments : /noexcel /groups /users /computers" > wscript.quit 0 > End If > > nb_lin = 1 > Set oDom = GetObject("WinNT://" & tDomain & ",Domain") > 'oDom.Filter = Array("User") > > If(bExport_to_Excel) Then > Set oExcel = CreateObject("Excel.Application") > oExcel.Visible = True > oExcel.Workbooks.Add > Set oSheet = oExcel.ActiveWorkbook.Worksheets(1) > oSheet.Name = tDomain & "Domain Users" > End If > > For Each oObj in oDom > wscript.echo "---"&oObj.Name > If(oObj.Class = "User") And bUsers Then > wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & oObj.FullName > If(bExport_to_Excel) Then > oSheet.Cells(nb_lin,1).Value = oObj.Class > oSheet.Cells(nb_lin,2).Value = oObj.Name > oSheet.Cells(nb_lin,3).Value = oObj.FullName > nb_lin = nb_lin+1 > End If > End If > If(oObj.Class = "Group") And bGroups Then > wscript.echo oObj.Class & vbtab & oObj.Name > 'Si on doit également lister les membres de chaque groupe du domaine : > 'Problème : le filtrage sur .Class ne fonctionne pas et renvoie également > les computers membres :-( > On Error Resume Next > For each oUser in oObj.Members > If(oUser.Class = "User") Then > wscript.echo vbtab & vbtab & "Membre du groupe " & Chr(34) & oObj.Name & > Chr(34) & " :" & vbtab & oUser.Name & vbtab & oUser.FullName & vbtab & > oUser.Class > End If > Next > On Error GoTo 0 > If(bExport_to_Excel) Then > oSheet.Cells(nb_lin,1).Value = oObj.Class > oSheet.Cells(nb_lin,2).Value = oObj.Name > nb_lin = nb_lin+1 > End If > End If > If(oObj.Class = "Computer") And bComputers Then > wscript.echo oObj.Class & vbtab & oObj.Name > If(bExport_to_Excel) Then > oSheet.Cells(nb_lin,1).Value = oObj.Class > oSheet.Cells(nb_lin,2).Value = oObj.Name > nb_lin = nb_lin+1 > End If > End If > > If((oObj.Class <> "Group") and (oObj.Class <> "User") And (oObj.Class <> > "Computer") And (oObj.Class <> "Schema")) Then > wscript.echo oObj.Class & vbtab & oObj.Name & vbtab & "!!!" > wscript.echo oObj.Name & vbtab & "!!!" > 'MsgBox oObj.Class & vbtab & oObj.Name > End If > Next > > > If(bExport_to_Excel) Then > oExcel.ActiveWorkbook.SaveAs ScriptPath() & WScript.ScriptName & "_" & > tDomain & ".xls" > oExcel.ActiveWorkbook.Close > oExcel.Quit() > Set oExcel = Nothing > End If > > > Function ScriptPath() > ScriptPath = Left(WScript.ScriptFullName, Len(WScript.ScriptFullName) - > Len(WScript.ScriptName)) > End Function > > > > Merci d'avance, > > -- > Franck > http://supermarches.faire-le-bon-choix.fr