Wie definiere ich eine PowerShell-Funktion, die eine erhöhte Rechteausrichtung erfordert?

Wie definiere ich eine PowerShell-Funktion, die eine erhöhte Rechteausrichtung erfordert?

Da ich keine Alternative zu Linux finde,sudoElevation-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:

  1. Ich führe PowerShell als Benutzer aus
  2. Ich führe die oben genannte Funktion aussystem-check
  3. 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

Quelle:Mit erhöhten Berechtigungen ausführen

verwandte Informationen