Führen Sie das Skript als Administrator aus, zeigen Sie jedoch Informationen zum aktuell angemeldeten Benutzer an

1

Normalerweise führe ich Skripte als Administrator in einer Domain aus, was einige Zeit in Anspruch nimmt, um zu beenden, was sie tun. zB eine Office-Version deinstallieren und eine andere installieren.

Diese Skripte (hauptsächlich Powershell und Bat) werden, wie bereits erwähnt, als Administrator in einer anderen Benutzersitzung ausgeführt als der aktuell angemeldete Benutzer.

Gibt es eine Möglichkeit, dem derzeit angemeldeten Benutzer über dieses Skript Informationen anzuzeigen?

In jeder Form, die nicht zu ablenkend ist, z. B. würde ich eine Nachrichtenbox, einen Trayballon usw. bevorzugen.

Ihre Referenzen sind mir unbekannt.

Msg.exe während Informationen überträgt, suchte ich nach etwas interaktiver, wenn möglich.

Sonamor
quelle
1
RunAs gibt an den Benutzer aus, mit dem die Anwendung / das Skript gestartet wurde (von Hand oder von einem beliebigen Autobat), und zwar unabhängig von dem Benutzer, der in seinen Parametern verwendet wird ...
Akina
Was versuchst du zu erreichen? Benachrichtigen Sie den Benutzer, dass das Skript ausgeführt wird? Sofern Sie das Konsolenfenster dieses Skripts nicht ausblenden, wird diese Konsole trotzdem angezeigt.
Postanote
Wenn das Skript unter UserA ausgeführt wird, sieht UserB nichts.
Sonamor
@ Sonamor Wie haben Sie dieses Skript gestartet? Können Sie uns einen Code davon geben?
Hackoo
Der Code wird über QUEST KACE SMA (ehemals DELL) bereitgestellt, es kann sich jedoch auch um ein Anmeldeskript oder ein Gruppenrichtlinienobjekt handeln. Der Code spielt keine Rolle, es könnte auch nur ein Meldungsfeld sein, in dem ich die Ausgabe lesen kann.
Sonamor

Antworten:

1

Dies ist eine gute Anwendung für das msgDienstprogramm. Ein Nachrichtenfenster mit der Aufschrift "Ich habe das Ding gemacht!" Verwenden Sie in der aktuellen interaktiven Sitzung den folgenden Befehl:

msg console I did the thing!

Sie können auch festlegen, dass das Meldungsfeld nach einer bestimmten Anzahl von Sekunden mit dem /timeSchalter automatisch ausgeblendet wird . Diese Nachricht bleibt beispielsweise nur zehn Sekunden lang aktiv:

msg console /time:10 This message will self-destruct in 10 seconds.
Ben N
quelle
Hallo Ben, ich hätte dies zu meiner ursprünglichen Frage hinzufügen sollen, aber mir war die msg.exe bereits bekannt. Ich war auf der Suche nach etwas Interaktiverem wie einer Fortschrittsanzeige oder einem Meldungsfeld, in dem ich den Knopf bekomme, den ich gedrückt habe.
Sonamor
@ Sonamor Ah, das ist in der Tat eine etwas andere Frage. Wenn Sie nur warten möchten, bis der Benutzer das Meldungsfeld bestätigt, können Sie den /wSchalter an liefern msg. Darüber hinaus müssen Sie wahrscheinlich einen dateibasierten Datenübertragungsmechanismus aufbauen und psexecein benutzerdefiniertes Programm / Skript starten.
Ben N
Ich dachte, das wäre der Fall, da ich vor meiner Ankunft umfangreiche Nachforschungen angestellt habe. Der / w-Schalter war mir allerdings nicht bekannt, danke.
Sonamor
0

Mit dieser Funktion können Sie den Benutzer physisch an der Konsole anmelden. Ich habe ein paar Apps, wo dies benötigt wird.

Function CurrentUser{
#CurrentUser function converts the username object string "@{username=domain\user}" 
#         to the exact logon string "user" like the example below
#@{username=DOMAIN\USER}
#@{username DOMAIN\USER}
#DOMAIN\USER}
#DOMAIN\USER
#DOMAIN USER
#USER
$loggedInUserName = get-wmiobject win32_computersystem | select username
$loggedInUserName = [string]$loggedInUserName
$loggedinUsername = $loggedInUserName.Split("=")
$loggedInUserName = $loggedInUserName[1]
$loggedInUserName = $loggedInUserName.Split("}")
$loggedInUserName = $loggedInUserName[0]
$loggedInUserName = $loggedInUserName.Split("\")
$loggedInUserName = $loggedInUserName[1]
Return $loggedInUserName
}

Referenz: Geben Sie hier die Beschreibung des Links ein

discorallado
quelle
OK? Das gibt Ihnen den angemeldeten Benutzer auf dem System und nicht Ihr Administratorkonto. Sie können nicht wirklich damit interagieren oder eine Nachricht senden, oder? Übrigens können Sie diesen Oneliner für die oben genannten $ (Get-WMIObject-Klasse Win32_ComputerSystem | Select-Object-Benutzername) verwenden. Benutzername
Sonamor
1
Ich bin mir in Ihrem Anwendungsfall nicht 100% sicher.
Discorallado
Oder noch kürzer - (Get-WMIObject-Klasse Win32_ComputerSystem) .Username --- oder --- (Get-WMIObject Win32_ComputerSystem) .Username --- oder --- (gwmi $ Win32_ComputerSystem) .Username. Was die Interaktion mit ihr angeht, nein, außer sie zu entlassen.
Postanote
@postanote Großartige Arbeit! Je kleiner, desto besser!
Discorallado