Ako skontrolovať oprávnenia správcu v skripte PowerShell?

Ak ho potrebujete spustiť s oprávneniami správcu, aby ste mohli spustiť skript PowerShell, môžete skontrolovať aktuálny proces pre administratívne oprávnenia priamo v kóde PS..

Na overenie, či je aktuálny skript spustený v režime „Spustiť ako správca“, môžete použiť nasledujúci kód PowerShell:

Write-Host "Prebieha kontrola práv správcu ..."
if (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity] :: GetCurrent ()). IsInRole ('
[Security.Principal.WindowsBuiltInRole] „Správca“))
Upozornenie na zápis „Nedostatočné povolenia na spustenie tohto skriptu. Otvorte konzolu PowerShell s oprávneniami správcu a znova spustite skript“
prestávka

else
Write-Host "Existujú práva administrátora - pokračujte v skripte ..." -ForegroundColor Green

Uložte kód PowerShell do súboru check_perms.ps1 a spustite ho v konzole bez administrátorských práv:

C: \ PS \ check_perms.ps1

Ako vidíte, objavil sa nápis, že neexistujú žiadne práva správcu, takže skript PowerShell prestal fungovať.

Spustite tento skript teraz vo zvýšenej relácii PowerShell. Ako vidíte, skript zistil, že táto relácia PowerShell je spustená s oprávneniami správcu.

Skripty PowerShell môžete spúšťať s oprávneniami správcu priamo z Prieskumníka systému Windows.

Môžete tiež požiadať o zvýšenie privilégií priamo zo skriptu PowerShell, namiesto tohto riadku:

Upozornenie na zápis „Nedostatok práv“

Použite kód

Start-Process Powershell -ArgumentList $ PSCommandPath -Verely RunAs

Keď spustíte skript bez oprávnení správcu, tento skript sa reštartuje v novej privilegovanej relácii PowerShell a zobrazí sa žiadosť UAC o zvýšenie privilégií..

Ak povolíte eskaláciu privilégií, váš skript PS1 sa spustí s administrátorskými právami (cesta k aktuálnemu súboru skriptu PowerShell prechádza cez premennú prostredia $ PSCommandPath).

Vo verzii PowerShell 4.0 a novšej je ešte jednoduchšie skontrolovať oprávnenia správcu. Na tento účel použite smernicu -RunAsAdministrator.

#requires -verzia 4.0
#requires -RunAsAdministrator
Write-Host "PowerShell začal ako správca" -ForegroundColor Green

Ak skript nie je spustený pod administrátorom, objaví sa chyba:

Skript 'check_perms.ps1' nie je možné spustiť, pretože obsahuje príkaz „#requires“ na spustenie ako správca. Aktuálna relácia Windows PowerShell nie je spustená ako správca. Spustite Windows PowerShell pomocou voľby Spustiť ako správca a potom skúste skript znova spustiť.
Na riadku: 1 znak: 1
+ C: \ PS \ check_perms.ps1
+ ~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: PermissionDenied: (check_perms.ps1: String) [], ScriptRequiresException
+ FullyQualifiedErrorId: ScriptRequiresElevation

Ak spustíte tento skript na počítači s PowerShell v2, objaví sa chyba:

Na 2. riadku nie je možné spracovať príkaz „#requires“, pretože nie je v správnom formáte.
Príkaz „#requires“ musí byť v jednom z nasledujúcich formátov:
"#Requires -shellid"
„#Vyžaduje sa -verzia“
"# Vyžaduje -pssnapin [-version]"

Na správu služby Active Directory budete možno potrebovať ďalšiu úlohu: zo skriptu PowerShell musíte overiť, či má aktuálny používateľ práva správcu domény. Použite nasledujúci kód:

Ak ([[Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity] :: GetCurrent ()). IsInRole („Správcovia domén“))

# používateľ, ktorý spustil skript, má práva správcov domén

inak

# no rights Domain Admins