- PowerScripting Podcast - epizoda 100 byla uvolněna ke stažení.
- Chad Miller postnul článek na téma The PowerShell v1 to v2 Conversion.
- Byl uvolněn nový PowerGUI wallpaper.
- Zajímavý nápad od Davida Mohundra.
- a nezapomeňte hlasovat hlasovat v anketě na těchto stránkách :)
pondělí, 8. února 2010
Get-PSNews |? {$_.Week –eq ‘05’}
středa, 3. února 2010
Anketa: Jak používáte PowerShell?
Jaká je tedy nová otázka? Zajímalo by mě, pro jakou příležitost používáte PowerShell nejčastěji. Pokud spravujete Exchange, volba je jasná. Pracujete s SCOM, Active Directory, SharePointem, ... Nebo jste většinu času na helpdesku a PowerShell používáte pro vzdálenou správu? Či si jenom skriptujete pro radsot a ulehčujete si práci různými vychytávkami?
Nejčastější možnosti jsem dal jako možnosti v anketě a pokud nenajdete to vaše správné využití, nebojte se nechat komentář pod tímto článkem.
Druhé vydání knihy "PowerShell - Podrobný průvodce skriptováním"
Včera večer jsem dělal malý úklid ve svých poznámkách otagovaných jako "someday" a narazil na Napsat Patriku Malinovi, jestli chystá update knížky na v2. O knize Microsoft Windows PowerShell - Podrobný průvodce skriptováním jsem se zde již zmiňoval. Jako jediný počin svého druhu na českém trhu si určitě zaslouží pozornost. Napsal jsem panu Malinovi a dostal následující odpověď.
Pekny vecer.
Pisete jako na zavolanou :-)
... v potu tvare dopracovavam dalsi kapitolu a chystam se ji odeslat redaktorovi. Kniha o PowerShellu 2 je velmi blizko -- tedy odevzdani rukopisu urcite, protoze brzy asi umru a nic vic uz ze mne nevypadne ;-) ...
Protoze ted uz jsem i ja uveril, ze to dodelam, asi to muzete kdyz tak vypustit jako drb do sveta :-))
Zdravi PM
Tradááá - pouštím tedy drb, raduji se a doufám, že pan Malina neumře a ještě hodně toho z něj vypadne :) Bez jeho přednášek by mi bylo fakt smutno.
neděle, 31. ledna 2010
Get-PSNews |? {$_.Week –eq ‘04’}
Uplynulý týden byl opět nabitý zajímavý novinkami a také jedním velkým jubileem. Pro mne osobně se vše neslo v tónu Active Directory.
- Můj oblíbený produkt – PowerGUI - se dočkal verze 2.0. Novinkou jsou snapshoty v administrační konzoli. Pokud vás zajímají další změny, můžete se podívat do release notes.
- Začal jsem pracovat na dalším článku pro TechNet Flash, tentokrát na téma Active Directory. Proto se mi hodil další online meeting UKPSUG (UK PowerShell User Group), který se věnoval tématu Windows 2008 R2 AD cmdlets. Pokud již W2K8 R2 používáte, může se vám hodit Quick Reference Guide od Jonathana Medda.
- Další témata meetingů UKPSUG jsou WMI & WQL (na ten se zvlášť těším) a Windows 7. Obojí z pohledu PowerShellu. Více na stránce Richarda Siddawaye.
- A ještě jednou Richard – oznámil progres u jeho knihy PowerShell in Practice.
- Další (velmi vítanou) novinkou je informace o další knize od Manning Publications – PowerShell in Action, Second Edition. Prvních 15 kapitol je téměř hotovo a měly by být “circulated shortly”. Oproti původnímu plánu byly přidány tři nové kapitoly, takže zatím je celkem plánováno 19 kapitol a čtyři přílohy.
- Třetí knihou v dnešním přehledu je PowerShell 2.0 TFM. E-book už je dostupný na stránkách Sapien Press. Pokud s PowerShellem začínáte, toto je dle mého názoru pro vás ta nejvhodnější kniha.
- PowerShell Community Extensions jsou nyní ve fázi bety verze 2.0. Stahovat můžete přímo ze stránek PSCX.
- Stejcz publikoval skript pro hledání překladu na slovnik.cz. Dost mě to potěšilo, protože jsme se o tomto skriptu před nějakou dobou bavili a já se u něho zasek :( Pokud chcete hledat překlady slov mezi angličtinou a češtinou, podívejte se na modul Translate.
Poslední příspěvek mne vedl z zamyšlení na téma “proč mám rád, když programátoři vytvářejí skripty”. Vzhledem k tomu, že mne ve škole programování nebavilo (dneska bych si kvůli tomu nejradši dal sám pár facek), doháním vše až nyní. Vím, že to je marná snha, ale čtení kódu po zkušenějším mne baví. Více v některém z dalších článků.
Doplnění: Pro samá písmenka jsem zapomněl zmínit to jubileum :( Můj oblíbený PowerScripting Podcast se dočkal epizody s pořadovým číslem 100! Gratuluji Halovi a Jonathanovi a děkuji jim za práci, kterou odvádějí. Jejich podcast byl pro mne impulsem, který mne nakopl v mém PowerShellovském bádání.
čtvrtek, 28. ledna 2010
PSRemoteRegistry modul
Jak jsem již psal v posledních Get-PSNews, Shay Levy publikoval modul PSRemoteRegistry. Než se vrhneme na popis, podívejme se, jaké možnosti pro přístup do registru (lokálně či vzdáleně) máme nyní.
- Lokálně přes PSDrives: Get-PSDrive -PSProvider *Registry - asi nejčastější metoda, kterou budete používat z konzole nebo ve skriptech.
- Vzdáleně přes např. Invoke-Command, Enter-PSSession, ...
- Vzdáleně či lokálně přes WMI pomocí třídy StdRegProv. Obsahuje množství zajímavých metod, pokud jste v dobách VBS chtěli prohledat vzdálený registr, byla metoda EnumKey možná vaše první volba.
- Vzdáleně či lokálně před .NET třídy Microsoft.Win32.Registry*
Právě čtvrtý způsob využívá popisovaný modul, který zmiňované třídy zapouzdřuje do funkcí. Stáhnout si jej můžete z MSDN, kde je zároveň popsáno, jak jej správně importovat do PowerShellu. Seznam dostupných funkcí je vypsán na stránkách modulu, sami si jej můžete vylistovat pomocí Get-Command -Module PSRemoteRegistry. V tomto článku se můžete podívat na matici funkcí a dostupných parametrů. Součástí modulu je i tématická nápověda about_RemoteRegistry_Module.
Nejprve si ukážeme práci s lokálním počítačem a na konci článku uvedu, jak se lze dotazovat vzdálených počítačů. Otestujme, jestli existuje námi požadovaná větev.
PS C:\> Test-RegKey -Key "SOFTWARE\Makovec"
False
Neexistuje, takže ji vytvoříme
PS C:\> New-RegKey -Key SOFTWARE -Name Makovec
PS C:\> Test-RegKey -Key "SOFTWARE\Makovec"
True
Výborně, nyní si vytvoříme pár testovacích hodnot
PS C:\> 1..10 | % { Set-RegString -Key SOFTWARE\Makovec -Value "RegString$_" -Data $(Get-Random) -Force }
Všimněte si parametru -Force. Pokud jej neuvedete, budete vyzváni, abyste potvrdili zápis (bezpečnostní pojistka). Nyní si můžeme hodnoty zkontrolovat.
PS C:\> Get-RegKey -Key SOFTWARE -Name Makovec
ComputerName Hive Key SubKeyCount ValueCount
------------ ---- --- ----------- ----------
NETBOOK LocalMachine SOFTWARE\Makovec 0 10
PS C:\> Get-RegKey -Key SOFTWARE -Name Makovec | Get-RegValue
ComputerName Hive Key Value Data Type
------------ ---- --- ----- ---- ----
NETBOOK LocalMachine SOFTWARE\Makovec RegString1 1249268748 String
NETBOOK LocalMachine SOFTWARE\Makovec RegString2 1967993881 String
NETBOOK LocalMachine SOFTWARE\Makovec RegString3 1010703330 String
NETBOOK LocalMachine SOFTWARE\Makovec RegString4 86413294 String
NETBOOK LocalMachine SOFTWARE\Makovec RegString5 917742177 String
NETBOOK LocalMachine SOFTWARE\Makovec RegString6 74280723 String
NETBOOK LocalMachine SOFTWARE\Makovec RegString7 526159413 String
NETBOOK LocalMachine SOFTWARE\Makovec RegString8 205545931 String
NETBOOK LocalMachine SOFTWARE\Makovec RegString9 286790375 String
NETBOOK LocalMachine SOFTWARE\Makovec RegString10 2007859651 String
Pojďme si ukázat příklad ze života. Potřebujeme zjistit, na jakém portu komunikuje náš SMS klient na jednotlivých počítačích.
PS C:\> 'PC1','PC2','PC3','PC4' | Get-RegValue -Key SOFTWARE\Microsoft\CCM -Value httpport | ft ComputerName, Value, Data -AutoSize
ComputerName Value Data
------------ ----- ----
PC1 HttpPort 1234
PC2 HttpPort 1111
PC3 HttpPort 1234
PC4 HttpPort 1234
Vidíme, že PC2 potřebuje nutně změnu. Pokud pustíte skript přes více počítačů ve vaší síti, může se stát (a určitě se stane), že některé počítače budou nedostupné a obdržíte chybovou zprávu: Get-RegValue : Exception calling "OpenRemoteBaseKey" with "2" argument(s): "The network path was not found. Pro tyto případy jsou všechny funkce z PSRemoteRegistry modulu vybaveny parametrem -Ping a pokud jej použijete dostanete jasnou zprávu, kde se stala chyba.
PS C:\> 'PC1','PC2','PC3','PC4' | Get-RegValue -Key SOFTWARE\Microsoft\CCM -Value httpport -Ping | ft ComputerName, Value, Data -AutoSize
WARNING: [PC2] doesn't respond to ping.
WARNING: [PC3] doesn't respond to ping.
ComputerName Value Data
------------ ----- ----
PC1 HttpPort 1234
PC4 HttpPort 1234
Do připravovaného článku pro TechNet Flash jsem přidal ukázku, jak použít předchozí příklad na všechny počítače ve vaší doméně. Abych nezapomněl, měli bychom po sobě uklidit.
PS C:\> Remove-RegKey -Key SOFTWARE\Makovec -Force
Musím přiznat, že PSRemoteRegistry jsem okamžitě přidal do svého profilu a za těch pár dní, co jej používám se stal nenahraditelným pomocníkem. Pokud budete někdy potřebovat přistupovat ke vzdáleným registrům, tento modul je pro vás prostě must have.
Uložení záložek z IE7
Poslední dobou se na konci každého pracovního dne probírám otevřenými záložkami v Internet Exploreru a říkám si, kdy to asi budu číst. Většinou přes den otvírám všechno, co mi přijde zajímavé (což jsou pro mne na Twitteru všechny zprávy o PowerShellu :) a pak nestíhám všechno přes den číst. Proto jsem začal používat Evernote a nepřečtené stránky si synchronizuji, abych si je přečetl večer doma. Jelikož jsem vždy ručně kopíroval všechny adresy, nebylo to zrovna pohodlné a rychlé. Rozhodl jsem se, že si tedy udělám skript, který mi všechny otevřené stránky do Evernote klienta nahraje.
Nejprve jsem si myslel, že budu každou instanci IE spouštět z PowerShellu a na konci dne prostě projdu všechny záložky. Což jsem samozřejmě zavrhl okamžitě (vzhledem k množství oken otevíraných externími aplikacemi). Začal jsem brouzdat a objevil příspěvek na Stack Overflow. Celé řešení využívalo COM Shell.Application, který jsem následně využil.
Nejprve jsem jako součást skriptu přidal i možnost exportu do Evernote. Pak jsem ale podlehl (správné :) myšlence na modularitu a pro export vytvořil novou funkci Export-Evernote. Tak můžu v rouře volat libovolný cmdlet a výsledky si číst doma.
Celá funkce tedy vypadá následovně:
function Export-IETabName {
$(New-Object -Com 'Shell.Application').Windows() |
? { $_.Name -eq 'Windows Internet Explorer' } |
? { $_.LocationURL -notlike 'https://remedy*' } |
Select LocationName, LocationURL
} # function Export-IETabName
Ze všech objektů, které vrátí metoda Windows(), vyberu instance Internet Exploreru, vyfiltruji záložky obsahující stránky, které doma číst nechci (zde Remedy) a dále posílám pouze jméno stránky a její adresu. Před odchodem, tedy mohu použít následující kód
PS C:\> Export-IETabName | Export-Evernote -Sync
a poté mohu s klidem vypnout počítač a odejít.
neděle, 24. ledna 2010
Get-PSNews |? {$_.Week –eq '03'}
Uplynulý týden se nesl ve znamení následujících událostí
- V pondělí vyšla nová epizoda PowerScripting Podcastu - tentokrát se Stevenem Murawskim, hostitelem Mind of Root a co-directorem PowerShellCommunity.org
- Celý týden na Hey Scripting Guy! byl zaměřen na moduly. Pokud vytváříte větší množství tématických skriptů a moduly nepoužíváte (novinka ve verzi 2), mohou se vám publikované články hodit.
- Trošku do hloubky na téma module manifest na blogu vývojového týmu PowerShellu (doporučuji začít zde).
- Oisin Grehan publikoval skript, který najde parametry zadaného cmdletu v závislosti na kontextu.
- Poprvé na tomto blogu něco pro Exchange administrátory. Jak na změnu emailové adresy, publikoval Shay Levy.
- Pokud používáte cmdlet Export-Csv a vadí vám, že nemá parametr Append, zkuste vylepšení od Dmitriho Sotnikova.
- Jak na odložený Print Screen z PowerShell konzole, ukazuje v článku Lee Holmes.
- Pokud používáte AD cmdlety od firmy Quest, může se vám hodit tip na zrychlení odezvy při vracených objektů.
- Jak používat PowerShell pro práci s GPO, popsán příklad pro správu tiskáren.
- Pokud hledáte zvýrazňovač syntaxe pro vaše stránky, zkuste zvýraznění pomocí PowerShell skriptu.
- Minule jsem byl nadšen MobileShell-em, zkuste jej na Windows 7.
- Vytváříte často vlastní objekty? Jak to řeší Karl Prosser a Doug Finke?
Posledních několik týdnů se také mluví o větší popularizaci PowerShellu mezi (hlavně) administrátory. Nejvíce je nyní v této souvislosti asi slyšet Jeff Hicks (samozřejmě ale není jediný), který byl hostem v dnes již jednou zmiňovaném podcastu Mind of Root. Poté napsal i krátký příspěvek v jeho blogu. Proto bych chtěl dnešní noviky opět ukončit několika otázkami a budu moc rád, pokud mi na ně odpovíte (klidně se rozepište více :)). Mé odpovědi najdete v komentářích.
- Jak dlouho s PowerShellem pracujete?
- Pro jaké úkoly PowerShell používáte?
- Snažíte se propagovat PowerShell ve vaší práci a nebo si jej radši necháváte pro sebe, abyste měli náskok před kolegy.