à partir de l'invite de commande, comment puis-je obtenir le nom d'affichage convivial (c'est-à-dire "John Doe" au lieu de "John.Doe") de l'utilisateur de domaine actuellement connecté? p>
8 Réponses :
Voici une manière délicate que je l'ai fait à l'aide de la commande nette et de la commande de recherche dans un fichier de commandes: La première ligne stocke la commande que nous voulons exécuter dans une variable . Il tire le nom d'utilisateur des variables d'environnement et transmet que dans la commande utilisateur net code> ainsi que le paramètre
/ domaine nom> pour le dire de tirer du domaine actuel. Ensuite, il conduit le résultat de celui-ci, qui est un tas de données sur l'utilisateur actuel, à une méthode de recherche qui ne tirera que la propriété que nous voulons. Le résultat de la trouvaille est dans le format "nom complet John Doe". La deuxième ligne exécutera la commande et mettra le résultat dans la variable
FullieNetText code>. La troisième ligne supprimera la partie "nom complet" du résultat et finira par "John Doe". La quatrième ligne avec la boucle pour la boucle supprimera tous les espaces principaux du résultat et vous vous retrouvez avec "John Doe" dans la variable CODE> FULNNAME CODE>. P> P>
Nous pouvons trouver le nom de domaine d'un ordinateur en exécutant la ligne commnad suivante à partir de la ligne de commande. Systeminfo | FindStr / B / C: "Domaine" Nous pouvons trouver le domaine de l'utilisateur connecté à l'aide de la variable d'environnement 'UserDomain'. Commande pour cela est donnée ci-dessous. echo% userdomain%
Super! Fonctionne aussi dans PowerShell également: ((utilisateur net $ env: nom d'utilisateur / domaine | Select-String "nom complet") -replace "nom complet", ""). Garniture ().
J'ai besoin d'entourer% commandement% avec des virgules inversées dans la deuxième ligne pour le faire fonctionner: ('"% commandement%" ")
Cette commande ne fonctionne pas lorsque vous êtes connecté à un compte de domaine différent de ce que votre machine est connectée à, dans une forêt ad
J'ai construit un fichier de commandes pour faire quelques éléments rapidement en sélectionnant une action à l'aide de Set P et Goto. Je quitte les parties inutiles. J'espère que cela aide. p> p>
Il suffit de donner lieu à une boucle infinie d'invites avec erreur: commutateur global invalide.
Voici une dérivée de réponse de Skeletk's qui est légèrement plus propre qui a fonctionné pour moi ... (j'ai essayé Réponse Skeletk">Skeletk's n'a pas fonctionné pour moi comme il a été écrit, donc ma réponse ci-dessous.)
SET TNAME="net user %USERNAME% /domain| FIND /I "Full Name"" FOR /F "tokens=3,4 delims=, " %%A IN ('%TNAME%') DO SET DNAME=%%B %%A
Ceci devrait être un moyen propre en utilisant DSQUERY et DSGET sans s'appuyer sur la sortie du "nom complet", qui dépend de la langue dépendante, tandis que "FN" semble fonctionner avec différentes versions de langue de Windows.
for /F "tokens=2" %i in ('dsquery user -samid %username% ^| dsget user -L -fn ^| find "fn:"') DO @echo %i
Win10 Exécution dans la CMD Résultats dans: Nom d'utilisateur "') Do @echo J'étais inattendu à ce moment-là. On dirait que c'est de Dsquery non existant sur la machine
Ceci est formaté pour une utilisation à partir de la ligne de commande. Matt, veuillez vous reporter à ma réponse pour la différence entre la ligne de commande et la mise en forme de script. Cette commande particulière nécessite une RSAT installée sur l'ordinateur que vous l'exécutez.
Si vous le souhaitez pour une utilisation humaine - ce qui signifie que vous n'avez pas besoin d'analyser automatiquement, vous obtenez juste em> le nom complet - vous pouvez simplement taper Référence: Obtenir des informations détaillées sur l'utilisateur de domaine de la ligne de commande . P> utilisateur net
Liaison cassé et cette commande ne fonctionne pas lorsque vous êtes connecté à un compte de domaine différent de ce que votre machine est connectée à, dans une forêt adverse
La réponse acceptée (au moment de l'affichage) dispose de 4 lignes de code, lorsque vous n'avez besoin que d'un pour faire la même chose:
for /f "tokens=2*" %n in ('net user "%USERNAME%" /domain^|FINDSTR /C:"Full Name"') do echo "%o"
Win10 CMD Exécution dans un .Bat Résultats dans: Nom d'utilisateur "Nom complet" ") était inattendu à ce moment-là.
Ne fonctionne pas si l'utilisateur est sur un domaine différent de ce qu'ils sont actuellement connectés à (mais toujours dans AD Forest W / Trust), la demande sera traitée dans un contrôleur de domaine pour le domaine xxx.xxx.xxx. Le nom d'utilisateur n'a pas pu être trouvé. Plus d'aide est disponible en tapant net APPRMSG 2221.
La question de la optique a demandé la commande "de l'invite de commande". Ma réponse est formatée en tant que telle. Cependant, je précise spécifiquement comment le formater pour le script .bat si vous souhaitez l'utiliser pour cela. S'il vous plaît voir la "note".
La réponse lectrode dans une chaîne sera comme ceci: p>
xxx pré> blockQuote>
Veuillez noter que cela est formaté pour BAT ou Script CMD. Cela ne fonctionnera pas "de l'invite de commande" comme invité OP ci-dessus
pour / f "usebackQ jetons = 2, * Delims ="% A in (`utilisateur net"% Nom d'utilisateur% "/ domaine ^ | Rechercher / i" Nom complet "`) DO SET FULLNAME =% B CODE > /// change simplement double %% sur% et cela fonctionnera de cmd ////
de l'invite de commande à distance (je l'établit généralement en utilisant psexec.exe), puis tapez simplement "utilisateur de requête" p>
p>
Cela nécessite une autre explication