2014-10-21 2 views
1

Я пишу скрипт миграции пользователей с сервера 2008 на сервер 2008 R2. У меня большая часть написанного скрипта, однако я застрял в получении SID для экспорта реестра пользователя. до сих пор у меня есть:Запрос SID с использованием WMIC и установка переменной в пакетном файле

for /f "tokens=1" %%B IN (D:\users\$userprofile%\desktop\user.txt) do SET userx=%%B 
echo %userx% 
for /f "skip=2 tokens=2 delims=," %%A in ('WMIC useraccount WHERE name='%userx%' get 
sid /format:csv') DO SET usersid=%%A 
echo %usersid% 

Я в настоящее время тестирует этот кусок так user.txt содержит только мое имя, но .txt позже будет заселена с пользователями, которые будут перенесены. В настоящий момент код не возвращается

dgibbons - Invalid alias verb. 

Команда WMIC работает нормально. Поиски неверной ошибки глагола псевдонима указывают на пробел после имени = (как в имени = '% userx%'). Удаление переменной (оставление CMIC cmd в цикле for) и вставка моего имени пользователя по-прежнему возвращает ту же ошибку. Я также пробовал с двойными, одиночными и без кавычек, каждый из которых возвращал ту же ошибку. Кажется, проблема в том, что цикл for создает пространство перед именем пользователя; это все равно. Кто-нибудь знает, как заставить код работать?

ответ

0
@echo off 

for /f "skip=2 tokens=2 delims=," %%A in ('"WMIC useraccount WHERE name='%username%' get sid /format:csv"') DO (
    SET usersid=%%A 
) 
echo %usersid% 

Проблема заключается в = знак, который является стандартным ограничителем и в этом случае выступает в качестве space.The наиболее удобный способ, чтобы исправить это по мне использует двойные кавычки внутри отдельных из них. Также может быть экранировано с ^=, но делает код немного нечитаемым.

 Смежные вопросы

  • Нет связанных вопросов^_^