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:
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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 348445
Url: https://administrator.de/forum/sid-per-script-auslesen-und-als-variable-einlesen-348445.html
Ausgedruckt am: 04.05.2025 um 09:05 Uhr
9 Kommentare
Neuester Kommentar
Hi,
der Dwenkfehler wird sein, dass der Pfad der SID.txt nicht stimmt.
Warum sollte
Versuche mal auch hier den Pfad der Datei vollständig anzugeben:
E.
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.

Wieso umständlich in eine Datei schreiben?? Unnötig!
Dein Problem sind die weiteren Leerzeilen die wmic produziert, die lassen sich aber so umgehen:
Fertsch.
Gruß
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%
Gruß

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!die Idee hatte ich auch schon, allerdings zeigt er, wenn ich den Code so in die Batch schreibe nur eine leere CMD an.
Geht so schon eh und jeh, du machst also offensichtlich etwas grundlegend falsch.
Guckst du hier:

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??? Ok nach ca. 3 Minuten bekomme ich die SID zurück. Das ist allerdings zu lang. Gibt es noch eine andere Lösung?
(New-Object System.Security.Principal.NTAccount("DEINUSERNAME")).Translate([System.Security.Principal.SecurityIdentifier]).Value

Ansonsten hier noch was in Batch
Und natürlich wie immer auf einem Server mit dem Oldtimer dsquery
@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