
Da ich keine Alternative zu Linux finde,sudo
Elevation-Befehl habe ich folgende Frage:
Wie definiere ich eine PowerShell-Funktion, die erhöhte Rechte erfordert? Ich meine die UAC-Eingabeaufforderung.
Angenommen, die Funktion lautet:
function system-check {
SFC /ScanNow
}
System:
Windows 8.1 Pro 64-bit
Power Shell:
Major Minor Build Revision ----- ----- ----- -------- 5 0 10586 117
BEARBEITEN1:
Um es 100 % verständlich zu machen, möchte ich es anders formulieren:
- Ich führe PowerShell als Benutzer aus
- Ich führe die oben genannte Funktion aus
system-check
- Ich möchte, dass die Funktion erhöht wird, um den Befehl ausführen zu können. Beachten Sie, dass die UAC-Eingabeaufforderung angezeigt werden soll
Antwort1
So führen Sie einen bestimmten Befehl aus einem Fenster mit erhöhten Rechten aus:
Start-Process -FilePath powershell.exe -ArgumentList {$ScriptBlock} -verb RunAs
Zum Beispiel:
Start-Process -FilePath powershell.exe -ArgumentList {
SFC /scannow
} -verb RunAs
So führen Sie ein bestimmtes Skript aus einem erhöhten Fenster aus:
Start-Process powershell -ArgumentList '-noprofile -file MyScript.ps1' -verb RunAs
So führen Sie eine komplette PowerShell-Sitzung mit der Aufforderung zur Eingabe der Benutzerkontensteuerung aus:
Start-Process powershell.exe -Verb runAs
Eine Funktion, die $True oder $False zurückgibt, wenn das aktuelle Fenster mit erhöhten Berechtigungen ausgeführt wird:
function isadmin
{
#Returns true/false
([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
}
Um sicherzustellen, dass ein Skript nur als Administrator ausgeführt wird, fügen Sie Folgendes am Anfang hinzu:
If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
{
Echo "This script needs to be run As Admin"
Break
}
In PowerShell v4.0 kann das oben genannte durch die Verwendung einer #Requires-Anweisung vereinfacht werden:
#Requires -RunAsAdministrator