2016-02-11 1 views
0

J'utilise cette ligne dans un script batch qui stocke avec succès la valeur SID d'un utilisateur dans une variable appelée SIDlot magasin WMIC requête avec plusieurs conditions dans la variable

FOR /F "tokens=1,2 delims==" %%s IN ('wmic path win32_useraccount where name^='%_curruser%' get sid /value ^| find /i "SID"') DO SET SID=%%t 

Je voudrais modifier cette option pour inclure une "ET" dans la requête WMIC mais je n'arrive pas à le faire fonctionner.

La requête correcte est:

wmic path win32_useraccount where "name='%USERNAME%' and Domain like 'HB%'" GET SID /VALUE 

Quelqu'un peut-il me s'il vous plaît aider à traduire ce donc la valeur SID est stockée dans une variable?

+0

S'il vous plaît noter également que 'DOS' est le système d'exploitation des années 1980/1990, et je ne pense pas que vous utilisez cela. – SteveFest

Répondre

1

Vous devez escape the % percent character en Domain like 'HB%' en doublant comme suit:

FOR /F "tokens=1,2 delims==" %%s IN (' 
    wmic path win32_useraccount where "name='%USERNAME%' and Domain like 'HB%%'" GET SID /VALUE ^| find /i "SID" 
') DO for /F "tokens=*" %%i in ("%%t") do SET "SID=%%i" 

Voici les for boucles sont

  • %%s pour récupérer la valeur SID;
  • %%i pour supprimer la terminaison retour chariot à la valeur renvoyée (comportement wmic): chaque ligne de sortie se termine par 0x0D0D0A (CR + CR + LF) au lieu de 0x0D0A commun (CR + LF).

WMIC and FOR /F: A fix for the trailing <CR> problem de Dave Voir Benham

+0

Merci pour la réponse et le lien utile – user3099768