명령 줄 스크립트를 실행할 때 현재 사용자의 이름을 얻을 수 있습니까?
답변
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