so führen Sie ein Powershell-Skript als Administrator aus

Auf meinem Windows 7-Desktop habe ich script.ps1, das Administratorrechte benötigt (es startet einen Dienst). Ich möchte auf dieses Skript klicken und es mit Administratorrechten ausführen.

Was ist der einfachste Weg, dies zu erreichen?

Author: Sajee, 2010-02-12

8 answers

Hier ist eine Möglichkeit, dies mit Hilfe eines zusätzlichen Symbols auf Ihrem Desktop zu tun. Ich denke, Sie könnten das Skript an eine andere Person verschieben, wenn Sie nur ein einziges Symbol auf Ihrem Desktop haben möchten.

  1. Erstellen Sie eine Verknüpfung zu Ihrem Powershell-Skript auf Ihrem desktop -
  2. Rechtsklick auf die Verknüpfung und klicken Sie auf Eigenschaften
  3. Klicken Sie auf die Verknüpfung Tab
  4. Klicken Sie auf Erweitert
  5. Wählen Sie Als Administrator ausführen

Sie können jetzt führen Sie das Skript automatisch aus, indem Sie einfach auf die neue Verknüpfung auf Ihrem Desktop doppelklicken.

 62
Author: Kez,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-02-13 12:58:54

Um auf UAC-fähigen Systemen sicherzustellen, dass ein Skript mit vollständigen Administratorrechten ausgeführt wird, fügen Sie diesen Code am Anfang Ihres Skripts hinzu:

param([switch]$Elevated)

function Test-Admin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
    $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}

if ((Test-Admin) -eq $false)  {
    if ($elevated) {
        # tried to elevate, did not work, aborting
    } else {
        Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
    }
    exit
}

'running with full privileges'

Wenn Sie nun Ihr Skript ausführen, ruft es sich erneut auf und versucht, die Berechtigungen vor der Ausführung zu erhöhen. Der Schalter-elevated verhindert, dass er sich wiederholt, wenn etwas fehlschlägt.

Sie können den Schalter -noexit entfernen, wenn das Terminal nach Abschluss des Skripts automatisch geschlossen werden soll.

 26
Author: MDMoore313,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-10-20 14:49:20

Wenn Sie sich in derselben Powershell befinden, können Sie Folgendes tun:

Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
 15
Author: mjsr,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-11-27 11:48:43

Da es auf Ihrem Desktop sitzt, würde ich sagen, der müheloseste Weg, dies zu erledigen, ist es, es auf das elevation Gadget zu ziehen.

Andernfalls können Sie ein separates Skript mit dem Befehl elevate in Ihrem ps1-Skript erstellen.

Oder Sie könnten elevate nur auf das Dienststartbit anwenden.

 4
Author: badp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-02-13 12:36:32

PowerShell ISE lebt bei %windir%\system32\WindowsPowerShell\v1.0\PowerShell_ISE.exe. Sie können mit der rechten Maustaste darauf klicken und "Als Administrator ausführen" auswählen und das Skript von dort aus ausführen.

Sie finden es auch unter dem Windows-Logo > Alle Programme > Zubehör > Windows PowerShell und machen dasselbe mit diesen Verknüpfungen.

 1
Author: vapcguy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-07-16 17:57:01

Wenn Sie eine Option zum Starten eines Powershell-Skripts als Adminstrator direkt über das Explorer-Kontextmenü wünschen, siehe Abschnitt 2 meiner Antwort hier: https://stackoverflow.com/a/57033941/2441655

 0
Author: Venryx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-07-15 06:21:58

Fügen Sie dies dem Anfang des Skripts hinzu:

$currentUser = New-Object Security.Principal.WindowsPrincipal $([Security.Principal.WindowsIdentity]::GetCurrent())
$testadmin = $currentUser.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
if ($testadmin -eq $false) {
Start-Process powershell.exe -Verb RunAs -ArgumentList ('-noprofile -noexit -file "{0}" -elevated' -f ($myinvocation.MyCommand.Definition))
exit $LASTEXITCODE
}
 -1
Author: Anthony,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-10-23 20:34:16

Ich habe diese detaillierte Lösung gefunden, die erklärt, wie man die Option zum Kontextmenü hinzufügt.

Lösung

 -1
Author: Welsige,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-07-08 01:58:37