Hallo, ich lasse einen Skript bei uns im Netz vom Benutzer laufen. Abhängig vom Benutzer oder Computer werden weitere Skripte mit Runas und einem Administratorenkonto ausgeführt. In diesen Unterskripten möchte ich aber den eigentlich angemeldeten Benutzer wissen. Aber das Makro @Username gibt mir natürlich den Namen des Runas Benutzers wieder. Kann ich auch im 1. Skript eine Variable mit $user-angemeldet = @Username definieren, die ich im Unterskript weiter verwenden kann ? Oder gibt es auch einen ganz andere Möglichkeit ?
Gruß /Bernhard
Variable im Unterskript (2. Skript mit Runas) verwenden
-
beriac61 -
29. Juni 2015 um 20:47 -
Erledigt
-
-
Ich weiß nicht, ob ich deinen Punkt treffe..
Was wäre wenn jeder Benutzer das Skript mit seinem Benutzernamen aufrufen würde.Run("C:\Program Files\Programm\bla.exe - " & @Username)
Das Skript müsste die Benutzer kennen und könnte dann entsprechend reagieren.
-
Ich verstehe nicht worauf du hinaus willst. Das Problem ist, dass das Hauptskript von jedem Benutzer sowieso ausgeführt wird, aber z.B. ein notwendiges Unterskript (z.B. eine Installation) wegen den Rechten als Admin ausgeführt werden muss. Jetzt brauche ich aber auch die Information des eigentlich angemeldeten Benutzers im Unterskript. Und da hilft mir @Username nicht weiter.
-
Das verstehe ich wiederum nicht
Es liegt sicher an meiner begrenzten Vorstellungskraft. Ich habe wohl das mit Skript und Unterskript nicht verstanden. Ich dachte, jeder hat seine ausführbare Datei und startet damit ein anderes Skript. Dabei könnte der Nutzer beim Ausführen seiner ausführbaren Datei eben seinen Benutzernamen als Programmaufruf mitgeben.
Deine Beschreibung klingt für mich so, als würde jeder Nutzer das Script lokal ausführen. Warum gibt dir @Username dann nicht den Nutzer zurück?
Welchen Nutzer erhältst du denn? -
Übergib einfach aus dem Hauptscript (das mit User-Rechten läuft) den Inhalt von @Username als Parameter an die als Admin gestarteten Unterprogramme. In diesen kannst du mittels der Variablen "$CmdLineRaw" dann auf die Parameter zugreifen und weißt somit welcher Benutzer eigentlich gerade angemeldet ist...
Die Parameter kannst du einfach getrennt durch ein Leerzeichen an den Pfad zum Programm anfügen:
Und im Unterprogramm kannst du dann auf den Usernamen zugreifen: -
Danke für die gute Idee. Ich verstehe zwar die Parameterübergabe, aber leider nicht so sehr die Befehlszeile im Unterprogramm. Kann ich den Parameter @Username vom Hauptskript auch im Unterprogramm weiter verwenden wie z.B. in Msgbox oder in eine andere Variable schreiben ?
-
Wenn du das Starten mit Parametern implementiert hast, pack in das Unterprogramm ne Debugausgabe und lass dir den Inhalt von $CmdLineRaw ausgeben. Was du dann mit dem Usernamen machst ist dir überlassen...
-
Warum schreibst du den von dir gewünschten namen nicht in die Registry da kannst du den bequem wieder auslesen? Umschreiben, oder wie auch immer?
Wenn Registry nicht geht würde sich noch das speichern als umgebungsvariable anbieten. das solte dann aber mit setx.exe gemacht werden, sonst steht der eintrag erst nach neustart zur verfügung. (falls das mit den umgebungsvariablen nicht hinhaut ---> ich bin unverbesserlicher xp fan - da gehts - vista/t/8 --> test it)Gruß
Peter
-
- Offizieller Beitrag
Er startet das Programm doch sowieso per Run. Da ist die Parameterübergabe (wie Christoph54 bereits geschrieben hat) eindeutig die bessere Wahl.
Wozu dann extra noch in die Registry schreiben/lesen?