2014-10-21 12 views
1

서버 2008에서 서버 2008 R2로 사용자 마이그레이션 스크립트를 작성하고 있습니다. 필자는 대부분의 스크립트를 작성했지만 사용자의 레지스트리 내보내기를 위해 SID를 검색하지 못했습니다. 지금까지 내가 가진 : 사용자와 User.txt를 그냥 내 이름을 포함, 그래서 나는 현재이 작품을 테스트하고있어,하지만이 .txt 나중에 채워집니다WMIC를 사용하여 SID를 쿼리하고 배치 파일에 variabe로 설정

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% 

마이그레이션 할 수 있습니다. 현재 코드 반환

dgibbons - Invalid alias verb. 

WMIC 명령은 정상적으로 작동합니다. 유효하지 않은 별명 verb 오류에 대한 검색은 모두 name = (name = '% userx %'에서와 같이) 다음의 공백을 가리 킵니다. 변수를 제거하고 (for 루프에 WMIC cmd를 남겨두고) 사용자 이름을 삽입해도 여전히 같은 오류가 반환됩니다. 나는 또한 double, single, no quotes로 시도했다. 각각 같은 에러를 리턴했다. 문제는 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% 

문제는 표준 구분 기호이며,이 경우 하나의 사람 안에 큰 따옴표를 사용하는이 나를에 따라 해결하기 위해 우주 (외계) 가장 편리한 방법 역할을 = 기호입니다. 또한 ^=을 사용하여 이스케이프 처리 할 수 ​​있지만 코드를 약간 읽을 수 없습니다.