PowerShell - Automatizácia windowsu podruhé

Vystavil tito100

04.11.2011

2
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.

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

Hodnocení +33Líbí
Přečteno 467-krát

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?




Poslední komentáře

Sousední akvárko

Nejčtenější

Nejlepší

Web Kreveta.net je unikátní sbírkou článků mapují proces tvorby her. Vedle návodů naleznete v krevetím akvárku i rozhovory s vývojáři, recenze, soutěže. Portál Kreveta.net připravují (řazeno abecedně): Akhera, Banane4joy, Bullet_catcher, Burák, Fire.js, Ikkju, Izual, Likandro, Makan, PepiCzech, StorN, Tior.
Akvárko vymaloval Tior, o chod filtrace se stará StorN (design a kód).
Copyright © 2010 Kreveta.net. Všechna práva vyhrazena.