VisualBasic Script soll Computerbeschreibung ändern

Bisumaruku

Lt. Commander
Registriert
Nov. 2006
Beiträge
1.852
Guten Morgen allerseits,

ich habe folgendes Problem. Ich möchte in unserer Active Directory Domäne auf jedem PC ein Script ausführen das den angemeldeten Username im AD sucht und dessen Beschreibung (dort steht die Abteilung des Users drinne) in die Computerbeschreibung eintragen.

Ein solches Script habe ich zwar bereits und es funktioniert auch, allerdings nur wenn der User auf seinem lokalen PC an dem er sich anmeldet auch Administrator Rechte hat. Dies ist bei keinem unserer User eigentlich der Fall.

Mit "runas" kann ich nichts anfangen weil das Script dann die Beschreibung des Users benutzt der es ausführt. Meine Überlegung wäre jetzt einfach aus der Registry den "lastlogonname" oder die DOS Variable "Username" zu nutzen und das Script mit "runas" laufen zu lassen.

Ideen?

Hier mal das Script:
PHP:
Const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."

Dim WshShell

Set objSysInfo = CreateObject("ADSystemInfo")
Set objComputer = GetObject("LDAP://" & objSysInfo.ComputerName)
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objRegistry = GetObject _
("winmgmts:\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "System\CurrentControlSet\Services\lanmanserver\parameters"
strValueName = "srvcomment"
strDescription = objUser.Description

objRegistry.SetStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strDescription

strMessage = objUser.Description & " " & objuser.CN

objComputer.Description = strMessage


WshShell.Run "cmd /C net stop server /Y", 2, true


WshShell.Run "cmd /C net start server", 2, true


WshShell.Run "cmd /C net start computerbrowser", 2, true
 
Lass es doch mit runas laufen und via den Befehl echo %username% bekommst raus wer angemeldet ist.
Du bekommst sogar den selben Benutzernamen, auch wenn du es von einem Commandfenster ausführts unter runas.
 
Also das ändern derartiger Einstellungen erfordert zwangsläufig Administratorrechte. Es sei, denn es wurde von Grund auf anders administriert.

Gibt es bei euch im AD keine Administratoren-Accounts, die sich gegen ganze Domänen oder auch Rechner anmelden können? Oder gibt es Systemaccounts, die es erlauben Dienst etc. im Systemkontext auszuführen?
 
Zuletzt bearbeitet:
dalini schrieb:
Lass es doch mit runas laufen und via den Befehl echo %username% bekommst raus wer angemeldet ist.
Du bekommst sogar den selben Benutzernamen, auch wenn du es von einem Commandfenster ausführts unter runas.

Ist mir schon bewusst, nur hab ich kein Plan von VB! Ich müsste irgendwie die Variable in das Script übertragen oder das Script so umschreiben das es sich den LastLogOnUser holt.


1668mib schrieb:
Wäre es nicht möglich, es irgendwie als Dienst starten zu lassen?

keine ahnung


Sev7eNup schrieb:
Also das ändern derartiger Einstellungen erfordert zwangsläufig Administratorrechte. Es sei, denn es wurde von Grund auf anders administriert.

Gibt es bei euch im AD keine Administratoren-Accounts, die sich gegen ganze Domänen oder auch Rechner anmelden können? Oder gibt es Systemaccounts, die es erlauben Dienst etc. im Systemkontext auszuführen?

Klar gibt es die, aber wenn ich das Script mit runas im Netlogon ausführe krallt der sich nicht den User der sich anmeldet sondern den mit dem das Script ausgeführt wird und das ist bei runas nunmal nicht der gleiche! Verstehste?
 
Jo verstehe ich, aber mir ist dennoch nicht ganz klar wieso du die Skripte nicht im Systemkontext ausführen lassen kannst? Dann ist es doch irrelevant welchen User er such nimmt oder sonst was... Das ganze sollte doch schon mit Windows-Boardmitteln zu machen sein.
 
Ich steh auf dem schlauch, Hilf mir mal. Was genau meinst du?
 
Bei uns in der Firma haben wir diverse Systemaccounts unter denen Dienste laufen. Das bedeutet, dass sofern man einen Dienst einem Systemaccount zuordnet, dieser ohne sonstige Abhängigkeiten ausgeführt werden kann. Daher ist es egal, welcher User den Dienst startet, da er sofort im Systemkontext läuft.
 
Achso, ok ja haben wir auch. Allerdings ermittelt das Script soweit ich weiß den Username mit dem ausgeführt wird, ermittelt dem im AD, liest die Beschreibung aus und schreibt die in die Registry.

Daher wird das auch nix bringen. Außerdem möchte ich vermeiden das ich an 400 PCs laufen muss um nen Dienst einzurichten ^^
 
Also wir haben ca. 7000 Clients in der Firma und da klappt das alles automatisiert ganz gut, aber weiß jetzt auch nicht wie euer Netz aufgebaut ist...
 
Kannst du mir ein Beispiel liefern wie du es machen würdest?
 
Ich würde dir empfehlen das obige VBscript irgendwie in VB.net zu packen und dort direkt die Einstellung runas=Administrator zu aktivieren. Dan müsste es klappen.
 
Hab das nun wie folgt gelöst!

Batch die beim NetLogon aufgerufen wird:
Code:
@echo off & setlocal

for /f "delims=" %%i in ('cscript //nologo "\\%LOGONSERVER%\NETLOGON\scripts\getADInfo.vbs"') do set "Info=%%i"

REG ADD HKLM\SYSTEM\ControlSet001\Services\lanmanserver\parameters /v srvcomment /t REG_SZ /d "%Info%" /f

echo %Info%

VB Script das von der Batch genutzt wird (getADInfo.vbs):
Code:
WScript.Echo GetObject("LDAP://" & CreateObject("ADSystemInfo").UserName).description

Folgenden Pfad per Gruppenrichtlinie beschreibbar gemacht:
HKLM\SYSTEM\ControlSet001\Services\lanmanserver\parameters
 
Zurück
Oben