| Attila's profileTuróczy Attila (MCP, MCT...PhotosBlogLists | Help |
|
December 18 Letölthető a Visual Studio 2008 / NET 3.5 training kitEz training kit prezentációkat, demókat és Hands-on Laborokat tartalmza. Segítségével elsajátíthatjuk a Visual Studio 2008 és .NET 3.5 új lehetőségeit.
Én mindenkinek ajánlom figyelmébe a Hands-on Labokat, nagyon sokat lehet belőlük tanulni. A csomagot bárki szabadon letölthetti a a közel 130 Megás fájlt a Microsoft oldaláról. December 11 Hány MCP van világszerte?Tegnapi blogomban írtam, hogy MCP-ből ill MCTS-ből nincs is olyan sok világszerte. És többen irtak mailt, hogy mégis pontosan mekkora ez a szám. Nos az ő számúkra itt a válasz:
Érdekesség, hogy inkább az IT vizsgák a népszerüek. Az NT 4.0 -ás vizsgát majdnem 400.000 tették le. A Developer vizsgák nem ilyen népszerűek. De mint látszik mindenkép érdemes le MCPzni, már csak a Welcome kit miatt is :-) December 10 Miért is érdemes MCP-zni?Sokan sokfélét mondanak az MCP-ről. Sokan úgy tartják nem érdemes MCP-zni, hisz többre megyünk, ha folyton a padot koptatjuk, és csak azt tanuljuk amit a suliban leadnak. Így fogunk diplomát kapni. Kedves Attila! Az emberre az alig néhány száz ember által olvasott blogjában is rátalálnak. :-) Megéri MCP-zni? UI: Aki még nem MCPzet le az hajtson rá, mert ez így tényleg megéri. MCTS WinAPP ből a világon összesen 5988 személynek van minősítése (novemberi adat). Érdekesség a Windows Serverből ez a szám 250.000 feletti. December 07 PowerShell alapok - Rendszergazdáknak
A PowerShell egy teljesen új generációs parancssoros felügyeleti eszköz. Ahhoz, hogy megértsük és átlássuk a működését ismerkedjünk meg a Powershell kialakulásának okaival, és mibenlétével. Miért is volt szükség a PowerShellre? Azok a felhasználók (Magukat „Igazi Programozóknak” nevezik) akik igazán egy Unix-terminál előtt ülve érzik magukat elemükben, a Windows rendszereken kényelmetlenül mozogtak. Nem igazán volt számukra igazi alternatíva. Mi is volt? o Command Prompt – kicsit régi, kicsit nehézkes, kicsit korlátolt (De a miénk :-) ) o Windows Scripting Hosting (WSH) - egész jó, hisz a COM objektumok egész sok és sokféle problémára nyújtanak megfelelő megoldást. De a WSH is korlátolt az interaktivitás területén. Mi lehet a megoldás? Adott a Microsoft .NET framework, amely rengeteg problémára nyújt megoldást, de a keretrendszer által készített programokat le kell fordítani, hiszen csak programozók használják. De a fejlesztők úgy gondolták, hogy ki kellene aknázni a keretrendszer által nyújtott lehetőségeket a rendszergazdáknak is. Tehát összefoglalva szükség volt egy robosztus, minden körülmények között helytálló Shellre. Egy olyan shellre amely: · Olyan interaktív, mint a bash · Olyan jól és rugalmasan programozható, mint a Perl · És beágyazható, mint a TCL Így született meg tehát a PowerShell (CodeName: Monad). Tehát a Powershell egy vadonatúj scriptrendszer mely .NET objektumokkal zsonglőrködik. Ennek jelentőségét a Pipe (csövezésnél) értjük meg igazán. A PowerShellben használt parancsokat cmdleteknek nevezzük. Nézzük meg közelebbről mire is képes ez az új generációs parancssoros felügyeleti eszköz. Mivel az előadás célja nem egy teljes PowerShell ismertetése és bemutatása, ezért elsősorban az öntanulás beindítása a cél. Help Tehát kezdjük a help paranccsal. Mint látjuk a rendszer teljesen önleíró. Láthatjuk a parancsokat, aliasaokat (ezekről később szót ejtünk). Válasszunk ki egy parancsot a listából. Mondjuk nézzünk meg közelebbről a Get-ChildItem –et. Írjuk be a következőt: help Get-ChildItem Ekkor megkapunk minden információt az adott parancsról. De ha ez számunkra még mindig nem lenne elég, adjuk ki a következő parancsot: help Get-ChildItem –example Ekkor példa scripeteket kapunk bőséges leírással, ami azért a kezdeti lépéseket rendkívül megkönnyíti. Alias A következő parancs legyen az alias. Bármilyen meglepő, ezzel a paranccsal ki lehet listázni az úgynevezett aliasokat. Amint látjuk, hogy a régi DOS-os parancsoknak megtalálhatóak a PowerShellbeli megfelelői. PÉLDÁUL: a DIR parancs nem más, mint a Get-ChildItem. De meglehet találni néhány Linuxos parancsot is Például az ls –t. Tehát azok, akik csak régi DOS-os vagy linuxos ismeretekkel rendelkeznek nekiállhatnak a PowerShell használatához és tanulásához. Csővezetés Akik találkoztak már linuxal számukra nem ismeretlen a csővezetés fogalma. A futtatott parancsokat egymáshoz lehet csatolni a pipe ’ | ’ karakter segítségével. Ami annyit tesz, hogy a parancs eredményét nem az outputra borítja, hanem a következő lépésnek adja oda a végrehajtási sorban. A korábbi parancskörnyezetek az egyes parancsok között csak stringet tudtak közvetíteni. Ennek van egy komoly hátránya, gondoljunk csak bele, mi van akkor, ha kivonatoljuk mondjuk egy DIR parancsból a dátumokat vagy például a Read Only flageket? Ez a script, hogyan futna egy arab, vagy egy kínai windowson? Elég lehetetlen feladatnak tűnik. De mégis, hogy működik ez a PowerShellben? Nos, mivel a powershell .Net objektumokat, használ ezért mindaddig objektumokkal dolgozik, amíg valamit ki nem kell borítani a képernyőre, de tovább is dobhatjuk egy pipe segítségével anélkül, hogy információt vesztenénk. Képernyőre íráskor természetesen stringeket ír ki. Ki írjuk a futó processzek listájából az első 6 elemet. Változók használata A PowerShellben természetesen lehet használni változókat is. Például.: $x = get-childitem Ekkor az x változóban el lesz tárolva a Get-ChildItem eredménye. Ahhoz, hogy a változóból kinyerjük az értéket egyszerűen írjuk be a parancssorba a változó nevét: $x, és a képernyőn megjelenik a benne tárolt érték. Természetesen a változóknál is lehet a csővezetést alkalmazni. PÉLDÁUL: $x | select-object –first 3 Ez a parancs csak az első 10 elemet írja ki a képernyőre. (A select-object paranccsal később részletesebben foglalkozunk). Get-Member A Get-Member parancs nagyon fontos, talán a help után a legfontosabb azoknak, akik komolyan bele akarnak kezdeni a powershell scriptelésébe és használatába. Segítségével megtudhatjuk hogy egy-egy parancs milyen .Nett objektumokat használ, és hogy milyen propertyei és metódusai vannak. Hogy ez miért is olyan fontos? Ezt egy példán keresztül mutatom be. PÉLDÁUL: Get-ChildItem Látjuk, hogy a Get-ChildItem cmdlet csak néhány információt oszt meg velünk, Például a fileneveket, vagy épp a fájlok hosszát. PÉLDÁUL: Get-ChildItem | Get-Member A Get-ChildItem, ugyan mutat néhány elemet, ugyanakkor a powershell segítségével ennél lényegesen többet is megtudhatunk. Láthatjuk, hogy az adott cmdlet melyik névteret használja, vagy épp mely metódusokat és propertyket. A rendszer tehát olyan, mintha informatikusok írták volna informatikusoknak. Get-PsDriver Ez a parancs megmutatja a PowerShell driveokat. Mint látható nem csak meghajtókon tudunk járkálni, hanem a registryben, vagy épp a tanúsítványtárban, de akár a környezeti változókat is piszkálhatjuk. A registryben való kutatáshoz egyszerűen írjuk be, hogy cd HKCU: és már be is léptünk a Current userbe. A registrybe való járkálás nem jelenthet senkinek különösebb problémát, az értékek megváltoztatása viszont már macerásabb, ugyanis a kulcsokat külön kell kezelni az értéktől, valamint a kulcsokhoz tartozó default értékek miatt is bonyolultabb. (Ha igény lesz rá, egy tanfolyam keretében bemutatásra kerül, hosszabb lélegzetvételű folyamat) PowerShell üzemmódok A powershellnek 2 üzemmódja van, az egyik a kiértékelő, a másik a parancs üzemmód. Parancs üzemmód: Ha parancsot írok, ami betűvel kezdődik és megtalálja a parancskészletében, Például a DIR parancs akkor az adott parancs értelemszerűen végrehajtódik. Kiértékelő üzemmód: Ha viszont olyat adok meg, amit nem fedez föl a parancskészletében, de kitudja értékelni akkor a kiértékelő üzemmódba vált át. PÉLDÁUL: írjuk be, hogy 1,2,3,4,5 Ez a PowerShell számára egy halmaz definícó volt, amit úgy értékelt ki, hogy kiírta őket a képernyőre. Mint láttuk a PowerShell nem írta ki, hogy „bad command or filename” köszönhető ez a kiértékelő üzemmódnak. Na de mi van akkor, ha azt írom a parancssorba, hogy 1mb? A válasz: 1048576 byte. Ebből is látszik mennyire informatikus közeli ez az új parancssor. Szűrések
Oszlopok szerinti szűrés (select-object) Ezen parancs segítségével szűrhetjük azt, hogy milyen oszlopok jelenjenek meg az adott parancs eredményeként. PÉLDÁUL: get-childItem | select-object –property name, length A select-object segítségével most csak a name és a length oszlop fog megjelenni. Érdekesség, hogy a select-object –first – last kapcsolókkal adhatjuk meg, hogy hány elem jelenjen meg az eredményben. (Értelemszerűen az első 10 –first 10 utolsó 10 –last 10 kapcsolót használjuk) Például.: get-eventlog -logname application | select-object -first 10 Megkapjuk az első 10 bejegyzést az alkalmazások eventlogjából. Ez hasznos is lehet, hisz több ezer bejegyzés is előfordulhat az eventlogba, és ha azt mind a képernyőre dobnánk, eltartana egy darabig amíg a rendszer ezt elvégezné. Sorok szerinti szűkítés (where-object) A where–object parancs segítségével bizonyos feltételnek megfelelően szűkíthetjük a sorokat. Ekkor megkapjuk a legfontosabb információkat az összes processzről. Na de mi most azt szeretnénk, hogy csak azokat a processzeket írja ki amelyeknek a workingset –je nagyobb mint 25MB. Get-Process | where-object {$_.workingset –gt 25mb} $_ az aktuálisan használt sort jelzi, míg a –gt a graterthent (nagyobb, mint) jelöli. A PowerShell ugyanis kényes a <> operátorok használatára. Számoljunk (Measure-object) Ez a parancs egy nagyon ötletes, ugyanis a hozzá beérkező objektumok bizonyos propertyjei alapján tud készíteni összegzést, átlagot, countot stb. Például.: get-childItem | measure-object –property length sum De akár text fájlokon is alkalmazhatjuk a measure-object –et, ugyanis léteznek speciális kapcsolói erre az esetre. Például: -line: sorokat számolja meg -word: a szavakat számolja meg -character: a karaktereket számolja meg egy szövegben. És akkor jöjjön egy kis scriptelés a végére: E-mail küldés powershell segítségével.
Először vizsgáljuk meg közelebbről magát a scriptet. (A PowerShell scriptek kiterjesztése *.ps1) $mail = new–object System.net.mail.mailmessage(„kitol@server.hu”,”kinek@server.hu”,”Tárgy”,”Üzenetem”) $server = new-object System.Net.Mail.SmtpClient(192.168.2.1); $server.send($mail); Mint látjuk, a new-object segítségével egy .NET objektumot példányosítunk, és használjuk a megfelelő paraméterek segítségével. Az adott paramétereket az object-browserből kinézhetjük. A Visual Studioban a View->Object Browser menüpont alatt (Ctrl + W + J) érhetjük el. Mint ahogy a mellékelt ábrán is látható, ha a megfelelő paramétereket használjuk, megalkothatjuk a levelet. $mail = new–object System.net.mail.mailmessage(„kitol@server.hu”,”kinek@server.hu”,”Tárgy”,”Üzenetem”) Ebben a sorban a $mail változóba eltároljuk az egészet objektumot, amely vár arra, hogy őt elküldjék. De neki nincs send metódusa amivel elküldhetjük a levelünket. $server = new-object System.Net.Mail.SmtpClient(192.168.2.1); $server.send($mail); A System.Net.Mail névtérnek viszont van egy SmtpClientje aminek van send metódusa. És ez a send metódus ép egy mailmessage objektumot vár paraméternek.(Ezt is kikereshetjük az Object Browser segítségével) Az SmtpClient példányosításánál pedig a Host címe kell. És ha ezekkel megvagyunk már küldhetjük és a levelünket. Remélem sikerült a powershell iránt felkelteni az érdeklődést, és beindítani az öntanulás folyamatát. Én mindenkinek csak ajánlani tudom e rendszer részletes megismerését, hisz ez a jövő, és ha az ember mind rendszergazda vagy egyszerűen tudatos felhasználó örömét fogja lelni e rendkívül használható új rendszerben. |
|
|