Jak zkontrolovat oprávnění správce ve skriptu PowerShell?

Potřebujete-li jej spustit s oprávněními správce ke spuštění skriptu PowerShell, můžete zkontrolovat aktuální proces pro oprávnění správce přímo v kódu PS.

Následující kód PowerShell lze použít ke kontrole, zda je aktuální skript spuštěn v režimu „Spustit jako správce“ nebo ne:

Write-Host "Kontrola práv správce ..."
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity] :: GetCurrent ()). IsInRole ('
[Security.Principal.WindowsBuiltInRole] „Správce“))
Varování pro zápis „Nedostatek oprávnění ke spuštění tohoto skriptu. Otevřete konzolu PowerShell s oprávněními správce a skript spusťte znovu“
Přestávka

jinde
Write-Host "Existují administrátorská práva - pokračujte ve skriptu ..." -ForegroundColor Green

Uložte kód PowerShell do souboru check_perms.ps1 a spusťte jej v konzole bez administrátorských práv:

C: \ PS \ check_perms.ps1

Jak vidíte, objevil se nápis, že neexistují žádná práva správce, takže skript PowerShell přestal fungovat.

Spusťte tento skript nyní ve zvýšené relaci PowerShell. Jak vidíte, skript určil, že tato relace PowerShell je spuštěna s oprávněními správce.

Skripty PowerShell můžete spouštět s oprávněními správce přímo z Průzkumníka Windows.

Můžete také požádat o zvýšení oprávnění přímo ze skriptu PowerShell, místo tohoto řádku:

Upozornění na zápis „Nedostatek práv“

Použijte kód

Start-Process Powershell -ArgumentList $ PSCommandPath -Verb RunAs

Při spuštění skriptu bez oprávnění správce se tento skript restartuje v nové privilegované relaci PowerShell a zobrazí se žádost UAC o zvýšení oprávnění.

Pokud povolíte eskalaci oprávnění, váš skript PS1 bude spuštěn s administrátorskými právy (cesta k aktuálnímu souboru skriptu PowerShell je předána prostřednictvím proměnné prostředí $ PSCommandPath).

Ve verzi PowerShell 4.0 a novější je ještě snazší zkontrolovat oprávnění správce. Chcete-li to provést, použijte směrnici -RunAsadministrator.

#requires -version 4.0
#requires -RunAsAdministrator
Write-Host "PowerShell spuštěn jako správce" -ForegroundColor Green

Pokud skript není spuštěn pod administrátorem, objeví se chyba:

Skript 'check_perms.ps1' nelze spustit, protože obsahuje příkaz "#requires" pro spuštění jako správce. Aktuální relace Windows PowerShell není spuštěna jako správce. Spusťte Windows PowerShell pomocí možnosti Spustit jako správce a zkuste skript spustit znovu.
Na řádku: 1 znak: 1
+ C: \ PS \ check_perms.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: PermissionDenied: (check_perms.ps1: String) [], ScriptRequiresException
+ FullyQualifiedErrorId: ScriptRequiresElevation

Pokud spustíte tento skript v počítači s PowerShell v2, objeví se chyba:

Nelze zpracovat příkaz "#requires" na řádku 2, protože není ve správném formátu.
Příkaz "#requires" musí být v jednom z následujících formátů:
"#Requires -shellid"
"#Requires -version"
"#Requires -pssnapin [-version]"

Ke správě služby Active Directory budete možná potřebovat další úkol: ze skriptu PowerShell musíte ověřit, zda má aktuální uživatel práva správce domény. Použijte následující kód:

Pokud ([[Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity] :: GetCurrent ()). IsInRole ("Správci domény"))

# uživatel, který spustil skript, má práva správce domény

Jinak

# no rights Domain Admins