Antworten:
Hier ist eine Möglichkeit, dies mithilfe eines zusätzlichen Symbols auf Ihrem Desktop zu tun. Ich vermute, Sie könnten das Skript an eine andere Stelle verschieben, wenn Sie nur ein einziges Symbol auf Ihrem Desktop haben möchten.
Sie können das Skript jetzt ausführen, indem Sie einfach auf die neue Verknüpfung auf Ihrem Desktop doppelklicken.
script.ps1
funktioniert genauso wie eine Verknüpfung zu powershell.exe -f script.ps1
, aber letztere kann so eingestellt werden, dass sie als Administrator ausgeführt wird ( powershell.exe /?
Erläuterungen zum Schalter -f
oder finden Sie unter -File
)
Fügen Sie auf UAC-fähigen Systemen den folgenden Code am Anfang Ihres Skripts hinzu, um sicherzustellen, dass ein Skript mit vollständigen Administratorrechten ausgeführt wird:
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 Ihr Skript mit der Option -elevated ausführen, wird vor der Ausführung versucht, die Berechtigungen zu erhöhen.
param(...)
oben hinzu und leiten Sie es kurz vorher weiter -elevated
. Sie müssen klug sein, wie Sie ArgumentList
das String[]
Formular erstellen. Vielleicht möchten Sie das Formular verwenden.
Wenn Sie in der gleichen PowerShell sind, können Sie dies tun:
Start-Process powershell -verb runas -ArgumentList "-file fullpathofthescript"
Da es sich auf Ihrem Desktop befindet, ist es meiner Meinung nach am einfachsten, es auf das Höhen-Gadget zu ziehen .
Andernfalls könnten Sie mit dem elevate
Befehl in Ihrem ps1-Skript ein separates Skript erstellen.
Oder Sie können sich elevate
nur auf das Dienststartbit beziehen.
PowerShell ISE befindet sich unter% 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 Windows Logo> Alle Programme> Zubehör> Windows PowerShell und können mit diesen Verknüpfungen dasselbe tun.
Wenn Sie die Möglichkeit haben möchten, ein Powershell-Skript als Administrator direkt über das Explorer-Kontextmenü zu starten, lesen Sie Abschnitt 2 meiner Antwort hier: https://stackoverflow.com/a/57033941/2441655
Fügen Sie dies am 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
}
powershell -f