tzabbi55
Goto Top

SID per Script auslesen und als Variable einlesen

Hallo liebe Administratoren,

heute schreibe ich mein ersten Post hier.

Ich sitze derzeit an einem kleinen Script um bestimmte Registryeinträge auszulesen.
Dazu benötige ich die SID und habe folgendes Script geschrieben, um sie in eine Datei zu schreiben und diese von der Datei wieder einzulesen:


@echo off
set /p Eingabe=Geben Sie den Benutzernamen ein:
wmic useraccount where (name='%Eingabe%' and domain=de) get sid > sid.txt  
for /F "skip=1" %%x in (C:\Users\%Eingabe%\Desktop\sid.txt) do set sid=%%x  

echo %sid%


pause


Jetzt kommt mein Problem:
Ich bekomme die entsprechende Datei "sid.txt" und wenn es mir die SID in der CMD ausgeben möchte kommt die Antwort:
"echo
ECHO ist eingeschaltet (ON)."

Nun habe ich manuell eine Datei "hey.txt" erstellt und per Copy and Paste den Inhalt der "sid.txt" eingefügt, das Script entsprechend geändert, dass das Script aus dieser Datei die 2. Zeile ausgibt und es funktioniert einwandfrei.

Habe ich irgendwo einen Denkfehler?

Vielen Dank schon im Voraus für Eure Hilfe.
Gruß
tzabbi55

Content-Key: 348445

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

Ausgedruckt am: 29.03.2024 um 00:03 Uhr

Mitglied: emeriks
Lösung emeriks 07.09.2017 aktualisiert um 10:55:26 Uhr
Goto Top
Hi,
der Dwenkfehler wird sein, dass der Pfad der SID.txt nicht stimmt.
Warum sollte
wmic useraccount where (name='%Eingabe%' and domain=de) get sid > sid.txt
die Datei "sid.txt" zweifelsfrei auf dem Desktop erstellen?
Versuche mal auch hier den Pfad der Datei vollständig anzugeben:
wmic useraccount where (name='%Eingabe%' and domain=de) get sid > C:\Users\%Eingabe%\Desktop\sid.txt

E.
Mitglied: 133883
133883 07.09.2017 aktualisiert um 11:15:19 Uhr
Goto Top
Wieso umständlich in eine Datei schreiben?? Unnötig!
Dein Problem sind die weiteren Leerzeilen die wmic produziert, die lassen sich aber so umgehen:
@echo off
for /f "tokens=2 delims==" %%a in ('wmic useraccount where name^="%username%" get sid /value') do set "sid=%%a"  
echo %sid%
Fertsch.

Gruß
Mitglied: tzabbi55
tzabbi55 07.09.2017 um 11:15:15 Uhr
Goto Top
Hey emeriks,

danke für die Idee, ich habe den Dateipfad eingefügt, man sieht auch, dass er die Datei erstellt, allerdings bleibt der Fehler bestehen.

Gruß
tzabbi55
Mitglied: tzabbi55
tzabbi55 07.09.2017 um 11:17:49 Uhr
Goto Top
Hey Oneplus,

die Idee hatte ich auch schon, allerdings zeigt er, wenn ich den Code so in die Batch schreibe nur eine leere CMD an.

Gruß
tzabbi55
Mitglied: 133883
Lösung 133883 07.09.2017 aktualisiert um 11:26:03 Uhr
Goto Top
Zitat von @tzabbi55:
die Idee hatte ich auch schon, allerdings zeigt er, wenn ich den Code so in die Batch schreibe nur eine leere CMD an.
Nope, funktioniert einwandfrei!! Funktioniert so nur wenn es in eine Batch geschrieben wird, wird es direkt auf der Konsole ausgeführt müssen stattdessen die doppelten durch einfache Prozentzeichen verwendet werden!

Geht so schon eh und jeh, du machst also offensichtlich etwas grundlegend falsch.

Guckst du hier:

screenshot
Mitglied: tzabbi55
tzabbi55 07.09.2017 um 12:22:26 Uhr
Goto Top
Ok nach ca. 3 Minuten bekomme ich die SID zurück. Das ist allerdings zu lang. Gibt es noch eine andere Lösung?
Mitglied: 133883
Lösung 133883 07.09.2017 aktualisiert um 12:38:05 Uhr
Goto Top
Zitat von @tzabbi55:

Ok nach ca. 3 Minuten bekomme ich die SID zurück. Das ist allerdings zu lang. Gibt es noch eine andere Lösung?
What??? face-big-smileface-big-smile Das geht hier selbst auf einem Raspi mit Windows in unter einer Sekunde! Machst du das auf nem 386er?? Kauf dir einen schnelleren Rechner! Oder nimm gleich Powershell:
(New-Object System.Security.Principal.NTAccount("DEINUSERNAME")).Translate([System.Security.Principal.SecurityIdentifier]).Value  
Mitglied: 133883
Lösung 133883 07.09.2017 aktualisiert um 12:48:44 Uhr
Goto Top
Ansonsten hier noch was in Batch
@echo off
for /f "tokens=2" %%a in ('whoami /user /nh') do set "sid=%%a"  
echo %sid%

Und natürlich wie immer auf einem Server mit dem Oldtimer dsquery
dsquery * -filter "&(objectcategory=user)(samaccountname=maxmuster)" -attr objectsid  
Mitglied: tzabbi55
tzabbi55 08.09.2017 um 10:00:06 Uhr
Goto Top
Danke face-smile