robcomboy
Goto Top

WMIC - ReturnValue in Batch abfragen

Hallo,
ich habe ein kleines Problem.
Vielleicht kann mit jemand helfen


Dieser Einzeiler benennt meinen Benutzernamen in "NewName" um.

wmic UserAccount where Name="%USERNAME%" call Rename Name="NewName"  

Um nachzuprüfen, ob dieses erfolgreich geschehen ist, benötige ich den automatisch ausgegebenen ReturnValue Wert in einer Variablen.

Mit %errorlevel% funktioniert es nicht, und ich kenne nicht den Befehl oder die entsprechende Variable, die diesen Wert enthält.

Ist der Befehl erfolgreich ausgeführt worden, dann wird der Wert 0 ausgegeben.

Hoffe jemand kennt eine Lösung.

Grüße, robcomboy

Content-ID: 103801

Url: https://administrator.de/contentid/103801

Ausgedruckt am: 27.09.2024 um 04:09 Uhr

Vierus
Vierus 10.06.2011 um 02:25:07 Uhr
Goto Top
Hallo
ja Thema aus 2008 aber bei 1700 klicks, hier mal ein tip
http://mcse.körbel.at/links/290/wmi/wmic.htm

also wäre die antwort:

wmic useraccount get /value

Direkte Wmic-Auswertung auf Batch-Ebene oder Kommandozeile:

for /F "delims== tokens=1" %n in ('wmic os get serialnumber') do set sn=%n

Guß
Vierus
Friemler
Lösung Friemler 10.06.2011 um 03:39:16 Uhr
Goto Top
Hallo robcomboy,

die SID wird durch eine Umbenennung nicht verändert. Du könntest also zuerst über den alten Usernamen die SID ermitteln und nach der Umbenennung über die SID den jetzigen Usernamen ermitteln. Wenn gewünschter und tatsächlich gesetzter Username gleich sind, war die Aktion erfolgreich.

WMIC benötigt Adminrechte . Ungetestet:
@echo off

setlocal

set "OldName=%UserName%"  
set "NewName=NeuerName"  

set "SID="  
set "Name="  

for /f "tokens=2 delims==" %%s in ('wmic UserAccount Where Name^="%OldName%" get SID /value') do (  
  if not defined SID set "SID=%%s"  
)

wmic UserAccount Where Name="%OldName%" call Rename Name="%NewName%"  

for /f "tokens=2 delims==" %%n in ('wmic UserAccount Where SID^="%SID%" get Name /value') do (  
  if not defined Name set "Name=%%n"  
)

if "%Name%" equ "%NewName%" echo Erfolgreich  

Oder Du könntest das ganze mit VBS lösen, so wie hier beschrieben, und dadurch den Rückgabewert direkt verarbeiten.

Gruß
Friemler