Változó hatókör használata Windows PowerShell-szkriptekben
Intuitív módon feltételezzük, hogy a függvényben beállított változó $computer a függvény befejezésekor elérhető a szkriptben. Ez azonban nem így van. A változók egy adott hatókörrel rendelkeznek, és korlátozottak a hatókörök közötti interakcióban.
Az alábbi táblázat a három hatókört ismerteti, és azt, hogy ezek hogyan befolyásolják a változók használatát.
1. táblázat: Hatókörök
| Hatókör | Leírás |
|---|---|
| Globális | A globális hatókör a Windows PowerShell-parancssorra terjed ki. A Windows PowerShell-parancssorban beállított változók az adott Windows PowerShell-parancssorban indított összes szkriptben áttekinthetők. A Windows PowerShell-parancssorban létrehozott változók nem léteznek más Windows PowerShell-parancssorokban vagy a Windows PowerShell integrált szkriptelési környezet (ISE) példányaiban. |
| Szkript | A szkript hatóköre egyetlen szkriptre érvényes. A szkripten belül beállított változókat a szkript összes függvénye áttekintheti. Ha olyan változóértéket állít be a szkript hatókörében, amely már létezik a globális hatókörben, egy új változó jön létre a szkript hatókörében. Ezután két azonos nevű változó található két külön hatókörben. Ezen a ponton, amikor áttekinti a változó értékét a szkriptben, a szkript hatókörében lévő változó értéke lesz visszaadva. |
| Függvény | A függvény hatóköre egyetlen függvényhez tartozik. A függvényen belül beállított változók nem lesznek megosztva más függvényekkel vagy szkripttel. Ha olyan változóértéket állít be a függvény hatókörében, amely már létezik a globális vagy a szkript hatókörében, a függvény hatókörében létrejön egy új változó. Ezután két azonos nevű változó található két külön hatókörben. |
Feljegyzés
A félreértések elkerülése érdekében ajánlott elkerülni, hogy ugyanazokat a változóneveket különböző hatókörökben használják.
Amellett, hogy egy változót magasabb szintű hatókörben tekint át, a változót úgy is módosíthatja, hogy kifejezetten hivatkozik a változó hatókörére a módosításkor. Egy függvény szkripthatókör-változójának módosításához használja az alábbi szintaxist:
$script:var = "Modified from function"
Ajánlott elkerülni a változók hatókörök közötti módosítását, mert ez zavart okozhat. Ehelyett állítsa be a szkript hatókörváltozóját a függvény kimenetével egyenlőre. Ha a függvény adatai egy változóban találhatóak, a Return() használatával visszaadhatja azokat a szkriptnek.
Az alábbi példa egy függvény végén található Return() függvény használatával adja vissza a változó értékét a szkript hatókörének:
Return($users)
Feljegyzés
A Return() függvény használata hozzáadja a megadott adatokat a visszaadott adatfolyamathoz, de nem helyettesíti a folyamatban lévő meglévő adatokat. A szkriptfejlesztés részeként ellenőriznie kell, hogy egy függvény pontosan mely adatokat adja vissza.