6 votes

Est-ce qu'un ordinateur Windows 10 joint à un domaine dispose d'outils intégrés pour interroger AD/LDAP?

Je suis sur un ordinateur Windows 10 joint à un domaine et je veux interroger les attributs de mon propre compte utilisateur. Y a-t-il des outils intégrés pour cela?

Ce n'est pas un ordinateur administrateur et je n'ai pas installé RSAT. Mon ordinateur ne semble pas avoir :

  • dsget
  • dsquery
  • ldapsearch
  • ldp
  • le module PowerShell ActiveDirectory

Y a-t-il d'autres outils intégrés? Je veux dire, il doit y avoir quelque chose, car au moins mon ordinateur est capable d'interroger l'AD, mais existe-t-il des outils que je peux également utiliser en tant qu'utilisateur?

9voto

James Mertz Points 390

Windows dispose de l'interface ADSI disponible pour les programmes, qui prend en charge l'accès LDAP général.

PowerShell a accès à ADSI via les types System.DirectoryServices :

Mais ADSI est à l'origine une API COM+ qui préexiste à PowerShell et même à .NET en général, donc bien sûr Microsoft propose des exemples pour l'utiliser de VBScript et de ADODB (et même de ASP, bien que cela ne soit pas utile ici).


Vous devriez également pouvoir installer et utiliser certains outils RSAT sans nécessiter de privilèges spéciaux (à part les privilèges administratifs Windows locaux pour l'installation). Par défaut, l'annuaire est grand ouvert à tout client authentifié.

Vous pouvez utiliser des clients LDAP tiers avec AD - les contrôleurs de domaine accepteront l'authentification en utilisant vos justificatifs d'utilisateur, c'est ainsi que la plupart des outils GUI Windows recherchent les données dans AD en premier lieu (le compte de jointure de la machine n'étant nécessaire que pour certaines tâches). Cependant, il est préférable d'utiliser des clients qui prennent en charge l'authentification Kerberos via GSSAPI ou GSS-SPNEGO, car c'est garanti de fonctionner avec n'importe quelle configuration AD. Les outils qui utilisent NTLM ou une "liaison simple" (authentification par mot de passe) peuvent ou non fonctionner en fonction de la configuration du domaine.

Par exemple, SysInternals ADExplorer est un outil Microsoft et fonctionne sans installation. (Lorsque vous êtes invité à fournir les détails du serveur, laissez tous les champs vides et cliquez simplement sur "Connecter".)

(Les outils RSAT "ADSIEdit" et "dsa.msc" peuvent être utilisés techniquement sans une installation complète, en effet même les instructions officielles de Microsoft disaient autrefois "extraire ces fichiers du .cab et les enregistrer avec regsvr32", mais vous avez besoin de l'accès administratif local Windows pour la partie regsvr32.)

2voto

stackprotector Points 726

De la réponse excellente de l'utilisateur 1686 sur superutilisateur, j'ai dérivé la ligne suivante pour afficher les attributs du compte d'utilisateur actuellement connecté :

[adsi] ([adsisearcher] "(sAMAccountName=$env:USERNAME)").FindAll().Path | Format-List *

Autres requêtes utiles

  1. Obtenir tous les membres d'un groupe (fourni par sAMAccountName) :

    ([adsisearcher] "(&(objectClass=person)(objectClass=user)(memberOf:1.2.840.113556.1.4.1941:=$(([adsisearcher] "(sAMAccountName=REPLACE_ME)").FindOne().GetDirectoryEntry().distinguishedName)))").FindAll().GetDirectoryEntry() | Select-Object -ExpandProperty sAMAccountName | Sort-Object
  2. Obtenir tous les groupes d'un utilisateur (fourni par sAMAccountName) :

    ([adsisearcher] "(sAMAccountName=REPLACE_ME)").FindOne().GetDirectoryEntry().memberOf
  3. Vérifier si un utilisateur (fourni par sAMAccountName) est membre d'un groupe (fourni par sAMAccountName) :

    ([adsisearcher] "(&(sAMAccountName=REPLACE_ME_WITH_USERNAME)(memberOf:1.2.840.113556.1.4.1941:=$(([adsisearcher] "(sAMAccountName=REPLACE_ME_WITH_GROUPNAME)").FindOne().GetDirectoryEntry().distinguishedName)))").FindAll().Count -gt 0
  4. Obtenir l'état d'un compte donné par sAMAccountName :

    $as = [adsisearcher] "(sAMAccountName=REPLACE_ME)"
    $as.PropertiesToLoad.Add('msds-user-account-control-computed') | Out-Null
    $as.PropertiesToLoad.Add('pwdlastset') | Out-Null
    $account = $as.FindOne()
    $uac = $account.Properties['msds-user-account-control-computed'][0]
    $pwdLastSet = $account.Properties['pwdlastset'][0]
    [PSCustomObject]@{
        AccountDisabled  =      [bool] ($uac -band 2)
        AccountLockedOut =      [bool] ($uac -band 16)
        PasswordExpires  = -not [bool] ($uac -band 65536)
        PasswordExpired  =      [bool] ($uac -band 8388608)
        PasswordLastSet  = [DateTime]::FromFileTime($pwdLastSet)
    }

    Exemple de sortie pour un compte actif sain :

    AccountDisabled  : False
    AccountLockedOut : False
    PasswordExpires  : True
    PasswordExpired  : False
    PasswordLastSet  : 23.07.2024 13:27:15
  5. Obtenir tous les objets par un motif de sAMAccountName :

    ([adsisearcher] "(sAMAccountName=REPLACE_ME*)").FindAll().GetDirectoryEntry() | Select-Object -Property distinguishedName, sAMAccountName

0voto

cachius Points 127

net.exe avec l'interrupteur /domain interroge l'AD :

REM Afficher les détails du compte, comme les métadonnées du mot de passe et les appartenances aux groupes
net user %USERNAME% /domain

REM Afficher les membres d'un groupe
net group "domain users" /domain

REM Afficher la politique de mot de passe
net accounts /domain

REM Lister tous les noms d'utilisateur
net user /domain

REM Lister tous les groupes
net group /domain

net config workstation
net stats workstation

Plus d'informations sur les paramètres sont disponibles sur ss64.com, des exemples de sortie sur le site de René Nyffenegger et des antécédents historiques sur Wikipedia. Les documents officiels de Microsoft sont incomplets, il peut être utile de passer entre les versions.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X