сохранить учетную запись пользователя wmic, где имя в переменной

Как сохранить SID текущего пользователя в переменную? Основываясь на аналогичном вопросе, текущий код выглядит следующим образом:

@echo off
for /f %%a in ('wmic useraccount where Name='%username%' get SID') do set "usersid=%%a"
echo %usersid%
exit /b

Есть ли способ сохранить это в переменной %usersid%? Я считаю, что это проблема с отметками '' вокруг %username%.


person 7th Luke    schedule 07.04.2016    source источник


Ответы (3)


@echo off
for /f "usebackq tokens=* delims=" %%a in (`wmic useraccount  where Name^='%username%' get SID /format:value`) do (
  for /f "tokens=* delims=" %%# in ("%%a") do set "%%#"
)
set sid

На моей машине у меня нет псевдонима пользователя.Вот зачем нужен дополнительный FOR

person npocmaka    schedule 07.04.2016
comment
Эй, npocmaka, когда я запускаю ваш код, я получаю сообщение об ошибке, указывающее, что переменная среды sid не определена. Будет ли это установленная боковая линия? - person 7th Luke; 07.04.2016
comment
@7thLuke - что выводит команда wmic username where Name='%username%' get SID /format:value - person npocmaka; 07.04.2016
comment
имя пользователя - Псевдоним не найден. Я думаю, нам нужно использовать учетную запись пользователя wmic, где name='%username%' получить SID - person 7th Luke; 07.04.2016

Я нашел ответ на вопрос с кодом, необходимым для этого. Npocmaka был близок к ответу (если бы я неправильно набрал исходную команду wmic).

@echo off
for /f "delims= " %%a in ('"wmic useraccount where name='%UserName%' get sid"') do (
   if not "%%a"=="SID" (          
      set myvar=%%a
      goto :loop_end
   )   
)

:loop_end
echo %myvar%
person 7th Luke    schedule 07.04.2016

Я упростил код, предоставленный 7-м Лукой.

@echo off
For /f "tokens=2 delims==" %%# in (
'"wmic useraccount where name="%UserName%" get SID /value"') Do (
echo  %%#) & Pause > nul
person Matthew Wai    schedule 01.04.2020