如何获取活动用户的 SID



作用域正在用户的本地计算机上运行。您可以使用它来获取活动用户的SID。然后你可以把它和香港大学的注册表单元一起使用。

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
ECHO GET THE NAME OF THE ACTIVELY LOGGED ON USER
FOR /F "skip=1" %%G IN ('wmic computersystem get username') DO (
SET aUSER=%%G
GOTO EXITLOOP1
)
:EXITLOOP1
ECHO %aUSER%
ECHO[

REM ECHO TRIM THE USERNAME
SET tUSER=%aUSER:~4%
REM ECHO %tUSER%
ECHO[

ECHO GET SID FOR USER: %tUSER%
FOR /F "usebackq skip=1" %%a IN (`WMIC USERACCOUNT WHERE NAME^='%%tUSER%%' GET SID`) DO (
SET SID=%%a
GOTO EXITLOOP2
)
:EXITLOOP2
ECHO %SID%

BTW,如果你想在没有For循环的情况下完成,你可以请求powershell提供帮助:

%SystemRoot%System32WindowsPowerShellv1.0powershell.exe -NoProfile -Command "(%SystemRoot%System32whoami.exe /User /Fo CSV | ConvertFrom-Csv).SID"

甚至没有whoami.exe:

%SystemRoot%System32WindowsPowerShellv1.0powershell.exe -NoProfile -Command "Add-Type -AssemblyName System.DirectoryServices.AccountManagement;$([System.DirectoryServices.AccountManagement.UserPrincipal]::Current).SID.Value"

在cmd.exe控制台中,可以使用以下命令。

powershell -NoLogo -NoProfile -Command ^
"Add-Type -AssemblyName System.DirectoryServices.AccountManagement;" ^
"([System.DirectoryServices.AccountManagement.UserPrincipal]::Current).Sid.AccountDomainSid.Value"

要将结果放入变量中,请使用FOR循环。(是的,我知道,这太疯狂了,对吧?(

FOR /F "delims=" %%A IN ('powershell -NoLogo -NoProfile -Command ^
"Add-Type -AssemblyName System.DirectoryServices.AccountManagement;" ^
"([System.DirectoryServices.AccountManagement.UserPrincipal]::Current).Sid.AccountDomainSid.Value"') DO (
SET "USER_SID=%%~A"
)
ECHO USER_SID is set to %USER_SID%

还有许多其他东西可以通过这种方式访问。

powershell -NoLogo -NoProfile -Command ^
"Add-Type -AssemblyName System.DirectoryServices.AccountManagement;" ^
"[System.DirectoryServices.AccountManagement.UserPrincipal]::Current |" ^
"Format-List * -Force"

当你提出一个问题,并决定发布一些代码时,无论你是否决定将你的代码作为解决方案发布,我都会提供一个更快、更简单的替代方案:

来自cmd:

For /F Tokens^=3^ Delims^=^" %G In ('%SystemRoot%System32whoami.exe /User /Fo CSV /NH') Do @Echo %G

从批处理文件:

@For /F Tokens^=3^ Delims^=^" %%G In ('%SystemRoot%System32whoami.exe /User /Fo CSV /NH') Do @Echo %%G

最新更新