2012 Windows PowerShell Scripting Games

 Juče su započele 2012 Windows PowerShell Scripting Games i trajaće do 13. aprila. Još uvek nije kasno da se pridružite, tek je drugi zadatak objavljen pre par sati. Učesnike očekuje mnoštvo nagrada, kako dnevnih, tako i velika nagrada - besplatna ulaznica za Microsoft TechEd North America 2012 u Orlandu. Takmičenje se odvija u dve kategorije—početničkoj i naprednoj—u vidu 10 zadataka koji će biti objavljeni svakog radnog dana tokom naredne dve nedelje. Rešenja ocenjuje velika grupa PowerShell eksperata iz celoga sveta. Da bi učestvovali u takmičenju potrebno je da se prijavite na sajtu http://2012sg.poshcode.org/ i počnete da objavljujete svoja rešenja. Možete se takmičiti samo u jednoj od kategorija. Ako ne možete da odlučite koja kategorija je za vas, organizator je napravio mali PowerShell kviz.

Proučite zvanične uslove ocenjivanja kako bi saznali više o kriterijumima koji se primenjuju tokom dodele poena (svako poslato rešenje dobija 1 poen za samo učestovanje, a posle se poeni dodaju do maksimalnih 5). Pridružite se igrama—veoma je zabavno, a velike su šanse i da ćete puno naučiti. I same sudije tokom igara nauče neki novi trik. PowerShell is fun! :) 

Sve potrebne informacije i linkove o 2012 Windows PowerShell Scripting Games ćete naći na prigodno nazvanoj stranici 2012 Windows PowerShell Scripting Games: All Links on One page.

Zvaničan Twitter hashtag igara je #2012SG.

Posted by aleksandar with no comments

Februarski sastanak IT PRO korisničke grupe u Beogradu

Sutra, 2. februara 2012. godine, od 18 časova, u prostorijama Microsofta (Makedonska 30, VI sprat, Beograd) održaće se prvi sastanak IT PRO korisničke grupe u ovoj godini. Naziv predavanja je PowerShell v3 Remoting: Nove mogućnosti.

Apstrakt predavanja: Remoting je osnovna odlika Windows PowerShell-a. Mada uveden u prethodnoj verziji Windows PowerShell-a, dolazi do punog značaja u v3 kao osnovni način za upravljanje Windows Server-om 8. Iako to ne bi rekli na prvi pogled, novi Server Manager se zasniva na PowerShell Remoting-u. Pridružite nam se da se upoznate sa promenama koje je donela nova verzija, kao i potpuno novim mogućnostima koje PowerShell Remoting čine mnogo robusnijim, pouzdanijim, fleksibilnijim i efikasnijim.

Dođite da se družimo i da saznate nešto novo. Vidimo se.

Najava sastanaka NS IT i BG IT Pro korisničkih grupa

Sastanak NS IT UG će se održati 23. novembra 2011. sa početkom u 17:30h.

 

Sastanak BG IT Pro UG će se održati 1. decembra 2011. sa početkom u 18:00h.
Lokacija: Makedonska 30, VI sprat - Microsoft Srbija

 

Tema oba sastanka će biti Windows PowerShell Remoting.
Apstrakt: PowerShell v2 je doneo dugo priželjkivanu funkcionalnost—PowerShell remoting—i omogućio nam da izvršavamo PowerShell komande na udaljenim računarima. Tokom ove prezentacije videćete kako se omogućava PowerShell remoting, kako izvršavamo udaljene komande, šta je PowerShell sesija, kako uspostavljamo interaktivnu sesiju, na koji način istovremeno izvršavamo komandu na većem broju računara...

 

Očekujte veliki broj praktičnih primera.

 

Dođite da se družimo i da saznate nešto novo. Poželjno je da postavite što veći broj pitanja. Vidimo se.

 

Šta želite da saznate o PowerShell-u?

Planiramo za kraj novembra sastanke IT Pro korisničkih grupa u Beogradu i Novom Sadu. Koje teme vezane za Windows PowerShell vas zanimaju? Šta bi želeli da čujete? Evo par predloga:

  • PowerShell za početnike
  • PowerShell i WMI
  • PowerShell Remoting
  • Interactive PowerShell Scripting

Ostavite komentar- glasajte za neki od predloga ili predložite novu temu. Vidimo se krajem novembra.

 

Sinergija 11: Automating Windows Server 2008 R2 Administration with Windows PowerShell

 Na Microsoft Sinergiji 11 imali ste priliku da čujete par prezentacija koje su za temu imale Windows PowerShell. Jedna od njih, Automating Windows Server 2008 R2 Administration with Windows PowerShell, je bila izuzetno posećena i sala nije bila dovoljno velika da primi sve zainteresovane. Ako ste i vi bili među njima, evo prilike da pogledate prezentaciju.

Demo kod je takođe dostupan za preuzimanje.

 

Svima koji su izdržali tropsku temperaturu u sali i sačekali kraj predavanja, još jednom hvala. Nadam se da se isplatilo.

Blackhat i Defcon PowerShell prezentacija

David Kennedy (ReL1K) i Josh Kelley (Winfang) su na nedavno održanim Blackhat i Defcon konferencijama imali veoma posećenu i primećenu PowerShell prezentaciju. Sesija je pokrivala moćne sposobnosti PowerShell-a u izvršenju naprednih zadataka i kako ga iskoristiti prilikom penetration testova. Na Davidom blogu možete preuzeti prezentaciju (PDF), Metasploit modul i PowerShell kod korišćen tokom demonstracije.

 

Posted by aleksandar with no comments

Monad Manifest - poreklo Windows PowerShell-a

Iako mnogi misle da je Windows PowerShell nova tehnologija, juče je bila osma godišnjica kako je interno objavljen Monad (radno ime PowerShell-a) manifest, dokument koji je postavio osnove za razvoj nove platforme za automatizaciju. Dokument je već par godina, uz neke manje izmene, dostupan javnosti i može se preuzeti sa bloga PowerShell tima. Neverovatno koliko je tim ostao dosledan viziji prezentovanoj manifestom. Ako vas zanimaju počeci PowerShell-a odvojite malo vremena za ovaj dokument. 

Posted by aleksandar with no comments

Sinergija 09 i "PowerShell V2: brži, moćniji, neodoljiv"

 Sutra, 18. novembra, od 9:00 do 10:00 ću održati predavanje "PowerShell V2: brži, moćniji, neodoljiv" u Sali E Sava Centra. U nastavku nastupa Krunoslav Mihalić (MSFT) i njegova "PowerShell - Demo Extravaganza". Uz gomilu informacija, videćete i mnogo praktičnih primera. Pridružite nam se.

PowerShell i .NET odgovor na pitanje - Da li je računar dostupan?

Kada koristite PowerShell možete na više načina proveriti da li je neki računar dostupan. PowerShell V2 nudi novi komandlet Test-Connection, a ako još uvek koristite V1 na raspolaganju vam je dobra stara ping komanda, WMI klasa Win32_PingStatus ili .Net klasa System.Net.NetworkInformation.Ping. Pozabavimo se malo .Net rešenjem. Prvo kreiramo novi objekt:

$Ping = New-Object System.Net.NetworkInformation.Ping

Objekt $Ping ima Send metod. Evo kako možemo videti validne načine za kreiranje instance:

$Ping | Get-Member Send | Format-List *
TypeName   : System.Net.NetworkInformation.Ping
Name       : Send
MemberType : Method
Definition : System.Net.NetworkInformation.PingReply Send(String hostNameOrAddress), System.Net.NetworkInformation.Ping
             Reply Send(String hostNameOrAddress, Int32 timeout), System.Net.NetworkInformation.PingReply Send(IPAddres
             s address), System.Net.NetworkInformation.PingReply Send(IPAddress address, Int32 timeout), System.Net.Net
             workInformation.PingReply Send(String hostNameOrAddress, Int32 timeout, Byte[] buffer), System.Net.Network
             Information.PingReply Send(IPAddress address, Int32 timeout, Byte[] buffer), System.Net.NetworkInformation
             .PingReply Send(String hostNameOrAddress, Int32 timeout, Byte[] buffer, PingOptions options), System.Net.N
             etworkInformation.PingReply Send(IPAddress address, Int32 timeout, Byte[] buffer, PingOptions options)

Koristićemo, recimo, Send(String hostNameOrAddress, Int32 timeout) konstruktor.

$Ping.Send($hostNameOrAddress,$timeout) vraća PingReply objekt (System.Net.NetworkInformation.PingReply). Ako pogledamo njegove metode i osobine, uočićemo da nedostaje podatak o imenu računara čiju dostupnost proveravamo:

$Ping.Send('localhost',1000) | Get-Member

   TypeName: System.Net.NetworkInformation.PingReply

Name              MemberType Definition
----              ---------- ----------
Equals            Method     System.Boolean Equals(Object obj)
GetHashCode       Method     System.Int32 GetHashCode()
GetType           Method     System.Type GetType()
get_Address       Method     System.Net.IPAddress get_Address()
get_Buffer        Method     System.Byte[] get_Buffer()
get_Options       Method     System.Net.NetworkInformation.PingOptions get_Options()
get_RoundtripTime Method     System.Int64 get_RoundtripTime()
get_Status        Method     System.Net.NetworkInformation.IPStatus get_Status()
ToString          Method     System.String ToString()
Address           Property   System.Net.IPAddress Address {get;}
Buffer            Property   System.Byte[] Buffer {get;}
Options           Property   System.Net.NetworkInformation.PingOptions Options {get;}
RoundtripTime     Property   System.Int64 RoundtripTime {get;}
Status            Property   System.Net.NetworkInformation.IPStatus Status {get;}

Ako bi želeli da proverimo veći broj računara, podatak o imenu pingovanog računara u finalnom objektu nam je neophodan. Možemo dodati ComputerName NoteProperty koristeći Add-Member komandlet. PassThru parameter je nužan, pošto, po default-u, Add-Member ne generiše nikakav izlaz. Neka je $Computers niz koji sadrži imena računara. Do imena računara i kreiranja niza možemo doći upitom u Active Directory, učitavanjem tekstualne datoteke/CSV datoteke ili direktnim navođenjem članova:

$Computers = 'localhost','10.10.0.4'

 

# prvo inicijalizujemo niz koji će postati naš finalni objekt
$Replies = @()

# obrađujemo svaki računar koji se nalazi u nizu $Computers
$Computers | ForEach-Object {
# prikazujemo poruku o računaru čija se dostupnost trenutno proverava
Write-Host "Proveravamo računar: $_" -foregroundcolor Yellow
# objektu $Ping.Send($_,1000) koji nastaje pingovanjem računara $_
# dodajemo ComputerName osobinu čija je vrednost ime računara $_
$Replies += Add-Member -InputObject $($Ping.Send($_,1000)) -MemberType NoteProperty -Name ComputerName -Value $_ -passthru
}

Proverimo osobine novokreiranog izlaznog objekta $Replies:

$Replies | Get-Member -type *Property

   TypeName: System.Net.NetworkInformation.PingReply

Name          MemberType   Definition
----          ----------   ----------
ComputerName  NoteProperty System.Management.Automation.PSObject ComputerName=localhost
Address       Property     System.Net.IPAddress Address {get;}
Buffer        Property     System.Byte[] Buffer {get;}
Options       Property     System.Net.NetworkInformation.PingOptions Options {get;}
RoundtripTime Property     System.Int64 RoundtripTime {get;}
Status        Property     System.Net.NetworkInformation.IPStatus Status {get;}

PingReply objekt je proširen ComputerName NoteProperty-jem kako smo i želeli.

Sve je ovo divno i krasno dok proveravamo dostupnost računara na osnovu IP adresa i validnih imena, ali kada naletimo na ime računara koje Send metod ne može da razreši, dolazi do greške. Zato nam je potreban Trap blok kako bi "uhvatili" grešku, upisali informaciju o grešci u log datoteku i nastavili sa izvršenjem. Spakujmo sada sve ovo u funkciju Test-OnlineStatus.

function Test-OnlineStatus {
   param (
   [string[]]$ComputerName = $env:computername, # ComputerName parameter je niz; default vrednost je lokalni računar
   [string]$LogFile = 'c:\OnlineStatus.log'
   )

 


   BEGIN {
      $Ping = New-Object System.Net.NetworkInformation.Ping
      # inicijalizujemo niz koji će postati naš finalni objekt
      $Replies = @()
      # $LogFile će sadržavati informaciju o imenima računara koja nisu mogla biti razrešena
      # ako $LogFile već postoji, obriši je
      if (Test-Path $LogFile) {Remove-Item $LogFile}
   }

   PROCESS {
      # da bi prihvatili i vrednosti preko pipeline-a, dodajemo nizu $ComputerName i ime računara koji stiže putem pipeline-a
      if ($_) {$ComputerName += $_}
      $ComputerName | ForEach-Object {
         # ovo je potrebno pošto se scope menja u okviru trap bloka
         $computer = $_
         trap {
            Write-Host "Ime računara $computer nije moglo biti razrešeno." -foregroundcolor Red
            "Ime računara $computer nije moglo biti razrešeno." | Out-File $LogFile -append
            continue
         }

         . {
            Write-Host "Proveravamo računar: $_" -foregroundcolor Yellow
            $Replies += Add-Member -InputObject $($Ping.Send($_,1000)) -MemberType NoteProperty -Name ComputerName -Value $_ -passthru
         }
      }
      # praznimo niz $ComputerName kako bi prihvatio sledeću vrednost preko pipeline-a
      $ComputerName = $null
   }

   END {
      Write-Output $Replies
   }
}

Test-OnlineStatus funkcija ima dva parametra - ComputerName (niz imena računara) i LogFile (putanja do log datotekeu koju se upisuju informacije o imenima računara koja nisu mogla biti razrešena). Funkcija prihvata ulazne vrednosti i preko pipeline-a i kao vrednosti parametara. Čak se mogu istovremeno koristiti. Za kraj evo par primera kako se funkcija koristi:

PS C:\> $computers | Test-OnlineStatus | Select ComputerName,Status,Address | Export-Csv c:\OnlineStatus.csv -noTypeInformation
PS C:\> Test-OnlineStatus $computers -LogFile c:\izvestaj.log | Format-Table ComputerName,Status,Address -AutoSize
PS C:\> $computers | Test-OnlineStatus Server01,Server02 | Format-Table ComputerName,Status
PS C:\> 'Server01','Server02' | Test-OnlineStatus $computers | Format-Table ComputerName,Status

PowerShell i Sysinternals alati - dobitna kombinacija

Verujem da ne postoji administrator Windows sistema koji u svom radu ne koristi neki alat iz moćne Windows Sysinternals kolekcije. Pre nešto više od godinu dana zaživeo je i Sysinternals Live, servis koji omogućava da pokrenete Sysinternals alate direktno sa web linka, bez potrebe da ga preuzmete na vaš računar. Sve što treba da uradite je da unesete putanju do alata, bilo u Windows Explorer/Internet Explorer ili command prompt kao http://live.sysinternals.com/<toolname> ili \\live.sysinternals.com\tools\<toolname>. Posebno je interesantan drugi link koji Sysinternals Live nudi kao file share. Ako koristimo PowerShell možemo:

1. pokrenuti alat direktno

PS C:\> \\live.sysinternals.com\tools\autoruns.exe

2. kreirati novi PSDrive (shvatite to kao mapirani deljeni folder, ali vidljiv samo u PowerShell sesiji)

PS C:\> New-PSDrive -Name S -PSProvider filesystem -Root \\live.sysinternals.com\tools
PS C:\> cd s:
PS S:\> .\autoruns.exe

3. ako ipak želite da Sysinternals alate imate lokalno na svom disku, preporučujem Get-Sysinternals funkciju koju je napisao Shay Levy, PowerShell MVP kako bi uvek imao najnovije verzije na svom računaru. Za one koji su već prešli na PowerShell V2, preuzimanje svih alata je znatno jednostavnije korišćenjem Start-BitsTransfer komandleta koji za prenos datoteka koristi isti protokol kao i Windows Update sistem.

# prvo učitamo BitsTransfer modul
PS C:\> Import-Module BitsTransfer
# i zatim preuzmemo sve alate u lokalni folder
PS> Start-BitsTransfer -Source \\live.sysinternals.com\tools\*.* -Destination c:\sysint\

Komandu nisam "opteretio" dodatnim parametrima, pošto količina podataka koju treba preneti nije velika (~30MB), ali bi za veći prenos bilo poželjno pokrenuti asinhrono preuzimanje (kako bi odmah oslobodili prompt za unos novih komandi) i definisati prioritet (recimo, Normal: Transfers the job in the background with a normal priority. Background transfers use the idle network bandwidth of the client computer to transfer files.) O dodatnim parametrima Start-BitsTransfer komandleta uskoro će biti nešto više reči.

PowerShell timu potrebna pomoć

Marco Shaw, PowerShell MVP i jedan od "direktora" PowerShellCommunity.org me zamolio da pronađem PowerShell početnika kome je srpski maternji jezik, ali bi želeo da pomogne recenzijom PowerShell dokumentacije na engleskom jeziku. Zvuči neobično, ali to je ono što trenutno treba PowerShell timu. Više detalja možete pročitati na Marcovom blogu http://marcoshaw.blogspot.com/2009/09/call-to-action-please-read-if-you-want.html

Ako ste sami zainteresovani ili znate nekoga ko bi mogao biti, javite se na adresu doc_reviews@powershellcommunity.org

 

Posted by aleksandar with no comments

PowerShell prezentacije i virtuelne laboratorije

TechNet Events and Webcasts je stranica koja definitivno zaslužuje da se nađe među omiljenim stranicama IT profesionalca koji se bavi Microsoft tehnologijama. Zainteresovani će naći dobro organizovani pregled najnovijih webcast-ova, podcast-ova i virtuelnih laboratorija. PowerShell je trenutno zastupljen sa tri odlične prezentacije, koje idu on nivoa 200 do 400, i pokrivaju uvodnu priču u PowerShell V1, kao i napredne tehnike PowerShell-a V2. Sve prezentacije su date u raznim formatima (wmv, mp4, mp3, wma), a postoji i kompletna PowerPoint prezentacija u oba formata (ppt i pptx).

Ako vas prezentacije zainteresuju, a nemate još uvek instaliran PowerShell (ili niste instalirali Windows 7 ili Windows Server 2008 R2 koji dolaze sa PowerShell V2), možete neke od mogućnosti probati koristeći TechNet Virtual Labs: Windows System Administration Scripting. 4 virtuelne laboratorije pokrivaju PowerShell i kreirane su još pre par godina u vreme proboja PowerShell V1, ali su još uvek dovoljno kvalitetne za one koji tek nameravaju da probaju PowerShell. Čak i ako nemate nameru da izdvojite par sati i prođete kroz sve laboratorije, preuzmite priručnike. Dodatna dokumentacija nikada nije na odmet. :)

Besplatna knjiga "Mastering PowerShell"

Na tržištu postoji par odličnih knjiga o PowerShell-u, ali je samo jedna od njih besplatna. :)


Scripting Windows PowerShell: Einsteiger Workshop, autora Tobiasa Weltnera (kreator PowerShell Plus editora i jedini nemački PowerShell MVP), originalno objavljena krajem 2007. godine na nemačkom jeziku, doživela je i svoje elektronsko izdanje na engleskom jeziku. Mada se originalna knjiga još uvek prodaje po ceni od 29.90 evra, englesku verziju Mastering PowerShell je moguće preuzeti potpuno besplatno (čak se ne zahteva ni registracija). Pored PDF verzije, na sajtu powershell.com je i online verzija knjige.

Na čitavih 567 strana organizovanih u 20 poglavlja, autor obrađuje mogućnosti PowerShell V1, vodeći čitaoca od osnovnih tehnika upotrebe PowerShell-a do naprednog korišćenja, uz mnoštvo trikova poznatih samo iskusnim PowerShell skripterima:

01. The PowerShell Console
02. Interactive PowerShell
03. Variables
04. Arrays and Hashtables
05. The PowerShell Pipeline
06. Using Objects
07. Conditions
08. Loops
09. Functions
10. Scripts
11. Finding and Avoiding Errors
12. Command Discovery and Scriptblocks
13. Text and Regular Expressions
14. XML
15. The File System
16. The Registry
17. Processes, Services, Event Logs
18. Windows Management Instrumentation
19. User Management
20. Your Own Cmdlets and Extensions


Imao sam čast i privilegiju da budem tehnički urednik engleske verzije knjige i pouzdano znam da je korišćenje PowerShell-a mnogo lakše uz nju, bez obzira da li tek počinjete da otkrivate njegove tajne ili je PowerShell prvo što pokrenete posle prijave na sistem.

Posted by aleksandar with 3 comment(s)
Filed under: , ,

Windows 7 RTM, Windows Server 2008 R2 RTM i još par poslastica

Windows 7 RTM je već skoro dve nedelje na raspolaganju TechNet i MSDN pretplatnicima, a od 14. avgusta mu se pridružio i Windows Server 2008 R2 RTM. Detalje o datumima dostupnosti za razne kategorije korisnika mogu se naći na zvaničnim blogovima Windows 7 i Windows Server tima. Ako ne spadate ni u jednu od navedenih kategorija, ipak ne morate čekati izlazak retail verzije u oktobru - probna verzija je takođe dostupna i možete je besplatno koristiti 180 dana (iako besplatna, i ova verzija se mora aktivirati u roku od 10 dana). Za one koji su skloni testiranju u virtuelnom okruženju, Microsoft nudi i pripremljene VHD datoteke (Enterprise i Server Core). Zašto je ovo bitno korisnicima Windows PowerShell-a? Sa pojavom RTM verzija novih operativnih sistema, napokon smo dočekali i Windows PowerShell 2.0 RTM koji je sada njihov sastavni deo. Nove funkcionalnosti kao što su remoting, ISE, moduli, napredne funkcije, transakcije, unapređena podrška za WMI i ADSI sada su na dohvat ruke.

I kao da ovo nije bilo dovoljno novosti za avgust mesec, PowerShell tim je prošle nedelje objavio PowerShell 2.0 RC verziju za Windows Vista SP1 i SP2 i Windows Server 2008 RTM/SP1 i SP2, kao sastavni deo Microsoft Windows Management Framework RC u kome se još nalaze i WinRM 2.0 i BITS 4.0.

Verzija Windows PowerShell 2.0 koja će u punom sjaju (uključujući i remoting) raditi i na Windows XP SP3 i Windows Server 2003 SP2 mašinama očekuje se tokom narednih meseci.

Instalirajte Virtual PC 2007 SP1 pre virtualizacije Windows 7 RC

Kao što verovatno već znate, Windows 7 RC je dostupan od 30. aprila TechNet i MSDN pretplatnicima. Od sutra, 5. maja svaki zainteresovani korisnik će moći da ga preuzme. Ova verzija (build 7100) biće validna do 1. juna 2010. godine tako da ima više nego dovoljno vremena za testiranje novih funkcionalnosti.

Ako planirate da instalirate Windows 7 RC koristeći Microsoft Virtual PC 2007, ne koristite verziju stariju od Virtual PC 2007 SP1 (6.0.192.0). Stara verzija (6.0.156.0) će vas iznenaditi "plavim ekranom" (BSOD) posle instalacije Virtual Machine Additions (Error: Fs_Rec.sys - The driver mistakenly marked a part of its image pagable instead of nonpagable.)

(Srećom, System Restore radi odlično.)

 

Update: Preuzmite Windows 7 RC i Windows Server 2008 R2 RC

 

 

Posted by aleksandar with 2 comment(s)
More Posts Next page »