Comment déterminer le nom d'utilisateur sur un shell de commande Windows

-1

Il existe diverses suggestions sur la façon de déterminer le nom d'utilisateur actuel sur un shell de commande Windows sans utiliser whoami, tel que cette question ou cette question . La réponse générique semble être echo %username%. Cependant, lorsque je le fais (sous Windows XP), le shell répond par %username%. Est-ce que je manque quelque chose?

countermode
la source
Cela fonctionne sous Windows 7.
cliff2310
1
@ cliff2310 vous dites que cela fonctionne sur 7 mais vous ne pouvez pas voir qu'il a tagué cette XP et pose des questions sur XP (Cela dit, cela devrait fonctionner aussi sur XP)
barlop
1
Cela fonctionne bien sur mon système XP. Votre observation ne se produira que si username n'est pas défini ou défini sur la chaîne littérale %username%. Pour savoir lequel, tapez set username. Les deux sont peu probables, mais ma meilleure hypothèse est que vous avez exécuté un fichier de commandes qui utilise username en tant que variable de travail et l'efface à la sortie, recherchez donc la chaîne dans vos fichiers batch username (recherche insensible à la casse).
AFH
"Comme je l'ai dit, c'est un laboratoire de test avec machines délibérément brisées . "- vote pour clore en dehors du sujet
DavidPostill
"délibérément cassé" doit être compris dans le sens de mal entretenu, pas dans le sens de machines artificiellement mal configurées qui ne seraient jamais vues à l'état sauvage.
countermode

Réponses:

1

peut-être vous manque la variable d'environnement USERNAME pour une raison quelconque. Exécutez la commande set pour répertorier les variables d’environnement et leurs valeurs. Mon XP a USERNAME et je ne l’ai pas ajouté, donc XP l’a. Mais courez ensemble et voyez ce que vous avez

Un tas de variables d'environnement ont l'utilisateur

TEMP=C:\DOCUME~1\User\LOCALS~1\Temp
TMP=C:\DOCUME~1\User\LOCALS~1\Temp
USERNAME=user
USERPROFILE=C:\Documents and Settings\user

Ajoutée

Dans un exemple similaire à celui dans lequel vous vous trouvez .. Ici, je me suis connecté à distance à la machine, elle exécute bvsshserver (serveur ssh bitvise, également appelé winshd) (qui est connecté même à partir du client cygwin, donnera une ligne de commande Windows) bien que openssh serveur via cygwin donne bash .. Vous pouvez utiliser le client openssh de cygwin pour vous connecter à bitvise sshd et obtenir une ligne de commande Windows

SystemRoot=C:\WINDOWS
TEMP=C:\DOCUME~1\WINSSH~1\LOCALS~1\Temp
TMP=C:\DOCUME~1\WINSSH~1\LOCALS~1\Temp
USERNAME=WinSSHD_VirtualUsers
USERPROFILE=C:\Documents and Settings\WinSSHD_VirtualUsers
VIRTGROUP=Virtual Users
VIRTUSER=user
windir=C:\WINDOWS


C:\>whoami
WinSSHD_VirtualUsers

C:\>

Dans ce cas, "VIRTUSER" a le nom d'utilisateur, bien que différent de celui indiqué par whoami.

Quel serveur SSH (ou connexion à distance au serveur de programmes) votre ordinateur XP est-il exécuté?

barlop
la source
Eh bien, cela est apparu dans un laboratoire de test. J'ai eu un shell sur cette machine XP et je me suis demandé qui je suis (c'est-à-dire dont j'ai les privilèges). set C'est une bonne suggestion, même si elle n'en dit pas beaucoup dans la situation.
countermode
@countermode quel est le serveur? Je suppose que ça peut dépendre de ça
barlop
C'est un Win XP, apparemment, aucun service pack n'est installé. username n'est pas réglé et whoami N'est pas installé.
countermode
@countermode ça ne peut pas être le pas de service packs .. 'parce que tu me dis qu'il n'a pas %TEMP% non plus? je serais surpris si win xp pre sp1 était si limité! combien d'utilisateurs sont là! regardez peut-être dans c: \ documents et paramètres pour voir combien de dossiers il y a. Si tant de choses ont été supprimées sur la machine, il n’ya peut-être qu’un seul profil utilisateur! (Cela dit. Je ne doute pas que je n'ai pas d'utilisateur virtuel winsshd dans mes documents et paramètres).
barlop
Comme je l'ai dit, c'est un laboratoire de test avec des machines délibérément cassées. Attendre... %TEMP% est réglé.
countermode
1

Vous ne manquez rien. Peut-être que vous l'exécutez dans PowerShell? Si vous ne recevez pas la valeur correcte renvoyée par cmd, vous devrez vous renseigner davantage.

Lorsque vous êtes dans une invite de commande Windows (cmd pas PowerShell), entrez:

echo %username%

Dans PowerShell, entrez:

# Returns computername/username
whoami
# Returns username
echo $env:username
# Returns table containing computer/usernem
Get-WMIObject -class Win32_ComputerSystem | select username
Alex Atkinson
la source