Végrehajtás (., &, Invoke-Expression)

Úgy látszik, szűkösen állunk írásjelekkel, mert a (.)-nak van egy másik jelentése. Amikor egytagú operátorként használjuk, akkor végrehajtási operátor a funkciója, azaz az operandusát végrehajtandó kódként tekinti és végrehajtja azt:

[55] PS I:\>$a= {get-date}

[56] PS I:\>.$a

 

2008. március 14. 14:11:14

 

[57] PS C:\> $a= "get-date"

[58] PS C:\> .$a

 

2008. március 14. 14:12:21

A (.)-hoz hasonlóan az (&) jel is végrehajt:

[59] PS C:\scripts> &$a

 

2008. március 14. 14:13:51

Természetesen a (.) és a (&), mint végrehajtási  operátor paraméterként valamilyen futtatható objektumot várnak: cmdletet, függvényt, szkriptet vagy szkriptblokkot. Akármilyen, számunkra futtathatónak tűnő sztring nem jó nekik:

[60] PS I:\>$a = "(1+2)"

[61] PS I:\>.$a

The term '(1+2)' is not recognized as a cmdlet, function, operable program, or script file. Verify the term and try again.

At line:1 char:2

+ .$ <<<< a

Ha mégis ilyen sztringet akarunk végrehajtatni, akkor van szerencsére erre egy PowerShell cmdletünk, az Invoke-Expression :

[62] PS I:\>Invoke-Expression "1+2"

3

Van egy másik végrehajtó cmdlet, invoke-item :

[63] PS C:\> Invoke-Item C:\munka\szöveg.txt

Ennek paramétereként egy olyan fájlt kell megadni, amelyikhez tartozik hozzárendelt alkalmazás, és a futtatásának hatására elindítja az alkalmazást és betölteti vele a fájlt. Gyakorlatilag ugyanazt csinálja, mintha egérrel duplán kattintanánk a fájlon. Az invoke-expression is megteszi ezt, viszont a [62]-ben látott példa is mutatja, hogy ennél ez többet is tud, így bizonyos esetekben biztonságosabb az Invoke-Item használata.



Word To HTML Converter