A szkriptjeinkbe bizonyos feltételek meglétét megkövetelhetjük egy speciális megjegyzés szerepeltetésével a szkriptfájlban. Ez a lehetőség természetesen nem csak a szó szerinti szkriptekre adott, hanem a szkriptmodulokra is, viszont nem használhatók függvényekben.
Az egy vagy több követelmény bárhol lehet a szkripten belül, viszont az adott sorban a sor legelején kell lennie. Persze érdemes a követelményeket a szkript elejéhez közel szerepeltetni, hogy könnyebb legyen a forráskódban ezeket fellelni.
Példaként álljon itt egy nagyon egyszerű szkript, amiben megkövetelem, hogy rendszergazda szintű jogkörrel legyen futtatva:
Get-Date
#requires -RunAsAdministrator
$PSVersionTable
Annak ellenére, hogy nem a legelső sorban van a követelményt jelző #requires megjegyzés mégis a szkript el sem indul, ha az nem teljesül:
PS C:\> C:\PowerShell\test-requires.ps1
C:\PowerShell\test-requires.ps1 : The script 'test-requires.ps1' cannot be run
because it contains a "#requires" statement for running as Administrator. The
current Windows PowerShell session is not running as Administrator. Start Win
dows PowerShell by using the Run as Administrator option, and then try runnin
g the script again.
At line:1 char:1
+ C:\PowerShell\test-requires.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : PermissionDenied: (test-requires.ps1:String) []
, ScriptRequiresException
+ FullyQualifiedErrorId : ScriptRequiresElevation
A lehetőségek a PowerShell a jelenlegi legújabb 5.1-es PowerShell verzióban a következők:
#Requires |
Magyarázat |
-Version
<N>[.<n>] |
A PowerShell verziójának minimum értéke. Sajnos jelenleg még pontos vagy maximális verziót nem követelhetünk meg. |
-PSSnapin
<PSSnapin-Name> [-Version <N>[.<n>]] |
Egy PSSnapin és annak valamely minimális verzióját követeljük meg. |
-Modules {
<Module-Name> | <Hashtable> } |
Valamely modul jelenlétét követeljük meg. Vagy a modul nevét adjuk meg paraméterként vagy egy hashtáblát, amelynek a következő kulcsai lehetnek: @{ModuleName = "NetAdapter";
ModuleVersion = "1.5"; GUID =
"1042b422-63a8-4016-a6d6-293e19e8f8a6"} A GUID az opcionális, kihagyható. Amennyiben a modul megtalálható a standard modul elérési utakon, akkor a szkript be is tölti azt. |
-ShellId <ShellId> |
A Shell azonosítója, a „gyári” PowerShell esetében ez Microsoft.PowerShell. |
-RunAsAdministrator |
Ez nem igényel paraméterértéket. Akkor engedi a szkript futtatását ha emelt szintű jogosultsággal fut a PowerShell processz. |
-PSEdition |
Teljes Windows rendszerek esetében ez Desktop, Nano Server vagy Windows IoT esetében ez Core. |
Az adott gépen elérhető ShellID-ket a következő módon lehet lekérdezni a registry-ből:
PS C:\> Get-childItem -Path hklm:\SOFTWARE\Microsoft\PowerShell\1\ShellIds | Se
lect-Object -ExpandProperty pschildname
Microsoft.PowerShell
ScriptedDiagnostics
A PSEdition értéke a következő módon ellenőrizhető:
PS C:\> $PSVersionTable.PSEdition
Desktop
Használjuk bátran a követelményjelzőket szkriptjeinkben, főleg akkor, ha azokat valaki más számára fejlesztjük, hiszen így sokkal egyértelműbb hibajelzéseket fog a szkript adni rögtön az indítás után és nem kell vergődnie addig, míg az inkompatibilitás miatt valami elromlik.