2017. október 5., csütörtök

A Windows PowerShell használata


A Windows PowerShell® egy feladat alapú parancssori rendszer és parancsfájl nyelv, amelyet kifejezetten rendszeradminisztrációra terveztek. A .NET-keretrendszeren alapuló Windows PowerShell segíti az informatikai szakembereket és az energiafelhasználókat a Windows operációs rendszer és alkalmazások adminisztrálásában és automatizálásában.
Az ebben a részben ismertetett erőforrások segítenek a Windows PowerShell használatáról, a Windows PowerShell szolgáltatással és a grafikus Windows PowerShell szerkesztővel, a Windows PowerShell Integrated Scripting Environment programmal.
Mi van ebben a szakaszban?
A jelen szakasz tartalma segítséget nyújt a Windows PowerShell alkalmazásának, a Windows PowerShell használatának és a Windows PowerShell újdonságainak a legfrissebb verziókban történő használatával kapcsolatban.
A Windows PowerShell újdonságai . Ez a témakör leírja a Windows PowerShell 3.0 és a Windows PowerShell 4.0 változásait.
A Windows PowerShell első lépései . Bevezetés és bemutató, beleértve a rendszerkövetelményeket és utasításokat a Windows PowerShell telepítéséhez és indításához minden támogatott operációs rendszeren.
Windows PowerShell integrált parancsfájl-környezet (ISE) . Dokumentáció Windows PowerShell ISE-hez, grafikus Windows PowerShell szkriptszerkesztő és konzol.
A Windows PowerShell kívánt állapot beállítása (DSC) Áttekintés . Bevezetés a Windows PowerShell 4.0 új szolgáltatásához, a Windows PowerShell kívánt állapot beállítása (DSC). A DSC segítheti a rendszergazdákat abban, hogy következetes konfigurációkat érjenek el a Windows környezetben és olyan eszközökön, mint a hálózati kapcsolók.
PowerShell.exe parancssori súgó . A Windows PowerShell indítása a Windows parancssorból, és az alapvető Windows PowerShell parancsok futtatása.
Windows PowerShell szószedet . Tudjon meg többet a Windows PowerShell és a dokumentációban használt közös kifejezésekről.
Kapcsolódó technológiák
A Windows PowerShell a kapcsolódó szkripttechnológiák családjába tartozik, amelyek segítenek a Windows alapú számítógépek távvezérlésének automatizálásában. Az ezekkel a technológiákkal kapcsolatos további információkkal kapcsolatos linkek megtalálhatók az Ön számára.
Windows PowerShell munkafolyamat . A Windows PowerShell 3.0-ban bevezetett Windows PowerShell Workflow lehetővé teszi az IT-felhasználók és a fejlesztők számára a Windows Workflow Foundation előnyeit a Windows PowerShell automatizálási lehetőségeivel és egyszerűségével.
Windows PowerShell Web Access . Először a Windows Server 2012 rendszerben, a Windows PowerShell Web Access Windows PowerShell átjáróként működik, amely egy webalapú Windows PowerShell konzolt biztosít, amely egy távoli számítógépre irányul. Lehetővé teszi az IT Pro számára, hogy Windows PowerShell parancsokat és parancsfájlokat futtasson egy webböngészőből származó Windows PowerShell konzolról, a kliens eszközön nem szükséges a Windows PowerShell, a távoli felügyeleti szoftver vagy a böngésző beépülő moduljának telepítése.
Windows PowerShell Web Services (Management OData IIS kiterjesztés) . A Windows PowerShell Web Services keretet nyújt a Windows PowerShell cmdleteknek a Webszerveren (IIS) futó OData alapú webszolgáltatáson keresztüli expozíciójával.
Indítsa el a Windows PowerShell kívánt állapot beállítását . A Windows PowerShell A Windows PowerShell 4.0-ban bevezetett Windows PowerShell Windows Server 2003 egy új kezelési platformja a Windows PowerShell rendszerben, amely lehetővé teszi a szoftver szolgáltatások és a környezet működésének konfigurációs adatainak telepítését és kezelését. A DSC egy sor Windows PowerShell nyelvi bővítményt, új cmdleteket és erőforrásokat kínál, amelyek segítségével kimutathatóan meghatározhatja, hogy hogyan kívánja beállítani a szoftverkörnyezet állapotát.
A Windows Management Framework 4.0 Preview tartalmazza a Windows PowerShell, a Windows PowerShell ISE, a Windows PowerShell Web Services (felügyeleti OData IIS kiterjesztés), a Windows Remote Management (WinRM), a Windows Management Infrastructure (WMI), a Kiszolgálókezelő WMI szolgáltatója és egy új szolgáltatás 4.0, Windows PowerShell kívánt állapot beállítás (DSC). A Windows Management Framework 4.0 Preview lehetővé teszi a Windows Server 2012, Windows® 7 SP1 és Windows Server 2008 R2 SP1 rendszerű számítógépek telepítését és használatát.
A Windows Management Framework 3.0 frissítéseket tartalmaz a Windows PowerShell, a Windows PowerShell ISE, a Windows PowerShell Web Services (felügyeleti OData IIS kiterjesztés), a Windows távoli menedzsment (WinRM), a Windows Management Infrastructure (WMI) és a Server Manager WMI szolgáltató. A Windows Management Framework 3.0 lehetővé teszi ezeknek a technológiáknak a telepítését és használatát a Windows® 7 SP1, a Windows Server 2008 SP2 és a Windows Server 2008 R2 SP1 rendszerű számítógépeken.
A Windows PowerShell tanulása
A Windows PowerShell megtanulása elkezdheti az alábbi erőforrásokat:
Microsoft Virtual Academy: Az első lépések a PowerShell 3.0 Jump Start programmal . Ez a Jump Start úgy van kialakítva, hogy megtanulja az elfoglalt IT-szakembereket, az adminisztrátorokat és az ügyintézőket, hogyan használják a Windows PowerShell-et a menedzsment képességek javítása, a redundáns feladatok automatizálása és a környezet mérete terén. Ismerje meg a Windows PowerShellworks munkáját, és hogyan tudja a Windows PowerShell a Windows PowerShell feltalálóját Jeffrey Snover szakértőktől és Jason Helmick, a koncentrált technológia vezető technológusától dolgozni.
Microsoft Virtual Academy: Fejlett eszközök és parancsfájlok a PowerShell 3.0 Jump Start programmal . IT szakemberek, vegye ezt a fejlett Windows PowerShell tanfolyamot, hogy megtudja, hogyan lehet a valós idejű menedzsment és az automatizálási szkriptek hasznos újrafelhasználható eszközöket és cmdleteket váltani. Megtanulják a legjobb mintákat és gyakorlatokat az eszközök építéséhez és karbantartásához, és néhány különleges tippet és trükköt fognak felvenni a Windows PowerShell építészmérnökötől és feltalálójától, Jeffrey Snover megkülönböztetett mérnöktől és Jason Helmick informatikustól.
A Windows PowerShell első lépései . Bevezetés és bemutató, beleértve a rendszerkövetelményeket és utasításokat a Windows PowerShell telepítéséhez és indításához minden támogatott operációs rendszeren.
Windows PowerShell Core Module Reference . A Windows PowerShell motor részét képező nyelvi jellemzők és cmdletek súgótémáinak ábécézett listája.
Windows és Windows Server Automation a Windows PowerShell programmal . A Windows PowerShell modulok súgótémáinak abcített listája, amelyek a Windows Server és a Windows Client szolgáltatásban szereplő szolgáltatások vagy kiszolgálói szerepek részeként szerepelnek.
System Center automatizálás a Windows PowerShell segítségével . A Windows PowerShell modulok súgótémáinak betűrendes listája, amelyek a Microsoft System Center összetevőinek részét képezik.
A Windows PowerShell súgó letöltése és frissítése
A következő témakörök leírják, hogyan érheti el a Windows PowerShell legújabb súgóját, és megjelenítheti azt a Windows PowerShell parancssorában.
Update-Help cmdlet. A Windows PowerShell cmdlet, amely letölti és telepíti a Windows PowerShell modulok súgótémáinak legújabb verzióit a számítógépen.
A Windows PowerShell frissítendő súgórendszerével kapcsolatos további információkért, beleértve a frissített súgó telepítését a hálózatilag elkülönített számítógépeken, tekintse meg a about_Updatable_Help , a Save-Help és a Supportable Updating Help című cikket .
Get-Help cmdlet. A Windows PowerShell cmdlet, amellyel megismerheti a rendszeren telepített cmdleteket és szolgáltatókat.


Syntaxisa;

Copy
PowerShell[.exe]
       [-EncodedCommand <Base64EncodedCommand>]
       [-ExecutionPolicy <ExecutionPolicy>]
       [-InputFormat {Text | XML}]
       [-Mta]
       [-NoExit]
       [-NoLogo]
       [-NonInteractive]
       [-NoProfile]
       [-OutputFormat {Text | XML}]
       [-PSConsoleFile <FilePath> | -Version <Windows PowerShell version>]
       [-Sta]
       [-WindowStyle <style>]
       [-File <FilePath> [<Args>]]
       [-Command { - | <script-block> [-args <arg-array>]
                     | <string> [<CommandParameters>] } ]

PowerShell[.exe] -Help | -? | /?

Egy parancs alap-64 kódolt string verzióját fogadja el. Ezzel a paraméterrel parancsokat küldhet a Windows PowerShell-re, amelyek összetett idézőjeleket vagy göndör beillesztéseket igényelnek.
-ExecutionPolicy

Beállítja az aktuális munkamenet alapértelmezett végrehajtási szabályait, és elmenti azt a $ env: PSExecutionPolicyPreference környezeti változóba. Ez a paraméter nem módosítja a rendszerleíró adatbázisban beállított Windows PowerShell végrehajtási házirendet. A Windows PowerShell végrehajtási irányelveiről, valamint az érvényes értékek listájáról a kb_Execution_Policies (http://go.microsoft.com/fwlink/?LinkID=135170) című részben olvashat.
-Fájl []

Futtatja a megadott szkriptet a helyi hatókörben ("dot-source"), így a szkript által létrehozott függvények és változók elérhetők az aktuális munkamenetben. Adja meg a parancsfájl elérési útját és bármely paramétert. A fájlnak az utolsó paraméternek kell lennie a parancsban, mert a Fájlparaméter név után beírt karakterek a parancsfájl elérési útjaként értelmezendők, majd a szkriptparaméterek és azok értékei.
Beírhatja a parancsfájl és a paraméterek paramétereit a Fájlparaméter értékében. Például: -File. \ Get-Script.ps1 -Domain Central Megjegyzendő, hogy a szkripthez továbbított paraméterek szó szerinti karakterláncokként vannak átolvasva (az aktuális héj értelmezése után). Ha például a cmd.exe programban van, és egy környezeti változó értékét szeretné átadni, a cmd.exe szintaxist kell használni: powershell -File. \ Test.ps1 -Sample% windir% Ha PowerShell szintaxist kíván használni, akkor Ebben a példában a szkript a "$ env: windir" szót és nem a környezeti változó értékét kapja: powershell -File. \ test.ps1 -Sample $ env: windir
Jellemzően a parancsfájl kapcsolási paraméterei szerepelnek vagy kihagyhatók. Például a következő parancs a Get-Script.ps1 parancsfájl All paraméterét használja: -File. \ Get-Script.ps1 -All
-InputFormat {Text | XML}

Leírja a Windows PowerShellre küldött adatok formátumát. Érvényes értékek: "Szöveg" (szöveges karakterláncok) vagy "XML" (szerializált CLIXML formátum).
-Mta

A Windows PowerShell több szálas lakás használatával indul. Ez a paraméter megjelenik a Windows PowerShell 3.0-ban. A Windows PowerShell 3.0-ban az egyszálú lakás (STA) az alapértelmezett. A Windows PowerShell 2.0-ban a többszálú lakás (MTA) az alapértelmezett.
-Nem kijárat

Nem indul el az indítási parancsok indítása után.
-NoLogo

Elrejti a szerzői szalagot indításkor.
-NonInteractive

Nem mutat be interaktív promptot a felhasználónak.
-NoProfile

Nem tölt be a Windows PowerShell profilt.
-OutputFormat {Text | XML}

Meghatározza, hogy a Windows PowerShell kimenete hogyan formázott. Érvényes értékek: "Szöveg" (szöveges karakterláncok) vagy "XML" (szerializált CLIXML formátum).
-PSConsoleFile

Betölti a megadott Windows PowerShell konzolt. Adja meg a konzolfájl elérési útját és nevét. Konzolfájl létrehozásához használja az Export-Console cmdletet a Windows PowerShell programban.
-Sta

A Windows PowerShell egy egyszálas lakás használatával indul. A Windows PowerShell 3.0-ban az egyszálú lakás (STA) az alapértelmezett. A Windows PowerShell 2.0-ban a többszálú lakás (MTA) az alapértelmezett.
-Változat

Megkezdi a Windows PowerShell meghatározott verzióját. A megadott verziót telepíteni kell a rendszerre. Ha a Windows PowerShell 3.0 telepítve van a számítógépen, az érvényes értékek "2.0" és "3.0". Az alapértelmezett érték "3.0".
Ha a Windows PowerShell 3.0 nincs telepítve, az egyetlen érvényes érték "2.0". Az egyéb értékeket figyelmen kívül hagyja.
További információt a "Windows PowerShell telepítése" című témakörben talál a Windows PowerShell első lépéseiben [OLD MSDN].
-WindowStyle

Beállítja az ablak stílusát. Az érvényes értékek Normál, Minimális, Maximális és Rejtett értékek.
-Parancs

A megadott parancsokat (és minden paramétert) úgy hajtja végre, mintha a Windows PowerShell parancssorába írta volna, majd kilép, hacsak nincs megadva a NoExit paraméter. Lényegében minden szöveget a Command után küldünk egyetlen parancssorba a PowerShell-hez (ez különbözik attól, hogy a -File kezeli a parancsfájlhoz küldött paramétereket).
A parancs értéke lehet "-", egy karakterlánc. vagy egy parancsfájl blokk. Ha a Parancs értéke "-", a parancs szövege a szabványos bemenetről olvasható.
A szkriptblokkokat zárójelben kell elhelyezni ({}). A parancsfájlblokkot csak a PowerShell.exe futtatásakor használhatja a Windows PowerShell programban. A szkript eredményei a szülői héjnak lesznek deserializált XML objektumok, nem élő objektumok


Az RSS-és a vRSS Windows PowerShell-parancsok
Érintett kiadások: Windows Server 2016-ban
Ez a témakör segítségével gyorsan keresse meg a műszaki referencia információ a Windows PowerShell-parancsok a fogadó oldali skálázás (RSS) és virtuális RSS (vRSS).
Megjegyzés

A következő RSS-parancsok segítségével konfigurálhatja az RSS egy fizikai számítógépen több processzort vagy több maggal rendelkező. A vRSS egy virtuális gép konfigurálása ugyanazokat a parancsokat használhatja egy támogatott operációs rendszert futtató (VM).
A következő RSS és a vRSS konfigurációs parancsok a hálózati Adapter parancsmagok a Windows PowerShell részét képezik. További információkért lásd: hálózati Adapter parancsmagok a Windows PowerShell.
Virtuálisgép-Várólista konfigurálása
A vRSS megköveteli, hogy a VMQ engedélyezve van-e és konfigurálva. A következő Windows PowerShell-parancsok segítségével kezelheti a virtuálisgép-Várólista beállításait.
Disable-NetAdapterVmq
Enable-NetAdapterVmq
Get-NetAdapterVmq
Set-NetAdapterVmq
Engedélyezheti és konfigurálhatja az RSS natív állomáson
A következő PowerShell-parancsok lehetővé teszik az RSS a natív gazdagépen konfigurálni. Egyes ezek a parancsok paraméterek is hatással lehetnek a Hyper-V gazdagépen a virtuálisgép-várólista (VMQ). Ezek a parancsok segítségével kezelheti a virtuális Gépen, vagy a gazdagép virtuális hálózati adapter (vNIC) RSS.
Fontos

A virtuális gép vagy a gazdagép vNIC RSS engedélyezése előfeltétele történő engedélyezéséről és használatáról a vRSS.
Disable-NetAdapterRss
Enable-NetAdapterRss
Get-NetAdapterRss
Set-NetAdapterRss
A Hyper-V virtuális kapcsoló porton vRSS engedélyezése
Mellett, amely lehetővé teszi a virtuális Gépen az RSS, vRSS megköveteli, hogy engedélyezi a vRSS a Hyper-V virtuális kapcsoló porton. Határozza meg a jelen vRSS beállításait, és engedélyezi vagy letiltja a szolgáltatást a virtuális gépek, használhatja a következő Windows PowerShell-parancsokat.

Másolás
Get-VMNetworkAdapter <vm-name> | fl
Set-VMNetworkAdapter <vm-name> -VrssEnabled [$True|$False]
Engedélyezheti vagy tilthatja le a gazdagép vNIC a vRSS
Határozza meg a jelen beállításait a vRSS, és engedélyezi vagy letiltja a szolgáltatást egy állomás vNIC, használhatja a következő Windows PowerShell-parancsokat.

Másolás
Get-VMNetworkAdapter -ManagementOS | fl
Set-VMNetworkAdapter -ManagementOS -VrssEnabled [$True|$False]
További információ a következő témakörök hivatkozás.
Get-VMNetworkAdapter
Set-VMNetworkAdapter
További információkért lásd: virtuális Fogadóoldali skálázást (vRSS).

A Windows PowerShell rejtelmei
Soós Tibor, 2010. március 16. 08:46 Szólj hozzá!
Ez a cikk több évvel ezelőtt születetett, ezért előfordulhat, hogy a tartalma már elavult. Frissebb anyagokat találhatsz a keresőnk segítségével:

Keress
Úgy tapasztaltam, hogy nagyon kevesen tudják, hogy mi is az a PowerShell és mire jó, ezért gondoltam, hogy néhány egyszerű, de azért hasznos példán keresztül elmagyarázom a gyakorlati felhasználásának lehetőségeit.
A cikksorozat szlogenje az lehetne: szabaduljunk ki a grafikus céleszközök fogságából, és valósítsuk meg azokat a funkciókat, amelyeket eddig mindenféle internetről összevadászott, gyakran beazonosíthatatlan forrásból származó segédprogrammal oldottunk meg!

Mi az a PowerShell?

A PowerShellt a Microsoft eleinte a hagyományos DOS-prompt, a parancssor utódjaként aposztrofálta, de aztán egyre inkább egy univerzális rendszerkezelő, feladatautomatizáló platformként lett definiálva. Ez azt jelenti, hogy a PowerShell segítségével olyan, a rendszerüzemeltetésben felhasználható kifejezéseket, kisebb-nagyobb programokat lehet írni, melyekkel a Microsoft egyre több szoftverét lehet vezérelni.

Nem feltétlenül kell mindenkinek a konzolablakban gépelgetnie mindenféle parancsot. Lesznek persze ilyenek is (ez a cikksorozat azt próbálja bemutatni, hogy ez sem ördöngösség, akár otthoni felhasználói is lehetnek a PowerShellnek), lesznek olyanok is, akik mások számára készítenek szkripteket. Aztán lesznek olyanok is, akik PowerShell-alapú eszközöket használnak, és végül lesznek olyanok, akik a PowerShell képességeit felhasználva készítenek rendszergazdák számára összetett szoftvereket.

Amikor az Exchange Server 2010 grafikus kezelőfelületén kattintgatunk, akkor a háttérben PowerShell-utasítások mennek az Exchange Serverhez, amikor a Windows Server 2008 R2 Active Directory Administrative Centerét használjuk, akkor szintén powershellezünk. Azaz maga a Microsoft is egy olyan platformként használja a PowerShellt, amellyel rendszergazda eszközöket lehet létrehozni.

A PowerShell tehát egyszerre nagyon sok minden: parancssori eszköz, amellyel begépelt parancsokkal tudjuk utasítani a számítógépünket, hogy különböző műveleteket elvégezzen. A PowerShell egy programnyelv is, minden ehhez szükséges jellemzővel: ciklussal, vezérlőutasításokkal, operátorokkal, változókkal, adattípusokkal. A PowerShell a rendszergazdák számára egy olyan eszköz, ami a .NET keretrendszer profi programozók által létrehozott több ezer osztály objektumait és azok szolgáltatásait elérhetővé teszi. És végül számomra, mint informatikai oktatónak egy olyan, mindenki számára elérhető eszköz, amivel mind a Windows operációs rendszerek belső működését, mind az objektum-orientáltságot, mind a programozást nagyon jól meg lehet tanítani.

Az első gyakorlat

Mindennek demonstrálására az első feladat az lenne, hogy kicsit tegyük rendbe a számítógépre áttöltött fényképeinket. A mai digitális fényképezőgépekben található nagy tárolókapacitású memóriakártyák mellett gyakran több száz fényképünk is összegyűlik a „My Pictures” könyvtárban, elég nehéz köztük tájékozódni. Ebben a cikkben addig jutunk el, hogy a képeinket havi bontásban átrakjuk alkönyvtárakba.

A Microsoft Windows 7 érkezésével minden ilyen operációs rendszeren ott van a Windows PowerShell. A többi, de azért Windows XP-nél nem régebbi Microsoft operációs rendszert használók pedig ingyen letölthetik és telepíthetik. Nézzük az első lépést, nyissuk meg a PowerShellt, illetve a kezdőknek talán kényelmesebben használható grafikus szerkesztő felületet, a Windows PowerShell ISE-t!



Ennek a háromosztatú ablaknak a felső részében fogunk dolgozni. A begépelt parancsokat a „Run Script (F5)”  gombbal tudjuk futtatni, az eredmények a középső ablakrészben jelennek meg. Itt a cikkben félkövérrel jelzem azt, amit a felső ablakrészbe kell gépelni. Mindig csak annyi legyen a felső részben, amennyit én itt jelzek, a korábbi parancsokat mindig töröljük ki! Eltérő háttérszínnel az látható, ami a kimeneti ablakrészben jelenik meg. Ahol nagyon sok sor jelenne meg a kimeneten, ott csak az első néhányat másoltam ide.

Kezdjünk neki! Feltételezem, hogy a képek a Pictures könyvtárban találhatók.

cd .\Pictures
dir
Directory: C:\Users\tibi\Pictures


Mode                LastWriteTime     Length Name
-                -     - -
-a-       2009.09.02.     22:58    2525150 P1090919.JPG
-a-       2009.09.02.     22:58    2256418 P1090927.JPG
-a-       2009.09.02.     22:58    2278723 P1090998.JPG
-a-       2009.09.02.     22:59    2499729 P1100022.JPG
-a-       2009.09.02.     22:59    2526647 P1100042.JPG
-a-       2009.09.02.     22:59    2282924 P1100125.JPG

Ez egyelőre még nem túl izgalmas. Azt hisszük, hogy DOS parancsokat használunk, de ez már színtiszta PowerShell, valójában a cd a Set-Location, a dir pedig a Get-ChildItem PowerShell parancsok "álneve". Az igazi érdekesség ott jön elő, ha elkezdünk dolgozni az egyes fájlokkal. Elöljáróban annyit kell tudni, hogy a PowerShellben minden objektum, hogy vannak lekérdezhető és esetleg átírható tulajdonságai,és meghívható metódusai. A metódusok olyan függvények, parancsok, amelyek az adott objektummal kapcsolatban valami értelmes dolgot hajtanak végre. A mi képrendezgető feladatunk szempontjából most a képfájl azon tulajdonsága érdekes, ami a módosításának dátumát tartalmazza. Nézzük, ezt hogyan érhetjük el egy konkrét fájl esetében:

(dir .\P1090919.JPG).lastwritetime
2009-09-02
A zárójelek közti rész egy konkrét fájlt "megragad", majd ennek a fájlnak vesszük a lastwritetime tulajdonságát. A "pont" karakterrel lehet hivatkozni az objektumok tulajdonságaira.

Nekem ebből az év és a hónap kellene számokkal kifejezve, szépen egybefűzve egy kötőjellel, mert ilyen nevű alkönyvtárakba szeretném rendezni a képeimet. Szerencsére az előző kimenetet nem szövegként kell feldolgoznunk (az elég nehéz lenne), hanem erre a PowerShell kész megoldással áll rendelkezésünkre. Miután itt egy dátumról van szó, előveszem a dátumok kezelését végző parancsot, a get-date-et és megadom a megfelelő formázó kifejezést a –Format paraméternév után:

get-date  (dir .\P1090919.JPG).lastwritetime -Format "yyyy-MM"
2009. szeptember 2. 22:52:57
Ez a formázás tehát veszi a dátumból az évek számjegyeit (yyyy), egy kötőjelet, majd a hónapok számának két számjegyét (MM – itt kivételesen fontos a nagybetű, mert kisbetűvel a perceket jelöljük). Na, ez már egy fájlra működik, most nézzük az összes képfájlra ezt hogyan tudjuk ezt előállítani:

dir *.jpg| ForEach-Object {get-date $_.lastwritetime -format "yyyy-MM"}
2010-02
2009-09
2009-09
2009-09
...
Mi is történt itt? A dir-t értjük, az ebből kijövő fájlobjektumokat továbbküldjük a "futószalagon" (| jel) további feldolgozásra. Ezen feldolgozás keretében minden egyes futószalagon érkező objektumra a Foreach-Object parancs segítségével legeneráltatjuk az előbb már látott módszerrel az év-hó formátumú számsort. Az éppen aktuális futószalagon érkező objektumra, jelen esetben fájlra, a $_ jellel tudunk hivatkozni. Fontos, hogy a ForEach-Object utáni kifejezés kapcsos zárójelben van, ennek fontos szerepe van, amire majd egy következő cikkben térek ki.

Ezután alakítsuk tovább a kis programunkat! Ebben a lépésben ellenőrizzük, hogy év-hó formátumú alkönyvtár már létezik-e? Ezt a Test-Path PowerShell paranccsal lehet megtenni. Ennek működésének felderítésére vegyünk fel egy alkönyvtárt ide, a fényképek könyvtárába, mondjuk "egyéb" névvel. Ez után ellenőrizzük, hogy ez mit ad eredményül:

Test-Path ".\egyéb"
True
Ez egy nem létező könyvtárra False eredményt fog adni. Nekünk meg pont ekkor kellene alkönyvtárt létrehozni, amikor ez a vizsgálat hamis eredményt ad. Programozásban jól ismert az IF vezérlőszerkezet, mellyel akkor lehet végrehajtatni valamit, amikor egy feltétel igaznak értékelődik. Nekünk hamis eredményt ad a Test-Path, amikor tennivalónk lenne, így fordítani kell a kiértékelés eredményén, amit a Test-Path eredményének „negálásával” tudjuk elérni, amit a PowerShellben a felkiáltójellel tudunk jelezni. Mindezzel együtt az If szerkezet így néz ki:

If(!negálandó feltétel){végrehajtandó kód}
Könyvtárat a New-Item paranccsal tudunk létrehozni, a következő formátumban:

New-Item –Path hova –ItemType Directory
Fájlt átmozgatni a Move-Item paranccsal tudunk, melynek szerkezete a következő:

Move-Item –Path  –Destination célkönyvtár
Még annyit tegyünk meg, hogy az alkönyvtárnevet tegyük be egy változóba, hiszen ezt többször is fel fogjuk használni: az alkönyvtár meglétének ellenőrzésekor, az esetlegesen létrehozandó új könyvtár esetében és a kép átmozgatásának célkönyvtáraként. Változóneveket a PowerShellben egy $ jellel kell kezdeni. A PowerShellben akár ékezetes karaktereket is alkalmazhatunk változónevekben.

A teljesen összerakott kis "program" így néz ki:

cd $HOME\pictures

dir *.jpg | ForEach-Object {
$alkönyvtár = get-date $_.lastwritetime -Format "yyyy-MM"
if(! (Test-Path -Path ".\$alkönyvtár")) {
New-Item -Path ".\$alkönyvtár" -ItemType Directory}
Move-Item -Path $_.pspath -Destination ".\$alkönyvtár"
}
Mit is láthatunk itt? Az elején – biztos, ami biztos – átlépünk a képek könyvtárába, nehogy véletlenül másutt levő képfájlok között garázdálkodjunk. A $HOME változó tartalmazza a belépett felhasználó munkakönyvtárát, feltételezésem szerint ennek Pictures alkönyvtárában vannak a képek. Ezután a JPG kiterjesztésű fájlokat megragadjuk, rátesszük a futószalagra és beküldjük őket egy ForEach-Object "gépbe". A gépbe belátunk, a belső felépítés a kapcsos zárójelek között látható. A gép belsejében létrehozunk egy alkönyvtár nevű változót, ami a gépbe érkező fájl módosítási idejéből képződő kötőjeles számjegyeket tartalmazza. Majd megvizsgáljuk, hogy van-e ilyen nevű alkönyvtár, és ha nincs, akkor létrehozzuk azt. Mire a Move-Item-hez érünk, addigra már biztos van megfelelő alkönyvtár, így az éppen feldolgozás alatt levő képfájlt át tudjuk oda helyezni.

HWSW mobile! mobiltermék-fejlesztési, fintech és IoT konferencia, november 29-30. 80 hazai és nemzetközi előadó, workshop nap, early bird jegyek.
Mik ebben a programban még az érdekességek? Például az, hogy a PowerShell a változókat az idézőjelek között kifejti, így a ".\$alkönyvtár" kifejezés mindig az aktuális alkönyvtárnévvel helyettesítődik be a . és / jel után.


Container:
https://www.youtube.com/watch?v=EHIoGg9ajBs

resmon.exe erőforrás figyelő


Nincsenek megjegyzések:

Megjegyzés küldése