Question Lister les groupes locaux d'un serveur

Plus d'informations
il y a 13 ans 2 mois #14357 par Phil'z Edward
Bonjour,
J'ai deux problèmes avec mon script, je voudrais :
-Qu'il m'affiche juste les groupes locaux (c'est à dire les groupes créés par un administrateur, et non les groupes BUILTIN')

-Qu'il renvoie les resultats dans un fichier csv (Dans mon script, il ne renvoie pas les informations affichées à l'écran)

[code:1]
$computerName = Read-Host 'Enter computer name or press <Enter> for localhost'

if ($computerName -eq \"\"«») {$computerName = \"$env:computername\"}
$computer = [ADSI]\"WinNT://$computerName,computer\"
$groups = $computer.psbase.Children | Where-object { $_.psbase.schemaclassname -eq 'group' }

foreach ($group in $groups)
{
$users = $group.psbase.invoke(\"Members\"«»)
$group.name
write-host \"
\"

if ($users -ne $null)
{
foreach ($user in $users)
{
$user.GetType().InvokeMember(\"Name\",\"GetProperty\",$null,$user,$null)
}
}
else
{
write-host \"
EMPTY
\" -foreground \"red\"
}

write-host \"
\"
write-host \"\"

$groups | Export-Csv C:\temp\Grouploc-user.csv -NoTypeInformation
}
[/code:1]

Merci pour votre aide

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

Plus d'informations
il y a 13 ans 2 mois #14371 par Phil'z Edward
Salut,
Personne n'a une idée???
Merci

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

Plus d'informations
il y a 13 ans 2 mois #14377 par Philippe
salut PE2012

Pour commencé, je ne crois pas que lors puisse filtré la liste des groupes local ou AD sans les groupes par defaults du systemes mais je vers cherché un peu.
Je te conseil d'utilisé un nommage specifique pour les groupes que tu crée, tu type \"GR_fichiers du service compta\".
Comme ca dans ta recherche de groupe tu met un filtre sur \"GR_*\".

Apres ton script ne fait que ce que tu lui demande (mettre dans le fichier \"grouploc-user.csv\" la liste des groupes et rien d'autre (pas les utilisateurs).
[code:1]$groups | Export-Csv C:\temp\Grouploc-user.csv -NoTypeInformation[/code:1]

Crée une structure par exemple dans laquelle tu met tes users par groups et ensuite tu enregrite cette structure.

Des que j'ai un peu de temps, je reviens vers toi pour les groupes et regarder plus pres ton script.

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

Plus d'informations
il y a 13 ans 2 mois #14378 par Philippe
de retour

pour la liste des groupes non systemes tu doit regarde le SID. Soit dans ton script : $group.psbase.Properties.objectSid
il me semble que les nopuveaux groupes sont dans une serie de SID differente des SID systemes.

Regarde ici pour conmencer support.microsoft.com/kb/243330/fr

et peut etre qu'un MVP te donnera plus d'info

je continue de gratter

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

Plus d'informations
il y a 13 ans 2 mois #14379 par JONDON Cyril
Salut,

J'ai fait ça en WMI avec les classe Win32_Group et Win32-GroupUser :

[code:1]Get-WmiObject -namespace root\cimv2 Win32_Group |
where-object {($_.Sid).length -ge 13} | select-Object Name |
ForEach-Object {$Filtre=$_.Name;gwmi Win32_GroupUser | Where {$_.GroupComponent -like \"*$Filtre*\"} |
Select-Object @{Label=\"GroupesLocaux\";Expression={$Filtre}},@{Label=\"Membres\";Expression=`
{((($_.PartComponent).split(\",\"«»)[0]).split(\"=\"«»)[1]).replace('\"','')+ \"\\" `
+ ((($_.PartComponent).split(\",\"«»)[1]).split(\"=\"«»)[1]).replace('\"','')}}}| ft -autosize

GroupesLocaux Membres

MONGROUPELOCAL Cyril-PC\Administrateur
MONGROUPELOCAL Cyril-PC\Cyril
MONGROUPELOCAL ADSERVICES\AlanB
WinRMRemoteWMIUsers__ Cyril-PC\Cyril
WinRMRemoteWMIUsers__ Cyril-PC\Administrateur
__vmware__ Cyril-PC\Test[/code:1]

Ce code ne retourne que les groupes locaux non built-in avec membres , les autres groupes locaux non built-in sans membre pas encore

Je regarde comment faire pour afficher aussi ceux qui sont sans membre.

Après y a juste à rajouter au code un pipe avec Export-CSV.

Il pourait encore être amélioré en utilisant l'option -Computername de gwmi en gérant un fichier de computers en Input.

J'espère que ca répond en partie à ton besoin

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

Plus d'informations
il y a 13 ans 2 mois #14380 par JONDON Cyril
Bon cette fois ci ça doit être bon j'ai modifié le filtre qui n'était pas correct ds certains cas :

-like remplace par -eq donc la plus de souci on récupère bien les membres de notre groupe à coup sur.

Ensuite pour rajouter à notre liste de Groupes Locaux Non Builtin avec Membres les Groupes Locaux Non Builtin Sans Membre j'ai utilisé la cmdlet Compare-Object et en fin de traitement je fais un append au fichier CSV.

Ci-dessous le Code :
[code:1]Get-WmiObject Win32_Group |
where-object {($_.Sid).length -ge 13} | select-Object Name |
ForEach-Object {$Filtre=$_.Name;gwmi Win32_GroupUser | Where {((($_.GroupComponent).split(\",\"«»)[1]).split(\"=\"«»)[1]).replace('\"',\"\"«») -eq $Filtre} |
Select-Object @{Label=\"GroupesLocaux\";Expression={$Filtre}},@{Label=\"Membres\";Expression=`
{((($_.PartComponent).split(\",\"«»)[0]).split(\"=\"«»)[1]).replace('\"','')+ \"\\" `
+ ((($_.PartComponent).split(\",\"«»)[1]).split(\"=\"«»)[1]).replace('\"','')}}} |
Export-CSV c:\MaListe.csv -Append

$GLWithMember = gwmi Win32_GroupUser |
Select-Object @{Label=\"GroupesLocaux\";Expression={((($_.GroupComponent).split(\",\"«»)[1]).split(\"=\"«»)[1]).replace('\"','')}}

$GLNoBuiltIn = gwmi Win32_Group |
where-object {($_.Sid).length -ge 13} | Select-Object @{Label=\"GroupesLocaux\";Expression={$_.Name}}

$GLNoBuiltInWithNoMember = Compare-Object -Ref $GLWithMember -Dif $GLNoBuiltIn -Property GroupesLocaux |
Where-Object {$_.sideindicator -eq \"=>\"} |
Select-Object GroupesLocaux,@{Label=\"Membres\";Expression={\"Sans Membre\"}}

if ($GLNoBuiltInWithNoMember -ne $null) {$GLNoBuiltInWithNoMember | Export-CSV c:\MaListe.csv -Append}[/code:1]

[code:1]PS C:\> import-csv C:\maliste.csv | ft -autosize

GroupesLocaux Membres

MONGROUPELOCAL Cyril-PC\Administrateur
MONGROUPELOCAL Cyril-PC\Cyril
MONGROUPELOCAL ADSERVICES\AlanB
MONGROUPELOCAL Cyril-PC\Test3
NEWGROUP ADSERVICES\MichaelLbis
NEWGROUP ADSERVICES\HideatsuHbis
NEWGROUP ADSERVICES\DennisBbis
NEWGROUP ADSERVICES\ApurvaD
NEWGROUP ADSERVICES\AlanBbis
NEWGROUP ADSERVICES\AlanB
NEWGROUP Cyril-PC\Test3
WinRMRemoteWMIUsers__ Cyril-PC\Cyril
WinRMRemoteWMIUsers__ Cyril-PC\Administrateur
__vmware__ Cyril-PC\Test
SANSMEMBRE Sans Membre
SANSMEMBRE2 Sans Membre [/code:1]

Y a surement plus simple mais c'est une solution qui a le mérite de fonctionner.
Ne pas hésiter si besoin de plus d'infos.
@+

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

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