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