Na lokálnom disku pracujem z dátami cez ps, ako napríklad konverovanie, otáčanie, spájanie obrázkov. Obrázky potom nahrávam pomocou winscp na server. najskor však musím obtiažne kontrolovať duplikácie a iné veci. Dnes vám ukážem, ako som si dostal server na lokálnu konzolu.
Dnes tu nebudem popisovať presný postup, ako som čo robil, ale zameriam sa len na použitie a rozšírenie o vlastné príkazy.
Zložka je štruktúrovaná takto:
.
|-- callServer.ps1
|-- functions
| `-- getListItems.php
|-- global.php
|-- globalArguments.php
global.php je Skript, ktorý sa stará o HTTP komunikáciu. Jeho obsahom sa nemusíte zaoberať.
V zložke functions sú vami definované funkcie. Ako názov skriptu použijete rovnaký názov, aký chcete používať v PowerSheli.
V príklade ktorý tam je, si zistíme obsah súborou v priečinku pomocou príkazu v PS
$vysledok = callServer getListItems /images/
Skript getListItems.php nieje moc neobvyklý, sú tam len 4 veci, ktoré budete používať.
V každom skripte musíte uviesť tento riadok, k ktorom si povieme neskor
checkGlobalArguments();
Pre ukážku si vytvoríme script test.php v zložke functions a do neho dáme:
debugOn()// zapneme debugovanie
checkGlobalArguments();
Sám neviem, prečo som nazval veci, tak ako som ich nazval, ale potreboval som ich niejako odlíšiť.
Pod parametrami rozumieme sadu informácií, ktoré ste odoslali z PS bez konkretizovania typu. sú to väčšinou parametre potrebné pre vašu funkciu, ktoré majú jasne dané poradie, poprípade formát.
V ps ich zapíšeme hneď za názvom funkcie, a oddelíme ich medzerov:
$vysledok = callServer getListItems parameter1 parameter2
V php scripte sa tieto parametre rozdelia do poľa pod názvom $parametersArr :
print_t($parametersArr[0],"parameter1");
print_t($parametersArr[1],"parameter2");
Spustíme skript v prehliadači http://localhost/global.php?test test1 test2 a zobraziť by sa nám mal obsah premenných.
Argumenty je niečo podobné, avšak majú jasne daný názov, a doplníte im len hodnotu. Kedže majú názov, poradie je ľubovolné avšak musia následovať až za parametrami. V jednému argumentu možeme priradiť viacej hodnot oddelených medzerami.
Do našeho scriptu test.php pripíšeme
print_t($argumentsArr["filePath"],"filePath");
print_t($argumentsArr["names"],"names");
Zavoláme ho znova z adresného riadka prehliadača
http://localhost/global.php?test test1 test2 -names name1 name2 -filePath c:/
Výsledok by vám mal byť jasný.
Pokiaľ používate niektorý argument často tak tu je jedna pomôcka, celkom jednoduchá.
addGlobalArgumentListener( set_time_limit ,function($arg1){
set_time_limit($arg1[0]);
});
Týmto som si zabezpečil to, aby vždy, keď dostanem argument set_time_limit, tak sa mi nastaví na serveri časový limit. v premennej arg1 sú uložené všetky parametre.
Túto funkciu si uložíme do externého skriptu, ktorý inkludujeme do našej funkcie. Alebo možeme funkciu pridať do súboru globalArguments.php a importovať ho už nemusíme.
Pokial si to uložíme do vlastného súboru, je treba aby ste ho inkludovali pred volaním funckcie checkGlobalArguments();
V PS sa nám výsledok ukladá do xml formátu. Nezabudnite si vo vašom scripte odstrániť premennú $debud=true;.
Najprv je treba importovať prekladač HTTP komunikácie pomocou :
. C:cestakscriptucallServer.ps1
následne si už možeme volať náš požiadavok:
$xmlResult = callServer test test1 test2 -names name1 name2 -filePath c:/
Štruktúra výsledku je následovná
$xmlResult.err obsahuje true v prípade chyby na serveri. V tom prípade sa správa uloží do
$xmlResult.errMessage
Pokiaľ chyba nenastala, tak výsledok je uložený vo formáte, v akom ste ho poslali. V našom prípade v html a nachádza sa v
$xmlResult.result
Obsah xml vypíšete pomocou $xmlResult.result.innerText
Download callServer.zip
Server side
Zložka je štruktúrovaná takto:
.
|-- callServer.ps1
|-- functions
| `-- getListItems.php
|-- global.php
|-- globalArguments.php
global.php je Skript, ktorý sa stará o HTTP komunikáciu. Jeho obsahom sa nemusíte zaoberať.
V zložke functions sú vami definované funkcie. Ako názov skriptu použijete rovnaký názov, aký chcete používať v PowerSheli.
V príklade ktorý tam je, si zistíme obsah súborou v priečinku pomocou príkazu v PS
$vysledok = callServer getListItems /images/
Skript getListItems.php nieje moc neobvyklý, sú tam len 4 veci, ktoré budete používať.
V každom skripte musíte uviesť tento riadok, k ktorom si povieme neskor
checkGlobalArguments();
Pre ukážku si vytvoríme script test.php v zložke functions a do neho dáme:
debugOn()// zapneme debugovanie
checkGlobalArguments();
Parametre
Sám neviem, prečo som nazval veci, tak ako som ich nazval, ale potreboval som ich niejako odlíšiť.
Pod parametrami rozumieme sadu informácií, ktoré ste odoslali z PS bez konkretizovania typu. sú to väčšinou parametre potrebné pre vašu funkciu, ktoré majú jasne dané poradie, poprípade formát.
V ps ich zapíšeme hneď za názvom funkcie, a oddelíme ich medzerov:
$vysledok = callServer getListItems parameter1 parameter2
V php scripte sa tieto parametre rozdelia do poľa pod názvom $parametersArr :
print_t($parametersArr[0],"parameter1");
print_t($parametersArr[1],"parameter2");
Spustíme skript v prehliadači http://localhost/global.php?test test1 test2 a zobraziť by sa nám mal obsah premenných.
Argumenty
Argumenty je niečo podobné, avšak majú jasne daný názov, a doplníte im len hodnotu. Kedže majú názov, poradie je ľubovolné avšak musia následovať až za parametrami. V jednému argumentu možeme priradiť viacej hodnot oddelených medzerami.
Do našeho scriptu test.php pripíšeme
print_t($argumentsArr["filePath"],"filePath");
print_t($argumentsArr["names"],"names");
Zavoláme ho znova z adresného riadka prehliadača
http://localhost/global.php?test test1 test2 -names name1 name2 -filePath c:/
Výsledok by vám mal byť jasný.
Globálne argumenty
Pokiaľ používate niektorý argument často tak tu je jedna pomôcka, celkom jednoduchá.
addGlobalArgumentListener( set_time_limit ,function($arg1){
set_time_limit($arg1[0]);
});
Týmto som si zabezpečil to, aby vždy, keď dostanem argument set_time_limit, tak sa mi nastaví na serveri časový limit. v premennej arg1 sú uložené všetky parametre.
Túto funkciu si uložíme do externého skriptu, ktorý inkludujeme do našej funkcie. Alebo možeme funkciu pridať do súboru globalArguments.php a importovať ho už nemusíme.
Pokial si to uložíme do vlastného súboru, je treba aby ste ho inkludovali pred volaním funckcie checkGlobalArguments();
PowerShell side
V PS sa nám výsledok ukladá do xml formátu. Nezabudnite si vo vašom scripte odstrániť premennú $debud=true;.
Najprv je treba importovať prekladač HTTP komunikácie pomocou :
. C:cestakscriptucallServer.ps1
následne si už možeme volať náš požiadavok:
$xmlResult = callServer test test1 test2 -names name1 name2 -filePath c:/
Štruktúra výsledku je následovná
$xmlResult.err obsahuje true v prípade chyby na serveri. V tom prípade sa správa uloží do
$xmlResult.errMessage
Pokiaľ chyba nenastala, tak výsledok je uložený vo formáte, v akom ste ho poslali. V našom prípade v html a nachádza sa v
$xmlResult.result
Obsah xml vypíšete pomocou $xmlResult.result.innerText
Download callServer.zip
Komentáře
Přidat nový
Pro přispívání musíte být přihlášen
Zapsal Likandro - 05.11.2011 13:48
Ještěže tu ten archiv je...
http://kreveta.net/article/automatizacia-windowsu
Zapsal Raiper34 - 05.11.2011 12:46
ehm poruhe?



