Verknüpfung auf Powershellbefehl mit Adminrechten


Möchte man einem Benutzer erlauben z. B. die Druckerwarteschlange neu zu starten so benötigt dieser meist Adminrechte dafür. Man kann zwar die Rechte anders zuordnen aber bei Standardeinstellungen werden diese benötigt. Man kann zwar dem Benutzer eine einfache Verknüpfung zur Ausführung des Powershellbefehls einrichten aber das Anfordern der Adminrechte wird schon etwas komplizierter. Damit man nicht immer solange überlegen muss hier der passende Aufruf:

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command "& {Start-Process powershell.exe -Verb runas -ArgumentList ‚-Command ""& {restart-service spooler -force -verbose; “Druckerdienst wurde neu gestartet.“; Start-Sleep -Seconds 5}"" ‚}"

Man kann die Zeile direkt bei der Angabe des Speicherorts einfügen und weiter klicken, den Namen der Verknüpfung noch nennen und schon ist man fertig. Der Befehl startet einfache eine zweite Powershellinstanz welche die Adminrechte anfordert und dann den Neustart der Druckwarteschlange ausführt.

Diese Konzept kann man natürlich noch weiter ausbauen um direkt jegliche Scripte mit Adminrechten ausführen zu können.

Advertisements

4 Antworten to “Verknüpfung auf Powershellbefehl mit Adminrechten”

  1. Quirel Says:

    Leider ist bei obiger Methode die Sache etwas begrenzt, da das Script schnell unübersichtlich wird und vor allem, weil die Zeilenlänge begrenzt ist. Also macht es Sinn die Vorgehensweise auf ein Script anzuwenden. In diesem Fall auf C:\users\admin\adminScript.PS1:

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command „& {$arg=@(‚-ExecutionPolicy ByPass‘, ‚-File C:\Users\admin\AdminScript.PS1‘); Start-Process powershell.exe -Verb runas -ArgumentList $arg}“

    Sollte es Probleme geben, kann man das Adminscript stehen lassen:

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command „& {$arg=@(‚-NoExit‘,‘-ExecutionPolicy ByPass‘, ‚-File C:\Users\admin\AdminScript.PS1‘); Start-Process powershell.exe -Verb runas -ArgumentList $arg}“

    Gibt es bereits Probleme beim ersten Aufruf, kann man hier schauen, woran es evtl. liegt:

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoExit -Command „& {$arg=@(‚-NoExit‘,‘-ExecutionPolicy ByPass‘, ‚-File C:\Users\admin\AdminScript.PS1‘); Start-Process powershell.exe -Verb runas -ArgumentList $arg}“

  2. Quirel Says:

    259-Zeichen Begrenzung!

  3. Quirel Says:

    Da bei Aufruf von Start-Process mit dem Parameter -Verb Runas der Parameter -WorkingDirectory ignoriert wird, muss man ein gewünschtes Verzeichnis zuerst setzen, bevor man ein Script aufruft, z. B. so:

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoExit -Command „& {$arg=@(‚-NoExit‘, ‚-Command „“& {cd c:\temp; . .\setup.PS1}““‚); Start-Process powershell.exe -argumentlist $arg -verb runas }“

  4. Quirel Says:

    Beim Dot-Sourcen klappt obige Variante nicht, statt dessen diese:

    C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoExit -Command „& {$arg=@(‚-NoExit‘, ‚-Command „“cd c:\temp; . .\setup.PS1““‚); Start-Process powershell.exe -argumentlist $arg -verb runas }“

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s


%d Bloggern gefällt das: