sobota 27. března 2010

Modul FileSystem

Součástí PowerShellPack-u je několik modulů. Jedním z nich je i FileSystem.
Poznámka: Pokud jste ještě PowerShellPack nezkoušeli, můžete si jej bezplatně stáhnout. Je také součástí Windows 7 Resource Kitu. Obsahuje několik zajímavých modulů. Několika z nich se budu v dohledné době na těchto stránkách věnovat.
Pro práci s modulem jej musíme nejdříve importovat.

PS C:\Scripts> Import-Module FileSystem
PS C:\Scripts> Get-Module

ModuleType Name
---------- ----
Script FileSystem


Příkazy modulem exportované pro použití zjistíme pomocí Get-Command.

PS C:\Scripts> gcm -Module FileSystem | ft Name

Name
----
Copy-ToZip
Get-DuplicateFile
Get-FreeDiskSpace
Get-SHA1
Mount-SpecialFolder
New-Zip
Rename-Drive
Resolve-ShortcutFile
Start-FileSystemWatcher


Pojďme si všechny dostupné příkazy (funkce) projít.

New-Zip, Copy-ToZip
New-Zip vytvoří prázdný archiv, do kterého potom můžete přidávat soubory pomocí Copy-ToZip. Vzhledem k tomu, že Copy-ToZip vytvoří archiv, pokud neexistuje, přijde mi New-Zip trochu nepotřebný. Copy-Zip jsem využil opravdu jenom na základní věci. Při komprimování většího množství dat se výsledný archiv choval poněkud zvláštně (špatné cesty, zdvojené soubory, ...).
Rename-Drive
Jednoduchá funkce, která zapouzdřuje volání třídy Win32_LogicalDisk z WMI. Myslím, že nepřináší nic nového.

Get-FreeDiskSpace
Zobrazuje volné místo na disku v procentech a absolutně. Bohužel je výstup na první pohled poněkud zvláštní a tak bych doporučil ho mírně formátovat, například takto:

(Get-FreeDiskSpace).countersamples |? {$_.instancename -eq 'c:'} | ft -a

Path InstanceName CookedValue
---- ------------ -----------
\\PC\logicaldisk(c:)\% free space c: 23,7249711709823
\\PC\logicaldisk(c:)\free megabytes c: 36210


Resolve-ShortcutFile
Se hodí v případě, že máte soubor s příponou url a potřebujete zjistit, kam tento soubor odkazuje.

Get-SHA1
Dle názvu správně hádáte, že výstupem této funkce je hash zadaného souboru. Tuto funkci využívá ta následující.

Get-DuplicateFile
Pokud máte pocit, že některé soubory máte na disku vícekrát, můžete je pomocí této funkce zjistit.


PS C:\tmp> Get-DuplicateFile | fl Name, Value
Name : TlRNG4ETIySjh3rHonlURNSqPtU=
Value : {C:\tmp\2.JPG, C:\ts\tmp\Copy of 2.JPG}

Name : veSzujcoGoW+LpjcFAily548z9o=
Value : {C:\tmp\9.JPG, C:\tmp\Copy of 9.JPG}

Name : Ddx0Vo+oW0m2oRLB3WmnTmZsP78=
Value : {C:\tmp\0.JPG, C:\tmp\Copy of 0.JPG}



Mount-SpecialFolder
Přidá Special Folders jako další drives (dostupné pomocí Get-PsDrive). Mimochodem, tato funkce je spouštěna při importu modulu.

Start-FileSystemWatcher
Kontoroluje souborový systém a při změně spustí zadanou akci. Můžete tedy například sledovat nové soubory v určitém adresáři.

PS C:\Scripts> Start-FileSystemWatcher -File .\Secret -On Created `
-Do { $((ls c:\Scripts\Secret | Sort CreationTime -Descending | Select -First 1).FullName) >> c:\zapsano.txt}


Při vytvoření jakéhokoli souboru se plný název tohoto souboru zapíše do zapsano.txt. Bohužel má tato funkce jednu obrovskou nevýhodu. Neexistuje k ní Stop-FileSystemWatcher. Takže je na vás použít standardní cmdlety, abyste sledování zastavili.

Žádné komentáře: