[windows] Windows 환경에서 현재 사용자를 어떻게 찾습니까?

명령 줄 스크립트를 실행할 때 현재 사용자의 이름을 얻을 수 있습니까?



답변

username 변수를 사용할 수 있습니다 : %USERNAME%


답변

사용자 이름:

echo %USERNAME%

도메인 이름:

echo %USERDOMAIN%

set명령 프롬프트에서 명령 을 실행하여 전체 환경 변수 목록을 얻을 수 있습니다 .


답변

명령 프롬프트에서이 명령을 사용하십시오.

C:\> whoami


답변

에 있어야합니다 %USERNAME%. 분명히 이것은 쉽게 스푸핑 될 수 있으므로 보안을 위해 의존하지 마십시오.

유용한 팁 : set명령 프롬프트에 입력하면 모든 환경 변수가 나열됩니다.


답변

%USERNAME% 배치 및 기타 Windows 환경에서 정답입니다.

다른 옵션은 다음 %USERPROFILE%과 같이 사용자의 경로를 얻는 데 사용 하는 것 C:\Users\username입니다.


답변

대답은 사용중인 “명령 줄 스크립트”언어에 따라 다릅니다.

Cmd

이전에 cmd.exe명령 프롬프트 또는에서 .bat또는 .cmd스크립트, 다음을 사용할 수 있습니다 :

%USERNAME% -사용자 이름 만 가져옵니다.

%USERDOMAIN% -사용자의 도메인을 가져옵니다.

PowerShell

PowerShell 명령 프롬프트 또는 .ps1또는 .psm1스크립트에서 다음을 사용할 수 있습니다.

[System.Security.Principal.WindowsIdentity]::GetCurrent().Name-정규화 된 사용자 이름 (예 : Domain \ Username)을 제공합니다. $Env아래 의 다른 변수 와 같이 사용자가 재정의 할 수 없으므로 가장 안전한 방법 입니다.

$Env:Username -사용자 이름 만 가져옵니다.

$Env:UserDomain -사용자의 도메인을 가져옵니다.

$Env:ComputerName -컴퓨터 이름을 가져옵니다.


답변

% USERNAME %은 현재 실행중인 프로세스의 사용자 이름을 가져옵니다. 배치 파일을 실행하는 방법에 따라 현재 사용자의 이름과 반드시 ​​같을 필요는 없습니다. 예를 들어 예약 된 작업, 서비스 등을 통해 배치 파일을 실행하고있을 수 있습니다.

explorer.exe 작업을 시작한 사용자의 이름을 스크랩하여 현재 로그온 한 사용자의 사용자 이름을 얻는보다 확실한 방법은 다음과 같습니다.

for /f "TOKENS=1,2,*" %%a in ('tasklist /FI "IMAGENAME eq explorer.exe" /FO LIST /V') do if /i "%%a %%b"=="User Name:" set _currdomain_user=%%c
for /f "TOKENS=1,2 DELIMS=\" %%a in ("%_currdomain_user%") do set _currdomain=%%a & set _curruser=%%b