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