- V pondělí již tradičně vyšel další díl PowerScripting Podcastu.
- Richard Siddaway dokončil sedmou kapitolu knihy PowerShell in Practice. Dostupná je přes MEAP.
- NetMap je nyní NodeXL.
- Na DevCentral se objevila nová série PowerShell ABC's.
- Thomas Lee píše o PowerShell.cz.
- Video z Windows PowerShell Virtual User Group #7.
- Tip na formátování PowerShell kódu v HTML. Rozhodl jsem se, že tento nástroj budu dále používat.
- Chcete mít ve svém promptu zobrazeno procento nabití baterie? Použijte tento kód.
- Super speciální Podcast - epizoda číslo 53. Hosté Jeffrey Snover a Bruce Payette.
- Hlavní zpráva dne, měsíce, roku - nová verze PowerShellu je na světě. Tedy přesněji PowerShell V2 CTP3. Všechny následující zprávy se již točily okolo nové verze. Dnes jsem si s ní chvilku hrál a jelikož jsem nepoužíval CTP2 (kromě několika testovacích instalací) bylo pro mne nové úplně vše. Ale již z následujícího postu jsou vidět některé pěkné vlastnosti.
- Zmiňovaný článek popisující Advanced Functions (jak by se nyní měly nazývat cmdlety).
středa 24. prosince 2008
Get-PSNews |? {$_.CreationTime -lt "9days"}; Write-Host "Týden 51"
Práce s cestou: *-Path
True
PS C:\> Test-Path $PROFILE
True
PS C:\> Test-Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
True
PS C:\> Test-Path HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion
False
C:\Documents and Settings\moravec
PS C:\> Convert-Path $env:TEMP
C:\WINDOWS\TEMP
C:\WINDOWS
TEMP
PS C:\> Split-Path $PROFILE -Leaf
Microsoft.PowerShell_profile.ps1
C:
PS C:\> Split-Path $PROFILE -NoQualifier
\Documents and Settings\moravec\My Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
PS C:\> Split-Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion -Qualifier
HKLM:
Path
----
C:\Documents and Settings\moravec
PS C:\> Convert-Path ~
C:\Documents and Settings\moravec
Drive : C
Provider : Microsoft.PowerShell.Core\FileSystem
ProviderPath : C:\Documents and Settings\moravec
Path : C:\Documents and Settings\moravec
úterý 23. prosince 2008
PowerShell v2.0 CTP3 je na světě
pátek 19. prosince 2008
PowerScripting Podcast - Live CTP3 Special
čtvrtek 18. prosince 2008
CTP3 ???
neděle 14. prosince 2008
Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 50"
- Máte rádi poker? Zkuste si dát tento kód do $profile a můžete hrát kdykoliv :)
- Krásná práce spojení HTML, WMI a PowerShellu - Audit.ps1.
- Pokud spravujete VMware infrastrukturu a chcete používat PowerShell, dejte si na waiting list tuto knihu.
- 51. epizoda PowerScripting Podcast, hostem tentokrát Doug Finke.
- Třetí díl zajímavé série o práci s HTML strukturou od Jamese Brundage.
- Jaykul mne předběhl :)
- Krásný post Jeffreyho Snovera o prozkoumávání [Environment].
Operátor formátování - 2. část
Aktuální čas si nejdříve uložíme do proměnné, takže se nám budou lépe porovnávat výsledky všech operací:
PS C:\> $d
1. prosince 2008 23:34:19
PS C:\>
Při základním použití operátoru -f dostaneme následující výstup:
1.12.2008 23:34:19
PS C:\> $d.GetTypeCode()
DateTime
Zároveň jsme si ověřili, že v proměnné d je uložen datový typ DateTime, takže můžeme začít provádět kouzla. Jestli se chcete podívat na různé varianty výstupu formátovacího operátoru, zkuste tento příkaz:
Z minulého dílu víme, že obecný formát použití operátoru –f obsahuje také formátovací řetězec.
formatovaciRetezec může v případě standardního formátování data nabývat osmnácti hodnot. Tyto hodnoty jsou zjednodušeně řečeno pouze aliasy pro uživatelský formát (definovaný systémem podle nastavení regionu). Pojďme si nejdříve ukázat všechny možnosti a poté je popíšeme podrobněji při současné lehké exkurzi do .NETu.
1.12.2008
PS C:\> "{0:D}" -f $d
1. prosince 2008
PS C:\> "{0:t}" -f $d
23:34
PS C:\> "{0:T}" -f $d
23:34:19
PS C:\> "{0:f}" -f $d
1. prosince 2008 23:34
PS C:\> "{0:F}" -f $d
1. prosince 2008 23:34:19
PS C:\> "{0:g}" -f $d
1.12.2008 23:34
PS C:\> "{0:G}" -f $d
1.12.2008 23:34:19
PS C:\> "{0:u}" -f $d
2008-12-01 23:34:19Z
PS C:\> "{0:U}" -f $d
1. prosince 2008 22:34:19
PS C:\> "{0:r}" -f $d
Mon, 01 Dec 2008 23:34:19 GMT
PS C:\> "{0:R}" -f $d
Mon, 01 Dec 2008 23:34:19 GMT
PS C:\> "{0:m}" -f $d
01 prosince
PS C:\> "{0:M}" -f $d
01 prosince
PS C:\> "{0:y}" -f $d
prosinec 2008
PS C:\> "{0:Y}" -f $d
prosinec 2008
PS C:\> "{0:s}" -f $d
2008-12-01T23:34:19
PS C:\> "{0:o}" -f $d
2008-12-01T23:34:19.8358768+01:00
Jedna vlastnost je jasná na první pohled - PowerShell v případě operátoru -f rozlišuje velikost písmen! První a druhý příklad tedy nejsou rovnocenné. V prvním (0:d) zobrazujeme datum ve formátu ShortDate, ve druhém (0:D) je použit LongDate formát. Kde se tento formát bere – a jak je definován – si ukážeme později. Příklady jsou řazeny do dvojic a proto si každou projdeme společně:
- d, D - jak již bylo zmíněno, výstupem bude datum v krátkém (1.12.2008) nebo dlouhém formátu (1. prosince 2008)
- t, T - zobrazuje tentokrát čas, opět v krátkém (23:34) nebo dlouhém formátu (23:34:19)
- g, G - takzvaný obecný formát, je kombinací předchozích dvou formátů. Platí g = d t; G = d T
- f, F - datum a čas v úplném formátu, rozdíl je v zobracení času, čili matematicky: f = D t; F = D T
- u, U - univerzální setříditelný formát. U = F
- r, R - oba dávají stejný výsledek, datum v RFC1123 formátu
- m, M - zobrazuje den a měsíc, obě možnosti dávají shodný výsledek
- y, Y - formát pro zobrazení roku a měsíce, obě možnosti dávají shodný výsledek
- s - tříditelný formát
- o - round-trip formát (Microsoft neuvádí překlad anglického termínu, ale můžeme jej interně nazvat jako "ten nejpodrobnější" :)
- Jakýkoli jiný znak je brán jako neznámý a způsobí vyhození výjimky.
1.12.2008
Jak již bylo řečeno, toto zobrazení používá krátký formát data. Anglicky řečeno, používá ShortDatePattern property. ShortDatePattern je jednou z vlastností .NET třídy DateTimeFormatInfo a každý systém ji definuje podle nastavení regionu. Jak zjistit naše nastavení? V PowerShellu existuje cmdlet Get-Culture, který nám s naším pátráním pomůže (výstup byl výrazně zkrácen).
TypeName: System.Globalization.CultureInfo
DateTimeFormat Property System.Globalization.DateTimeFormatInfo DateTimeFormat
Vidíte typ DateTimeFormatInfo? Jsme evidentně na správné stopě. Zkusme se ještě trochu zanořit (opět zkráceno).
ShortDatePattern : d.M.yyyy
A jsme téměř u cíle. ShortDatePattern je aliasem pro formát d.M.yyyy. Hmm, zajímavé, ale kde zjistíme, co znamená například yyyy? yyyy je jedním z dříve zmíněných uživatelských formátovacích řetězců, o kterých se budeme bavit příště. Nyní nám stačí informace že d. zobrazuje den ve tvaru 1. - M. zobrazuje měsíc ve tvaru 12. a yyyy rok jako 2008. Jaký formát je přiřazen konkrétnímu formátovacímu řetězci je možné najít v MSDN, ve zkratce se jedná o následující:
- d – ShortDatePattern
- D – LongDatePattern
- t – ShortTimePattern
- T – LongTimePattern
- F – FullDateTimePattern
- u – UniversalSortableDateTimePattern
- r, R - RFC1123Pattern
- m, M – MonthDayPattern
- y, Y – YearMonthPattern
- s – SortableDateTimePattern
LongDatePattern : d. MMMM yyyy
LongTimePattern : H:mm:ss
MonthDayPattern : dd MMMM
RFC1123Pattern : ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
ShortDatePattern : d.M.yyyy
ShortTimePattern : H:mm
SortableDateTimePattern : yyyy'-'MM'-'dd'T'HH':'mm':'ss
UniversalSortableDateTimePattern : yyyy'-'MM'-'dd HH':'mm':'ss'Z'
YearMonthPattern : MMMM yyyy
Příště si povíme o uživatelských formátech a ukážeme si, co si představit například pod formátovacím řetězcem MM. Soubor s ukázkami dnešního dílu si můžete opět stáhnout.
pondělí 8. prosince 2008
Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 49"
- Jako první pozor na následující varování!
- Nový TechNet webcast Introduction to PowerShell (level 200).
- Doporučuji průběžně sledovat blog PowerShell Scripts. Poslední dobou zde vychází některé zajímavé skripty.
- Další průzkum na Concentrated Technology - odměnou za účast jsou zajímavé ceny.
- Funkce pro práci s ACL pro objekty AD.
- sudo ala PowerShell.
- Lee Holmes publikoval script, který generuje kalendář vhodný například do OOF/OOO zprávy.
- Jeffrey Snover na Channel9.
- Jaykulova upravená verze Start-Demo (původně od Jeffreyho Snovera) - ještě jsem nezkoušel, ale chystám se na to brzy.
- Thomas Lee a základy WMI pomocí PowerShellu.
- A jedna blbůstka na závěr.
neděle 30. listopadu 2008
Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 48"
- PowerScripting Podcast dospěl ke kulatým padesátinám. Tentokrát byl hostem Ed Wilson, jeden z Microsoft Scripting Guys. Rozhovor byl hodně zajímavý a občasná střelba do vlastních řad snad znamená, že se Script Centrum dočká podstatného PowerShell redesignu.
- Hugo Peeters pokračuje v sérii skvělých skriptů. Show-Tree dokáže zobrazit stromovou strukturu jakékoli PS jednotky (PSDrive), tedy např. i registry nebo Active Directory.
- Na PowerShell scripts byly uveřejněny tři nové skripty. Get-DomainRole, Determine-Domain, Get-LocalGroups.Dva z nich používají pro výstup operátor -f.
- Jonathan Medd udělal update PowerPacku pro WSUS. Pokud WSUS používáte a tento PowerPack jste ještě nezkoušeli, máte co dohánět.
- Jak provést příkaz proti všem počítačům v Active Directory? Odpověď v článku na Concentrated Technology. Porovnejte čisté PowerShell řešení proti pouřití Quest AD cmdletů. Jen pro info: jedno z dalších témat, které jsem začal zpracovávat je porovnání různých přístupů do AD (a to z různých hledisek jako je například rychlost odpovědi nebo náročnost na zápis).
- Jak otestovat existenci objektu v Active Directory uvádí Richard Siddaway.
- James Brundage uvádí, jaký je při vytváření objektů rozdíl v použití Select-Object a Add-Member.
- Marco Shaw uveřejnil nový termín pro Windows PowerShell Virtual User Group Meeting #7 - předchozí byl zrušen z důvodu problémů s Live Meeting servery.
- Jak vytvořit 20.000 uživatelů v AD? S PowerShellem jednoduše.
sobota 29. listopadu 2008
Operátor formátování - 1. část
David
PS C:\> "{0} {1}" -f "David", "Martin"
David Martin
PS C:\> "{1} & {0}" -f "David", "Martin"
Martin & David
PS C:\> $martin = "Martin"
PS C:\> "{1} & {0}" -f $david, $martin
Martin & David
PS C:\> foreach ($p in $procesy) {
>> $cpu="{0:###.#}" -f $p.CPU
>> $ws="{0:###.##}" -f ($p.WS/1MB)
>> Write-Host $p.ProcessName `t $cpu `t $ws
>> }
>>
System 241,9 1,23
RSSBandit 156,5 46,15
Rtvscan 93,2 60,21
EZEJMNAP 83,4 3,61
svchost 75,6 26,4
explorer 70,8 25,77
vmware-authd 63,9 4,78
sametime75 54,7 98,18
wmplayer 52 7,19
AcroRd32 46,9 79,31
PS C:\>
pondělí 24. listopadu 2008
Použití Write-Progress
- activity - řetězec, který říká, jaká aktivita probíhá (na obrázku výše je to Loading records ...)
- status - popisuje konkrétní (aktuální) stav aktivity; v našem případě 136 of 633.
Start-Sleep -m 100
Write-Progress "Ukazuji promennou..." $i }
- percentComplete - ukazuje formou "teploměru", kolik procent je již hotovo (viz úplně první obrázek)
- secondsRemaining - počet vteřin do skončení operace
Start-Sleep 1
$sec = 10-$i
Write-Progress "Ukazuji promennou..." $i -secondsRemaining $sec }
- id - specifikuje jedinečné ID progress baru. Lze použít pro zpětné volání.
- currentOperation - popisuje aktuální operaci. Je více specifický než status.
- parentId - aktivita nadřazená té aktuální
- completed - standardně false, pokud je true nezobrazuje se progress bar
- sourceId - zdroj záznamu
- $ProgressPreference - může nabývat hodnot SilentlyContinue, Continue, Stop, Inquire. Pokud nastavíte SilentlyContinue, progress bar nebude vidět (stejné jako kdybyste pro každý nastavili -completed = $true).
- $host.PrivateData.get_Progress*, $host.PrivateData.Progress* - nastavují/zobrazují barvu progress baru.
neděle 23. listopadu 2008
Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 47"
- Zvláštnosti asociativních polí v článku PowerShell and Hashtable oddities.
- Byla uvolněna nová verze PowerGUI.
- Show-ADGroupMembership - skript pro zobrazení (využívá výstup do Show-NetMap) závislostí AD skupin.
- Na TurboChargedAD.org pokračuje série článků zaměřená na popis cmdletů pro správu Active Directory od firmy Quest. Tentokrát na téma Set-QADUser.
pondělí 17. listopadu 2008
Windows PowerShell™ v1.0: TFM®, 2nd Edition
- Interaktivní používání PowerShellu
- Skriptování v PowerShellu
- Praktické příklady administrace Windows
- Pokročilé techniky
Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 46"
- Právě vzniká online kniha o PowerShellu z klávesnice Dr. Tobiase Weltnera.
- 48. epizoda PowerScripting Podcastu, tentokrát s Lee Holmesem.
- Popis Here-String na stránkách Concentrated Technology. Rozhodně stojí za naučení a porozumění! Nedávno se tomuto tématu věnoval i Jeffrey Snover.
- Krásné dvě funkce Translate-SID a Translate-ToSID zveřejnil Hugo Peeters ve svém blogu.
- Záznam z panelové diskuse o PowerShellu na TechEdu.
- /\/\o\/\/ uvedl odkazy na videa z TechEdu pohromadě + bonus.
- V tomto blogu již několikrát zmiňovaný Jaykul se vrhl na tvorbu Wiki pro PowerShell. V současné době se Wiki začíná plnit a v diskusích se o ní hodně mluví. Uvidíme, kam to povede. Zatím se můžete podívat na krátký post obsahující i skript pro generování Wiki nápovědy přímo z help souborů PowerShellu.
- Nová epizoda PowerScripting Podcastu, s pořadovým číslem 49.
pátek 14. listopadu 2008
Školení PowerShell - den pátý + shrnutí
Před obědem jsme se věnovali Modulu 11, Chyby a ladění v PowerShellu. Ukázali jsme si parametr -ErrorAction, zachycování výjimek a použití cmdletu Set-PSDebug. Opět jsme se koukli na novinky ve verzi CTP2. V Modulu 13 jsme se podívali na Rozšíření PowerShellu (Modul 12 jsme prozatím přeskočili). Nebudu vyjmenovávat všechno, ale zmínili jsme se například o PSCX nebo PowerGUI.
Poslední - 14. modul se zabýval tématem Některé další možnosti PowerShellu. Probrali jsme "chuťovky", které byly zmiňovány v průběhu týdne a které se nevešly do žádného jiného modulu. Jednalo se o vzdálený přístup přes PowerShell, regulární výrazy a operátor -f.
Závěrečné zhodnocení kurzu
Tak skriptovací týden skončil. Rozhodně to nebyl ztracený čas. Šel jsem na kurz s tím, že některé věci budu vědět, ale že se i hodně naučím. Kladně hodnotím přístup pana Maliny. Jeho okamžitá reakce na dotazy (pokud ne okamžitá, tak v průběhu přestávek) a znalost PowerShellu obecně je velkou devizou kurzu. Postupovali jsme od základů, přes cmdlety až po složitější tématiku a myslím, že každý dokázal tempo v klidu udržet. Na kurzu jsem našel asi jedinou vadu - byl bych spokojen, kdyby trval asi tak měsíc :)
Na úplný závěr malé doporučení:
čtvrtek 13. listopadu 2008
Školení PowerShell - den čtvrtý
Modul 8, Možnosti .NET Frameworku - na ten jsem se hodně těšil. .NET občas používám ve svých skriptech, ale zatím je to metodou chaosu a pokusů. Ucelenější popis použitelných tříd "nikde" neexistuje (samozřejmě pokud pominu MSDN, kde je vše super popsáno a zatím jsem tam našel vše, co jsem potřeboval). Ukázali jsme si přímý přístup ke třídám a poté jsme se věnovali těm, které jsou pro administrátory užitečné. Nebudu je všechny vyjmenovávat, ale zmínili jsme se například o vzdálené správě služeb nebo připojení do databáze.
Práce s Active Directory byl název Modulu 9. Ukázali jsme si několik způsobů, jak přistupovat do Active Directory přes .NET, ADSI, Quest AD cmdlets a pomocí PSDrive z balíku PSCX. Jinými možnostmi přístupu jsme se nezabývali, což ovšem nebylo na škodu, protože i tak jsme toho měli na probrání, zkoušení a sledování opravdu hodně.
Dnešek byl plný hodně zajímavých věcí a různé upřesňující dotazy a odpovědi byly skvělým kořením.
středa 12. listopadu 2008
Školení PowerShell - den třetí
Začali jsme podmínkami a smyčkami (if, switch, while, foreach, ...) a ukázali si pár příkladů. Vyzkoušeli jsme si umístění větve default v příkazu switch a dostali jsme se do pěkných filosofických debat. Závěrečný příklad na foreach byl moc hezký (vypsat barevně procesy podle alokované paměti) - já ho řešil jako one-liner. Což se mi nevyplatilo hned při dalším cvičení, kdy jsme měli "skript" z předchozí úlohy přepsat jako funkci a předat jí parametr. Takže jsem stejně musel jít do IDE a pracovat v něm. Funkce jsme probrali včetně bloků BEGIN, PROCESS, END a ukázali jsme si tím pádem i práci funkce v rouře. Po funkcích následoval - zcela podle předpokladů - čas věnovaný filtrům.
Modul 7 - Souborový systém a dle názvu jasně určené téma. Zabývali jsme se výpisy (Get-ChildItem), přejmenováním (Rename-Item), kopírováním (Copy-Item), přesouváním (Move-Item) a mazáním (Remove-Item). Závěrečný příklad prověřil skvěle naše znalosti. Mé řešení bylo následující:
Nerozumíte mu? Přijďte na kurz - pan Malina vás rád uvidí :)
úterý 11. listopadu 2008
Školení PowerShell - den druhý
Vše je objekt - heslo na další hodinu. Vysvětlení začalo standardním popisem "objektu auto" a předvedením jeho vlastností a metod. Toto bylo dále rozvedeno na několika příkladech z reálného (např. dům) i virtuálního (Win32_Share) života. Plynule jsme navázali na cmdlet Get-Member - dle lektorova (i mého) názoru asi nejužitečnějšího z celé škály (trochu odbočka: jeho popis mám už rozpracován a doufám, že se mi podří jej dokončit v několika málo dnech). Trochu jsme naťukli i technologii COM a poté se zanořili zpět do objektů a podívali se na PSbase a jeho bratříčky.
Modul 4 - Roura (pipeline) v PowerShellu neboli začínáme dělat divy :) Na začátek byla popsána výhoda roury a poté rozdíl mezi textovou (*NIX) a objektovou (PS) rourou. Samozřejmě byly ukázány krátké příklady. Celý modul jsme zakončili přehledem příkazů pracujících s objekty v rouře (ForEach-Object, Where-Object, ...).
V Modulu 5 - Tok a ukládání dat v PowerShellu - jsme začali s proměnnými a jejich přiřazováním, přetypováním a různými divokými operacemi. Probrali jsme operátory (+=, -=, ...) a přešli jsme na práci s poli. Přiřazovali jsme různé hodnoty a probírali se indexováním všemi směry. Lehce jsme se dotkli asociativních polí (hešů) a jejich požití při formátování výstupů (např. v příkazu Get-EventLog). Posledním tématem tohoto dne byla práce s textovými soubory. A to jak klasické TXT soubory, tak i využití CSV pro uchovávání objektů a jejich opětovné vyvolávání.
pondělí 10. listopadu 2008
Školení PowerShell - den první
Jak jsem předpokládal, osnova kurzu se bude řídit podle knihy PowerShell - podrobný průvodce skriptováním, jejíž je pan Malina autorem. Všichni účastníci kurzu ji na začátku dostali jako studijní materiál (což mi udělalo radost, protože tu svojí koupenou můžu dál používat jako pracovní a novou mohu dát hezky do knihovny mezi ostatní PowerShell knihy).
Ráno jsme začali lehkým představením prostředí školy a obsahu kurzu. Poté již přišel na řadu Modul 1, který byl nazván Windows scripting concepts and technologies a zabýval se historií ovládání Windows z příkazové řádky a skriptu (cmd.exe, WSH, WMI, PowerShell). Již první příklad postavil před některé z nás zapeklitou úlohu :)
Modul 2 s názvem Zprovoznění PowerShellu a základy práce v prostředí nás již vrhl do víru toho "správného Shellu". Instalace (které předcházel kratičký nástin .NET) a vysvětlení Set-ExecutionPolicy nás před obědem pěkně připravily na odpolední část. Tu jsme začali popisem základního chování konzole: doplňování pomocí klávesy TAB, Verb-Noun, neinteraktivní běh a povídání o historii a přepisu příkazů. Probrali jsme interaktivní režim a podrobněji se podívali i na chování a možnosti přepínačů. Ihned poté jsme se vrhli na $PROFILE a úpravu promptu, což rozpoutalo první složitější dotaz, který byl vzápětí prompt-ně zodpovězen. Ke konci dne jsme se bavili o aliasech a skončili jsme filozofií PSDrives, kde jsme dělali další ze zajímavých příkladů.
neděle 9. listopadu 2008
Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 45"
- Windows PowerShell na TechNet Library.
- V jednom velmi starém příspěvku (v době, kdy bude tento post publikován to bude přesně rok :) jsem našel příklady použití operátoru -f.
- Krásný one-liner z Jaykulova Twitteru - reakce na americké volby: Get-Conversations| Where{ $_.Topic -eq Politics} | Start-Sleep
a malý doplněk: They're all lucky, I *was* going to pipe that to | kill -force - Sapien uvolnil volně ke stažení PrimalForms spolu s krátkým Getting Started.
- Další epizoda PowerScripting Podcastu, tentokrát s pořadovým číslem 47.
- PowerShell for Visio - mazaný nástroj pro generování PS skriptů přes Visio.
- Tak máme za sebou konečně volbu nového amerického prezidenta. Jak to souvisí s PowerShellem? Konečně se budou na IRC, Twitteru a dalších řešit jiné věci než politika a můžem smazat z $PROFILE tento řádek: Get-Tweet | ? { $_.Message -notmatch "election|president|vote|obama|mccain|palin" } - autor opět Jaykul.
- PrimalScript 2007 Classroom Edition bude využíván při kurzech Windows Administration and Automation Using PowerShell. Dohodly se na tom firmy Microsoft a SAPIEN.
- V novém čísle TechNet magazínu tentokrát dva články o PowerShellu: pokračování Building a Better Inventory Tool a v sekci Hey, Scripting guy! Calculating Server Uptime.
- Známá jména z PowerShell komunity na fotce z TechEdu.
- Jestli chcete, můžete vyplnit krátký dotazník na PowerShellCommunity.org.
- Jak na vzdálený EventLog pomocí .NET.
- Celý příští týden budu na školení PowerShellu v počítačové škole Gopas. Přednášejícím bude Patrik Malina, autor knihy PowerShell - Podrobný průvodce skriptováním (podle které se dle mého názoru "pojede"). Gopas nabízí ještě oficiální MOC kurz, ale já jsem se rozhodl pro tento čistě z důvodů trvání kurzu (pět dní vs. tři MOC).
čtvrtek 6. listopadu 2008
Get-PSNews |? {$_.category -eq "Hot Topic"}
- Prosinec 2008 - CTP3 (nebo Beta 1, pokud bude splňovat všechny náležitosti)
- RTM - konec 2009/začátek 2010 jako součást Windows 7 a WS08R2
- RTM pro XP, 2003, Vista a WS08 - jako download o pár měsíců později
úterý 4. listopadu 2008
PrimalForms - první formulář (first form)
Jak vše funguje: Při otevření formuláře načte všechny dostupné programy z UIResource.UIResourceMgr a vloží je do listboxu. Poté, co vyberete jeden z dostupných programů a kliknete na Run, zavolá se metoda ExecuteProgram a program je spuštěn.
neděle 2. listopadu 2008
Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 44"
- Lee Holmes publikoval Introduction to PowerShell - prezentace s několika skripty využívajícími Start-Demo (popis zde). Tímto se má sbírka skriptů a prezentací, které jsem si ještě neprošel a nezařadil rozrostla na 150 MB :(
- Windows PowerShell bude standardně instalován ve Windows Serveru 2008 R2 a Windows 7.
- Další díl (46.) PowerScripting Podcastu vyšel s mírným zpožděním - po dlouhé době pondělní káva bez PowerShell novinek :|
- Zmiňováno na několika místech a tak se přidám i když jsem původně nechtěl - příspěvek Jeffreyho Snovera s názvem 547 důvodů proč jsme tak hrdí a optimističtí ohledně W7 a WS08R2.
- Na myITforum.com je v repository uloženo přes 120 PowerShell skriptů - pokud pracujete s management nástroji, najdete tam možná kus užitečného kódu.
- Windows PowerShell Virtual User Group Meeting #7 - více informací na Get-PowerShellBlog.
- Přednáška Jeffreyho Snovera na PDC - slidy a video na Channel 9.
neděle 26. října 2008
Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 43"
- Nevím, co jsem minulý týden dělal, že jsem zapomněl přidat jednu malou, ale "důležitou" změnu. V oficiálním PowerShell blogu se objevila zmínka, že v CTP3 bude opuštěn název cmdlet a bude dále nazýván funkcí. Více v Emit-XML.
- Další UK PowerShell UG meeting 25.11. bude přenášen živě přes Live Meeting. Bude se převážně věnovat Práci s AD.
- Diskuse v microsoft.public.windows.powershell mě navedla na možnost ovládání Windows Desktop Search přes PowerShell. Prvním je ovládání WDS 3.0 a druhým Get-WDS cmdlet. Zatím jsem nezkoušel kompatibilitu skriptů mezi verzemi 3.x a 4.0.
- Ve středu proběhla online konference Quest Connect 2008. Zůčastnil jsem se několika přednášek z nichž nejzajímavější pro mne rozhodně byla Do Not Fear the Command Line: PowerShell Made Easy, která se zabývala PowerShellem a PowerGUI. Přednášky budou dostupné ke shlédnutí až do 9.dubna 2009.
- Krátký popis Connect-QADService uveřejnil Brandon Shell na TurboChargeAD.org.
- V blogu SAPIEN Technologies byly zveřejněny ZIP soubory z přednášek Jefferyho Hickse na konferenci TechMentor. Obsahují skoro 300 stran prezentací a 1300 řádek kódu a stojí rozhodně za shlédnutí.
- Konečně jsem si stáhl knihu, kterou jsem vyhrál za recenzi PowerScripting Podcastu. Po rychlém prolétnutí a posléze přečtení 100 stránek (právě začínám číst kapitolu PowerShell Command-line Parsing) ji řadím na úroveň mých oblíbených PowerShell Cookbook a PowerShell in Action.
pátek 24. října 2008
Start-Demo
- Připravíte si textový soubor, do kterého si na každý řádek napíšete jeden příkaz PowerShellu. Pokud spustíte Start-Demo bez parametru, použije obsah souboru demo.txt, pokud je v aktuálním adresáři. Máte-li jiné jméno souboru, zadejte ho jako parametr.
- Skript zobrazí první řádku a čeká na zmáčknutí klávesy Enter (případně na jinou "funkční" klávesu, viz dále). Máte tedy čas na vysvětlení příkazu.
- Příkaz je proveden, skript po jeho skončení čeká na další Enter a vy máte čas na popsání výpisu.
- Vše se poté opakuje až do konce obsahu vstupního souboru.
- ? - zobrazí nápovědu, viz obrázek výše.
- ! - vyskočí z prezentace do prostředí PowerShellu kde můžete provádět libovolný příkaz. Hodí se například v případě, že chcete reagovat na dotaz posluchačů. Zpátky se dostanete příkazem exit.
- d - zobrazí obsah prezentovaného souboru včetně čísel řádek
- #x - místo znaku # zadáte číslo příkazu, na který chcete skočit
- fx - vypíše všechny řádky obsahující hledaný text, např. fGet
- px - rychlost, kterou budou příkazy vypisovány na konzoli. Standardně je nastavena na 200ms.
- b - vrací se o jeden příkaz zpět
- s - přeskočí příkaz
- t - kontrola času. Zobrazí čas trvání prezentace a pozici v prezentaci, např. pátá řádka z dvaceti.
- q - ukončí prezentaci
neděle 19. října 2008
Get-PSNews |? {$_.CreationTime -lt "7days"}; Write-Host "Týden 42"
- PowerScripting Podcast - Episode 45: Tentokrát s několika hosty (Jeffrey Snover, Don Jones, Alex Reidel, Kirk Munro) na různá témata.
- V tomto blogu jsem uveřejnil krátký popis zpracování -OutVariable.
- Nikoli PowerShell záležitost, ale dlouho jsme na ni čekali - nová verze Windows se bude jmenovat Windows 7.
- Dmitry Sotnikov uveřejnil skript, který dokáže udělat snapshot AD účtů a porovnat rozdíly - více v jeho blogu.
- Verb-Noun už jsem zde jednou zmiňoval. V microsoft.public.windows.powershell byl vznesen dotaz, který mne poté navedl na další zajímavé linky. Jedním z nich je řešení Oisina Grehana (které ale nefunguje úplně dobře - zmiňováno v news), dalším Microsoft Command line Standard. Seznam všech použitých Verb ve vašem PowerShellu můžete zjistit následovně:
Get-Command -commandtype cmdlet |% {$_.name.toString().split("-")[0]} | Group-Object | Select Name - Doporučení pro tvorbu skriptů - 2. díl na stránkách Hugo Peeterse. Tomu samému tématu se věnoval v posledním čísle TechNet Magazínu také Don Jones.
- I *heart* PowerShell, reakce na článek o Pythonu.
úterý 14. října 2008
commonParameter -OutVariable
Get-ChildItem -OutVariable b
Get-Help about_commonparameters
PS C:\> 28
PS C:\> $b.Length
PS C:\>
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Object[] System.Array
PS C:\> $b.GetType()
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True ArrayList System.Object
-outvariable unordered | sort `
| % { Write-Host "$_ " -fore green -NoNewLine; Write-Host $unordered[$i++] -fore Cyan }
pondělí 6. října 2008
Get-Command
CommandType Name Definition
----------- ---- ----------
Cmdlet Compare-Object Compare-Object...
Cmdlet ForEach-Object ForEach-Object...
Cmdlet Group-Object Group-Object [[...
Cmdlet Measure-Object Measure-Object...
Cmdlet New-Object New-Object [-Ty...
Cmdlet Select-Object Select-Object [...
Cmdlet Sort-Object Sort-Object [[-...
Cmdlet Tee-Object Tee-Object [-Fi...
Cmdlet Where-Object Where-Object [-...
Na výstupu dostanete všechny cmdlety, které slouží k práci s objekty a pokud se vám některý líbí, můžete na něj hned použít Get-Help.
gcm
Get-Command *
Get-Command -Verb Get
Get-Command -CommandType Function
pondělí 29. září 2008
PowerScripting Podcast review
- Overview of latest cool PowerShell scripts, some of them you can't miss - here you have it at one place.
- Jonathan & Hal are well known IT guys and they knows the things they are talking about - small plus for podcasts.
- It's not just talking about PowerShell - it's talking about PS and all the world around, including VM, AD and other technologies.
- What I really like is an interview with interesting people. I can learn a lot from them - guys like Jeffrey Snover, Jeff Hicks, Greg Shields and others can teach me a lot. At least to hear their thinking is very useful.
- The good thing is also when I hear that those big guys are doing things the same way as me (better - I am doing it like they) - Then I know that the way of scripting is not an impasse.
- Last but not least - for me is very good to listen English and I now am using "cool" more in my daily life :) Of course it's because PowerShell IS cool.
čtvrtek 25. září 2008
PowerShellPlus Professional Edition konečně dostupný
TAOCP v češtině
neděle 21. září 2008
PowerShell prezentace v Second Life
pátek 19. září 2008
PowerShellPlus Professional Edition zdarma
Pokud sháníte editor pro PowerShell, možná se vám bude líbit nabídka firmy Idera. Pro posluchače PowerScripting Podcast-ů je připravena možnost získat PowerShellPlus Professional Edition zdarma. Nechci sem dávat přímý link, ale pokud půjdete na stránky PowerScripting Podcast, tak v epizodách 40 a 41 najdete popis, jak se k editoru zdarma dostat. Podle popisu to vypadá, že dostupných bude pouze několik licencí, tak neváhejte a spěchejte.
čtvrtek 18. září 2008
Recenze: PowerShell - Podrobný průvodce skriptováním
pondělí 15. září 2008
Get-Help
Naši pouť po cmdletech začneme u jednoho z nejpoužívanějších (doufejme :) - Get-Help. Každý z nás byl někdy více či méně nespokojen z jakoukoli Microsoftí nápovědou (když pomineme lidi, kteří nápovědu nečtou, což je asi většina). V PowerShellu je ovšem Get-Help na velice dobré úrovni a doporučujeme jej používat. Základní variantou je čistě uvedení cmdletu bez parametrů:
Get-Help
Tento příkaz vypíše základní informace, ze kterých můžeme dále vycházet. Zobrazíme je všechny a ukážeme si na nich práci s nápovědou v PowerShellu (barevně jsme odlišili jednotlivé sekce - o nich si více povíme za chvíli).
TOPIC
Get-Help
SHORT DESCRIPTION
Displays help about PowerShell cmdlets and concepts.
LONG DESCRIPTION
SYNTAX
get-help {<CmdletName> | <TopicName>}
help {<CmdletName> | <TopicName>}
<CmdletName> -?
"Get-help" and "-?" display help on one page.
"Help" displays help on multiple pages.
Examples:
get-help get-process : Displays help about the get-process cmdlet.
get-help about-signing : Displays help about the signing concept.
help where-object : Displays help about the where-object cmdlet.
help about_foreach : Displays help about foreach loops in PowerShell.
match-string -? : Displays help about the match-string cmdlet.
You can use wildcard characters in the help commands (not with -?).
If multiple help topics match, PowerShell displays a list of matching
topics. If only one help topic matches, PowerShell displays the topic.
Examples:
get-help * : Displays all help topics.
get-help get-* : Displays topics that begin with get-.
help *object* : Displays topics with "object" in the name.
get-help about* : Displays all conceptual topics.
For information about wildcards, type:
get-help about_wildcard
REMARKS
To learn about PowerShell, read the following help topics:
get-command : Displays a list of cmdlets.
about_object : Explains the use of objects in PowerShell.
get-member : Displays the properties of an object.
Conceptual help files are named "about_<topic>", such as:
about_regular_expression.
The help commands also display the aliases on the system.
For information about aliases, type:
get-help about_alias
Každý help v PowerShellu je rozdělen do sekcí, které jsou volány v závislosti na parametrech cmdletu Get-Help (-detailed, -full). Názvy sekcí jsou následující:
- Name - jméno cmdletu
- Synopsis - krátký popis cmdletu
- Syntax - popis syntaxe
- Detailed Description - podbobnější popis funkce cmdletu
- Parameters - popis použítí všech parametrů
- Input Type - typ objektů, které cmdlet očekává na vstupu
- Return Type - typ výstupu
- Examples - příklady použití cmdletu
- Related Links - jména podobných cmdletů
- Remarks - informace o použití parametrů
Při volání Get-Help -full nám Get-Help vrátí všechny výše popsané sekce. Pro vypsání všech informací o cmdletu Get-WmiObject, tedy zapíšeme
Get-Help Get-WmiObject -full
Další zajímavou části nápovědy v PowerShellu je tématická nápověda. Poznáte ji podle toho, že její jméno začíná slovem about. Například Get-Help about_regular_expression vyvolá nápovědu o používání regulárních výrazů.
Domácí úkol: Projděte si všechny příklady v Get-Help a zapamatujte si je pro další použití :)