October 2009 Archives

Windows_7_Logo

This is dedicated to the entire Team at Microsoft behind the Development, Marketing, Production of Windows 7 including the Eight Million People worldwide across various countries who downloaded, used the Betas and RC’s providing Feedback to make the product what it came to be on Launch day yesterday.

You the Community made this product what it is

You can Sing this (Believe it or Not) to “Iron Maiden” and “Seventh Son of a Seventh Son”

But even without words, I think it’s fun to read.

"Seventh One is a Seventh Won"

Hear the tale from Binary minds
Of a code that had shaped
Right down the lines
The bits and the bytes following through
The Beta, the RC's RTM's too

See them all, the many download
The perfect, the shaping, unbroken code
United as one, a goal in their eyes
8 million strong to strengthen the prize

[Chorus:]
Seventh One is a Seventh WON
Seventh One is a Seventh WON
Seventh One is a Seventh WON
Seventh One is a Seventh WON


Redmond stands back, listening well
The comments, the feedback, no one shall quell
Adjusting and shaping, they work through the night
A thing of pure beauty, it shines it their sight

[Chorus:]

Seventh One is a Seventh WON
Seventh One is a Seventh WON
Seventh One is a Seventh WON
Seventh One is a Seventh WON


Today is launched the Seventh One
An O/S pure the Seventh One
And we who helped the Seventh One
It has the Power to Create
It has the Power of Shell to Unite
It is our choice O/S
Let it be compiled
Let it not be undone

Ode to Windows 7

| | Comments (0) | TrackBacks (0)

Windows_7_Logo

O Windows 7, how do I love thee? Let me count the ways

I love thee for thy cleaner core; lending speed to my flight,
Booting faster, launching quickly,
rocketing through the night.

I love thee for thy WinRE
to save me in the day

I love thee for the for thy Windows Shake,
tosseth my problems all away.

I love thee for thy compatability, extending to the past
Launching away whatever that I cast

I love thee for thy security, protecting all that is mine
Keepeth out troublemaking, rotten little swine

I love thee for thy Gui, an interface to behold
Dancing quickly, revealing all, in colors oh so bold

But mostly I love thee Windows 7, as the day it carries on
For being simply the nicest, one to come along

 PowershellBIG

 

So last time we left you with a partially useful Powershell line.  The ability to type in a computer name into a variable and have it list all the Physical network cards attached to the System via WMI (Windows Management Instrumentation).

The end result of this desired operation would be to have a list of all the MAC addresses on your PC’s.   For what purpose?  Possibly setting up SCCM 2007 or maybe even to aid in securing DHCP by having a list of MAC addresses in use and only only handing out IP’s to registered network cards.

Or maybe you just like collecting MAC Addresses :)

But to make this truly useful, we need a list of computers.  Now if I (or you) have to go to each computer to GET it’s name, that completely defeats the purpose.  But if you have Active Directory on your site this really gets easy.   Any version will do for Powershell.

 

So our first piece involves having the FREE Quest Active Roles Management Shell for Active Directory for Powershell.  We’re going to use the “GET-QADCOMPUTER” to get a list of systems in Active Directory, because well, that’s GET-QADCOMPUTER DOES and does very well and simply.

 

GET-QADCOMPUTER

 

That of course will dump a list from 3 to 300 lines of computer names depending on the size of your network.  But we don’t want to see the pretty list.  We need that list to work for us.  So we’re going to store that information away in a Powershell variable.

 

$COMPUTERLIST=GET-QADCOMPUTER

 

Once we have this list we can select and pipe each item from this list into the Powershell commandlet from before

------ PRINTMACLIST.PS1 ------

$COMPUTERLIST=GET-QADCOMPUTER

FOREACH ($PC IN $COMPUTERLIST)
{

Get-WmiObject WIN32_NETWORKADAPTER -computer $PC.NAME | where { $_.PhysicalAdapter.CompareTo($FALSE) } | Format-table @{Label="ComputerName"; Expression={$PC.NAME}}, NAME, MACADDRESS,

}

-------- END OF SCRIPT -----------

 

Now this is all fine and dandy.  A printed report on the screen.   But the whole point of Powershell and Computers and Life in general is try and SAVE work, like avoiding typing in that silly list.   So instead of using “FORMAT-TABLE” we’re going to “SELECT” from the OBJECT the PROPERTIES we want so we can EXPORT it to a CSV (Anybody see where I’m going with this?  Yeah I’m that obvious eh?)

 

So the same script but swap out “FORMAT-TABLE” with “SELECT-OBJECT” which allows out to pick out what we want.  Then we’ll use EXPORT-CSV to pipe all that output into a nice file which should at LEAST save on typing

 

------ EXPORTMACLIST.PS1 ------

$COMPUTERLIST=GET-QADCOMPUTER

FOREACH ($PC IN $COMPUTERLIST)
{

Get-WmiObject WIN32_NETWORKADAPTER -computer $PC.NAME | where { $_.PhysicalAdapter.CompareTo($FALSE) } | select-object NAME, MACADDRESS, @{Label="ComputerName"; Expression={$PC.NAME}} | Export-csv C:\MACADDRS.CSV

}

-------- END OF SCRIPT -----------

 

And now what you’ll have is an easy way to pull out the MacAddresses, list of Physical network cards INCLUDING the Computer name on each line.   The interesting part is because this is mostly based on WMI you could easily add on Filters to only show computers which are Workstations.  And With GET-QADCOMPUTER you can even filter specific OU’s containing computers.

 

Enjoy the Power
It’s Easy and It’s Free

 

Sean
The Energized Tech

Singing Nerds

| | Comments (0) | TrackBacks (0)

If you’re a geek that writes tunes for fun, even dares to sing them or Good Grief, PLAY an INSTRUMENT!

You’re not alone.

Here’s a fellow who did a Video called Qbasic Nerd

and as well Wrote an original song called “Farewell to Dos” . You can download it HERE.

 

Are you a guy like him or me?  Do you do this for fun? Professionally?  Just cuz you had a beer? Or three?

 

Email me ye110wbeard@hotmail.com if you have links.  I wouldn’t mind putting together a list we can all share and help get rid of those stress filled days once and for all

Cheers

Sean
The Energized Tech

 

PowershellBIG

 

I was thinking, If you wanted to REALLY do a good deployment of Windows 7 (or Vista for that Matter) you’d want to have a full Zero Touch installation scenario.   A Zero Touch Installation (to put it in a a VERY general description) allows you to “Flip the Switch and just install handsfree”.

This is where if you spent the time with Microsoft Deployment Toolkit 2010, Systems Center Configuration Manager 2007 and tie in a Windows Deployment Server you can deploy 10’s 100’s or 10’s of 1000’s of workstations effortlessly.

And with Windows 7 and Windows Vista tied into this scenario, you don’t need to maintain and keep re-updating the images.  Just add or change the needed pieces!

But to get something like this started (at least from what I understand) you’ll need a list of MAC addresses and machine names.  

There’s a lot more than that, and if you had a small network of 10 computers, it’s not so difficult.

Or is it?  Do you want to climb under every desk and dig for numbers? or Sit there logging it, typing in IPConfig, writing down the info, hoping you have it right…

Yes if you’re a large corporation, you probably have inventory software, but unfortunately that’s not always correct.  Network cards get changed.

But in Powershell, well this is very easy to do

You’ll find I have a huge theme in Powershell, using it to get the information I need.    Because it just does it so beautifully and so simply

 

And so INEXPENSIVELY! :)

 

So one of the things you will hear over and over and over is how Powershell and WMI are best friends.  And they are.

WMI – the “Windows Management Instrumentation”, contains a LOT of information on your PC, your operating system, right down to the CMOS and how Many sticks of Ram you have.

In our case we’re going to ask Windows what network cards we have using

 
Get-Wmiobject WIN32_NETWORKADAPTER


Now this command simply lists EVERY Network Adapter, both REAL and Virtual, Including CiscoVPN, Tunneling, loopback.  To be honest a bit TMI (too much Information)

Really all I want is a list of the PHYSICAL adapters.  And this is done very easily too.  If you run a GET-MEMBER against this output you’ll find a pretty obvious Property called “PhysicalAdapter” with a Boolean True/False.  Want to guess what it does?

If you run tack on that property to our last command


Get-Wmiobject WIN32_NETWORKADAPTER | Foreach { $_.Name, $_.PhysicalAdapter }


You’ll end up with a basic list showing all the adapters and whether they are PHYSICAL (True) or NOT (False)

So this is great but Ideally I’d like to take this into a useful form.  So with a little help of the Format-List command and specifying properties.


Get-WmiObject win32_networkadapter | where { $_.PhysicalAdapter.CompareTo($FALSE) } | format-table -property name, macaddress


Now to make it TRULY useful, I’d like to have it mesh the name of the computer into this on the output which would make things easier for me as the Administrator to know which machines have these MacAddresses.  Well that part is easy.  I already know this particular computer name.   But we’re going to prepare this script to be universally useful.  I’m going to assign the name to a variable.

$COMPUTERNAME=’localhost’

Get-WmiObject win32_networkadapter -computer $computername | where { $_.PhysicalAdapter.CompareTo($FALSE) } | format-table -property @{Label="ComputerName"; Expression={$computername}}, name, macaddress
 


Ok yes, that’s a cheat but you’ll see why this is useful next time.   What has been done is to use the GET-WMIOBJECT to pull up that list we had before.  We’re piping the output to the “FORMAT-TABLE” listing only the Name of the card and it’s Macaddress with a computer name.  I’ve also added in a Custom column into the list showing the present Computer Name.  Why is this going to help for one machine.

 

That’s for Next time I’ll show you how to tie THAT into Active Directory to get a list of your computers and have Powershell do all the work for you. 

 

Sean
The Energized Tech

I am still amazed that this is free from Microsoft.   I’ve just spent a few hours messing about with it.

And whether you’re Small Business, General Field Technician or in the Enterprise.  You can USE this without headaches.  You can USE this for FREE.  You don’t even need high end hardware to play with it!

The Microsoft Deployment Toolkit 2010 is a free download from Microsoft that allows you to pull off a NUMBER of things easily.

 

You can use it to Customize your operating System more readily for your Environment

You can create a standard image to install on Client sites

You can use it to capture User configuration information before deployment

You can have all the drivers ready in one environment

Why you can even tie it directly into a Windows Deployment Server on Server 2008 with EASE

 

And it has POWERSHELL scripts so that you can Automate more easily!

 

Yes it does a pile of things

image

What you’re seeing right now is the very screen from “Getting Started” in the MDT 2010.    It gives you a quick breakdown of the step by step process used in deployment.  What is nice is as you click on each step in the presented photo it IMMEDIATELY

image image

Brings you to detailed instructions relevant to that step

And yes it can get REALLY complex.   But it doesn’t have to be really.  It’s meant to be the most powerful tool in your deployment arsenal and yet the simplest if need be.

 

And do you know how hard it isn’t? (Yes strike me down, a double negative hath been uttered!)

 

Create a new Deployment Share from “Actions / New Deployment Share” or Right Click on “Deployment Shares” and choose the same option.  Follow the Step by Step wizard.   You have various options you can select or de-select for your Deployment Share including the option of asking Users for the Product key or Admin password (depending on your environment it might make sense with OEM Stickered software? 

 

image  image   image image image  image

 

You then import whatever Applications, Operating System Media, Drivers, Service Packs You’ll need…

 

image image image image

 

Create a “Task Sequence” which when you link up with a Windows Deployment Server allows you to “Boot and Choose” from PXE.   These Sequences STOCK are “Standard Client Task” and “Standard Server Task” which are good for instaling a clean O/S with Applications, “Sysprep and Capture” which is needed if you’re going to capture a running “Gold O/S" including customizations and store it as a Master on a server.  BTW, this is FAR better than standard Imaging since it gives you a proper, hardware independent clean install everytime.  “Lighttouch OEM” would be a typical deployment OEM’s would use and is preconfigured for those scenarios.  “Standard Client Replace Task” allows you to boot off PXE and Capture the profiles of the user or Users on a workstation, and blank it out afterwards.

Also, note none of these are “HARDCODED”, they are Predefined templates you can take and customize to meet YOUR needs, fully documented within the Application MDT 2010

 

image

 

And then you can work with various “Selection Profiles” and “Media” to create the Standard install environment to work from

 

image image

 

And of course after running each task, it automatically creates a Powershell script so that you just edit and run that for the next time to standardize how you do it.

image 

Why a Powershell Script? 

Let’s just say you are a field tech, and you’re running MDT 2010 and WDS on various client sites with unique applications and Operating system needs.   The nice thing, is because ALL of this is Powershell based, you can carry a USB key with you with the standard tasks you normally use to make MDT 2010 customized the way you want, have the MDT 2010 and Windows AIK software ready, and in minutes create a NEW deployment Environment referencing the client’s OWN operating System and Applications.  The names of the MSI files will be different as will the source for the Deployment, but the process is the same and therefore just a few edits away.

 

And I can tell from experience, having the ability to create a standard hardware independent deployment makes *YOU* smarter, faster and more cost effective to your customers!  Or better yet, you can bill your standard rates but have the client up and running completely with a new Deployment in a FAR shorter time, which makes THEM more productive and HAPPIER!

With something like this in your bag of tools?  You can deploy 50 copies of Windows 7 as easily as you can Deploy Five!

 

So what do you need to get started?

MDT 2010 (Free download from Microsoft)

Windows AIK for Windows 7 (Free download from Microsoft)

 

And maybe a Saturday afternoon with a glass of Iced Tea to play :)

 

We’ll deep dive into this a bit more, but download it, try it, EMPOWER YOURSELF!

 

Sean
The Energized Tech

PowershellBIG

So each Month at ITPro Toronto we have the Powershell “Script Club” session.   I thought what I’d do for you the membership is list those resources here in the Blogs.  You can save the Hyperlink and I’ll try to keep it updated as time permits.   The List may appear short since I’ll try to get you what I personally consider the Master links to Powershell online.

HTTP://BLOGS.MSDN.COM/POWERSHELL

Blog Postings made DIRECTLY by the very team at Microsoft involved in Developing and Producing Powershell.  Think Microsoft doesn’t listen?  Think again.  You’ll find Jeffrey Snover, the key Architect behind Powershell is behind a lot of these postings as are many of his team.  They actively go out and listen to the Powershell Community and users and search the internet for comments, critique and ideas for how Powershell should be and IS used.   They look for NEGATIVE comments too.  Some day I’ll tell you a story of how “Somebody” at Microsoft Searched for Powershell and “HELL” and got the pleasant surprise of his life.

 

HTTP://WWW.POWERSHELLCOMMUNITY.ORG

Here is your one stop repository to Powershell.   You’ll find the bulk of the best of the best and their blogs centralize here.   More Powershell information than you can shake a stick at!

 

HTTP://WWW.POWERSCRIPTING.NET

The PowerScripting Podcast done by Jon Walz and Microsoft MVP Hal Rottenberg.  Two guys absolutely passionate about Powershell that interview the who’s who of the Powershell community (including the guys straight from Microsoft).  The podcasts are sponsored and free to download.   Download the earliest podcasts and listen in on the way to work and soon you too will be a Powershell Guru.  They also Broadcast once a week LIVE on uStream so YOU TOO can ask whatever questions strike your mind.

 

HTTP://WWW.ENERGIZEDTECH.COM

Ok I do not consider myself an ultimate Powershell resource, but if you dig through my postings you’ll find I try to get the basics of Powershell out there so you too can get a feel for the Syntax of Powershell, maybe ideas and launch yourself forward from that point.  You can always reach me at sean@energizedtech.com and I’ll try to help out in whatever way I can.    Yes.  I love Powershell.

 

HTTP://WWW.BING.COM

Yes folks, just “BING” IT.   Do a search online for Powershell and even a few key words, and you’ll probably get the answer in minutes.  Or maybe get yourself pointed in the right direction.   You’ll find searching for #powershell in Twitter as well yields more results than you can imagine.  And most of the people in the Powershell Community will happily answer whatever your Powershell questions are.

 

HTTP://SOCIAL.TECHNET.MICROSOFT.COM/Forums/en-US/winserverpowershell/threads

And most importantly!  Forums within Microsoft!

Yes directly on Microsoft are support forums full of people with Powershell questions, answered by people in the Community and various Powershell MVP’s.  You’ll probably see Marco Shaw in here a lot!  One of the very people that pointed me down the Powershell path two years ago.  What a beautiful road it is too.  No matter the question, ask it!  It’s free and often responded in Rapid pace!

 

If you’re looking for more information here at ITPro Toronto for Powershell just email sean@energizedtech.com and I’ll see to it!

Cheers

Sean
The Energized Tech


3967155615_37d0ae0430

And so it came to happen.   An event that was born from brilliance came to life.  Techdays.

A conference for Canadians, By Canadians, done ACROSS Canada to bring technology and training to those who needed it most.

It was only last year I remember waking up a 4:00am for the First Techdays held in Toronto.   Excited!  Ready to launch into the great pools of knowledge.  I and so MANY others.  And this year it continued.   And after an amazing 48 hours, concluded.

3974893679_de80217611So Toronto wrapped up with an absolutely amazing turnout!  Over 1200+ people, from all walks of life, depths of technology and influences, CONVERGED into the Metro Toronto Convention Center.

 

“1200 minds walked in that day and after 48 HOURS engorged themselves in various aspects of technology… “

 

3967987850_4b9a3b104c3967213757_5c187cf7113967951060_80ba9b326a

3968348913_9764ff8603_bWhether they checked into the various booths downstairs, got some hands on with Multi Touch technology in Windows 7, barraged the various Experts and Speakers floating about the convention which challenging questions, or just plain and simply linked up with others.

It can be said, without question, that Techdays Toronto was an absolute raging success. 3974869489_b79777fa47

Microsoft brought together this in particular Techdays in Toronto some of the most passionate and creative people to make it such a huge smash event.   Techdays was a success note because it showed exactly what happens when Microsoft brings the Community in to help.   The passion of the presenters showed, the Experts were ready to dive out and engage the crowd, never was such an intermixing of minds seen.

3967152283_76494ccb4d

 

 3974892159_c6e88167ac

3968015479_d0d6b1955b

 

 

 

 

 

Not only did it cover deep dive information for Development and Infrastructure, but it was a chance to get hands on with some of the newest types of technology and those involved in it's creation.  

 

 

3974890801_76ed04c807                 3975626580_96daa928eb3967157179_2a0594e61a

It helped each and every one of us, who've been there in the field, especially those lone warriors fighting the good fight, sometimes un-thanked.   It brought a sense of "Hey I'm not alone in this!"

At least that's how I felt.

And so I ask that all of you raise a glass of your beverage of choice, and tip a toast to each and every one out there who was involved in Techdays in Toronto (and other Techdays going on RIGHT now!)

3975627544_b28a39bb56A Toast to Each of you and to Each other, to the Amazing team at Microsoft Canada and Microsoft Corp which had volunteers fly in from afar.

*YOU* made Techdays happen, *YOU* helped shape it, and *YOU* are why Techdays will be a success.

Cheers to all of you, and see *YOU* next year, at Techdays!  And a SPECIAL Cheers to The Absolutely Amazing Photographer Kris Krüg without whom NONE of these photos would have existed.   He brought the Life of Techdays, full of Digital Wonder into permanent Digital and Photographic history.  You can more of his work on Flickr. Double Cheers!  

W00t!

Sean
The Energized Tech

I noticed in the Powershell forums somebody looking for a Script to show what date some Sql updates went in.
 
I don't think this new one met the need but I started wondering If I could dump a little more than the installed programs.
 
Turns out the Registry keeps a lot of information on installed programs and updates, including the date and time it was installed.
 
So I expanded my original "LISTAPPS.PS1" script for dumping installed applications.    It wasn't hard to add in additional lines to push out the "Version" and "Date"
 
But I stumbled across a few problems in those registry keys.
 
Some entries are created with NO useful information and thus no Date.  So when I started trying some Cool methods, they, errrr.... well... They freaked at NULL information.
 
So I had to get a LITTLE fancy into three spots, well fancy for a basic Scripter like myself.
 
I had to slip in an "IF ELSE" on the name, if it was a Null, well I didn't really care about it.
 
But I also stumbled that some installed apps don't stamp the DATE/TIME like they should.    So yet another "IF ELSE" to catch bad date info and output "UNKNOWN".  The nice thing in Powershell is I can switch a variable from any type on the fly. 
 
Second little problem (well not a problem, but something *I* wanted done, was I needed the DATE to show up as well, a DATE, readable instead of a cryptic "20090925".  We can all figure what that means but that defeats the purpose of making something like the registry readable to a user.
 
So I learned how to work the [DATETIME]::Parse method thanks to an excellent article on Powershell.com and played about for the first time since my days in "Waterloo Structured Basic" with Substrings.   
 
Now I'm certain there's a really COOL and fancy way to do this, but the point of anything I do in Powershell is a) Be useful and b) Let a new person look at it and UNDERSTAND simply enough that THEY could take it over and get into it.
 
So the new script will do the same as the original but pump out "Install Dates" (if they're available) as well as the applications and updates.
 
--------------------- LISTAPPS.PS1 -------------- Just because we can do it ------------------------
 
#$list=get-childitem HKLM:Software\Microsoft\Windows\CurrentVersion\Uninstall\
$list=get-childitem REGISTRY::HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\
Foreach ($App in $list)
{
    $Displayname=(get-itemproperty registry::$App).DisplayName;
    $DisplayVersion=(get-itemproperty registry::$App).DisplayVersion;
    $InstallDate=(get-itemproperty registry::$App).InstallDate;
    If ($Displayname -ne $NULL)
    {
        If ($InstallDate -ne $NULL)
        {
            $year=$InstallDate.substring(0,4)
            $month=$InstallDate.substring(4,2)
            $day=$InstallDate.substring(6,2)
            $DATEINSTALLED=[DateTime]::Parse($month+'.'+$day+'.'+$year)
        }
       
        Else
        {
       
        $DATEINSTALLED='Unknown'
       
        }
    Write-Host "Application", $Displayname, "Version", $DisplayVersion, "Date Installed", $DATEINSTALLED
    }
    
}
------------------------------- LISTAPPS.PS1 ------ Game over man --------------------------
 
Enjoy and modify it as you need, or use it just to learn how you can work and manipulate information in Powershell.
 
No script has to be amazing, it just has to be useful to you :)
 
Cheers
 
Sean
The Energized Tech
 

There are probably many ways to do this but I spotted this question in the Powershell forums and thought I’d share.

“Is there a way to restrict the output from “SELECT-STRING” to not show the Filename or the line number?

For those of you like me, still learning; SELECT-STRING allows you to scan a FILE or a SERIES of files for matching Content. 

In it’s most basic form it works like this

SELECT-STRING –path FILEPATH\FILENAME –pattern ‘STUFFIAMLOOKINGFOR’

In the UNIX world I believe it was “GREPPING” :)

Anyhow normally if you do a SELECT-STRING on a file called say “DOG.TXT” for any reference to “CAT” you would get output like this

SELECT-STRING –path DOG.TXT –pattern ‘CAT’

dog.txt:1:This is a mean ugly cat
dog.txt:5:Cat is going around dog in Circles
dog.txt:93:Dog is laughing at soaking wet Cat

Yes a silly example but if you just wanted the lines (Say this was a security log? Say you just wanted parse out and build a new file with only specific content from the original?  Those line numbers can be irritating! and USELESS.

So to clean it up, just use a FOREACH and pull out only what we need.  A GET-MEMBER against the SELECT-STRING does as so

SELECT-STRING –path DOG.TXT –pattern ‘CAT’ | GET-MEMBER

Shows us the following results

image

The actual Property we’re looking for is just called “LINE”, it has the content without the Numbers.  It you run the SELECT-STRING like THIS

SELECT-STRING –path DOG.TXT –pattern ‘CAT’ | GET-MEMBER | FOREACH { $_.Line }

You get just the lines Output.  Also in Powershell, if you’re curious about output, just use a FOREACH { $_.Property } on the end of a line to read the actual content of Properties to see if it’s what you need.

Keep on Scripting!

Sean
The Energized Tech

Are you ready for Windows 7? 

It is a common question now that Windows 7 is released to manufacturing.  This 2 hour 4 part session will cover all the key aspects, guidance, tools and resources to help prepare you and company for Windows 7. For anyone looking how to Discover, Explore, Pilot, Deploy or Manage Windows 7, this is the seminar for you.

This session will answer questions like "Why and how to move to Windows 7 from Windows XP?", "What are the differences between the versions of Windows 7?" and focus on the three key pillars of Windows 7 - deployment, security, and networking.  From new deployment techniques, application compatibility, to improved security and remote access options this session will get you ready to answer questions about Windows 7.

If YOU’RE wondering about Windows 7, what it offers for you, or just have questions in general, check out this FREE in Microsoft Canada’s head office after work hours!

Click here for more details or if you’re looking for an alternate location.

 

If you’d like to register for this event, click here and bring nothing but your curiosity, this event costs nothing but your time, and we thank for you that.

Cheers.

Sean
The Energized Tech

Techdays day One here in Toronto has completed

I didn't have 100 cans of RedBull as some feared and run Amok. Nor did I start singing into song after song ( although I did show the "Bing" booth the "Bing it" video on Youtube )

My first day I didn't get much of a chance to check out the other tracks. I was too busy "in the crowd"

I was engaging whomever wanted to be engaged. Whether it was helping man the "Experts" booth, roaming about the various areas so questions could be answered, or meeting people just cuz.

What a strange change! The same guy who would hide in the corner, the ultimate "Introvert" was changing.

And then of course the biggest change of all. Presenting to a crowd of approximately 200 in a packed room all about the Windows Recovery Environment.

I found I had a few wrinkles (as I was warned about in previous Influencer sessions) that I would and did encounter. Problems will happen on stage. And when they do, GO WITH THE FLOW! In my case, I gave my lead the wrong Powerpoint deck, my Microphone fell off in the middle of the crowd and one of my demos (even with the correct line of code) wouldn't work.

But we are in the IT World, we are ITPros, we Devs, we people who fight the good fight daily UNDERSTAND that fellow "Mr. Murphy" is a sneaky guy. And we roll with the punches.

And contrary to my original thoughts on presenting (and the same will apply to you if you speak to a room full of people, the following things did NOT happen.

The floor the did not open up and swallow me up

I did not fall off the stage

The crowd did not light up torches and begin burning effigies of me

I had no hecklers

People laughed at appropriate times

I did *NOT* make a fool of myself

Many GOOD questions came from the crowd

and most important

I GOT GOOD APPLAUSE!

And why was all of this possible? Microsoft invited me to sessions called "Influencer Days" and they told me all the mistakes THEY encountered. Shaughnessy-Howell told me useful things to work with.

And yes, in between all the funnies, the singing, the mad blog posts, I LISTENED CLEARLY!

And you will learn, as I will, that when you present, especially to a large crowd, that although you look up to your heroes as models here's what I know and you will too.

I am not the DPE's of Redmond Washington, I am not the MVP's or the MCT's of Microsoft, I am ranot Rodney Buike, Rick Claus or Damir Bersinic. I am not Mitch Garvis or Cameron McKay.

I am not any of my heroes that I aspire to me

Nor will I ever be (nor will you)

I am (and you are) something unique. As we aspire to our heroes, we grow and change.

I am Sean Kearney, Energized Tech and Energized about Technology and my speaking will reflect myself, my personality and my passion in it's OWN truly unique way.

And so will yours. Don't be afraid to present or speak. Because remember this.

No matter how polished others are, THEY ALL STARTED AND FAILED AT SOME POINT!

And more importantly, practice practice practice. The more you know your timing the better you are. The more familiar you are with the flow of your content, the better you will be. And eventually, you may not even look at speakers notes! (*Whoa*)

And yes, practicing speaking to your AVATAR on Xbox360 DOES qualify as a test audience!

Just go to a #failcamp sometime and see how others failed, and learn with them. And learn like I did.

DON'T feed "Green Eggs and Ham" to your computer.

Cheers all and we'll see you here at Day Two of Techdays_CA here in Toronto

Sean
The Energized Tech

A rather simple title but, well that sums it up!

It was strange for me.  I came here for the technology and it was the Community within Technology I found.

3968015479_d0d6b1955bTech Days 2009, Metro Convention Center, Toronto3968348913_9764ff8603_b

Of course I learned some more on Med-V thanks to an excellent presentation by our resident MVP in Virtualization, Cameron.  But for some reason I found myself in the Expert booths, and ended up meeting others like myself, helping out in whatever way I could.   Touching base with new friends and old at the same time

Tech Days 2009, Metro Convention Center, TorontoTech Days 2009, Metro Convention Center, TorontoTech Days 2009, Metro Convention Center, Toronto

And for some inexplicable reason, something I’m still having a hard time grasping, perhaps the entertainer in me? Perhaps something new that grew yesterday?  I found a new passion.

Presenting.

Yes to present more.  Not necessarily for just the sheer showmanship of it (yes there is that aspect) but AGAIN thanks to Microsoft, I see a new focus.   I have grown yet a further level in ways I never foresaw two years and four months ago when I wrote that fateful article “Confessions of a Computer Geek” and sent it to my heroes.

And when Rick Claus came up behind me asking “So did you imagine this would ever happen man?” I was speechless.  Because I didn’t.  None of us can foresee the future.  We can all work to shape and change our future and hopefully improve it, and perhaps others around us.  But never did I imagine that a) I would be involved in an event as large and as successful as Microsoft Canada Techdays 2009 or b) that I would actually WANT to stand up in a room of 200 people a speak!

*GASP!* I’m a reformed introvert and Funny Guy!  Who would have thought that!

And the results? 

Yes Mr. Claus, Yes Microsoft Canada, Yes World.   I embrace and look forward to the future for whatever it holds. 

Thanks to Energize IT, Influencers, Techdays, the MVPS and the encouragement of the community, I am no longer the same person.

And in two years, 4 months from now, ask me the same question again. :)

Sean
The Energized Tech

So last time we looked into making a Bootable Recovery environment from within Windows 7.   This time we’re going to see how to make one from our customized environment we created in Part 5.

So if you remember last time, with the Windows AIK installed we had created a folder structure using

COPYPE X86 C:\WINRE

In this structure there is a folder called “ISO”, this is the base structure for your ISO file.   You’ll see a SOURCES, EFI and BOOT folder.   This is just like your standard Windows 7 install media but stripped right down.

And yes, if you just copy a program or a folder to the root of this structure, it will be there when we create the ISO file

To make this a useful bootable structure with Window Recovery Environment we just have to throw the image into the SOURCES folder in the ISO structure and call it BOOT.WIM instead of WINRE.WIM

So from Part 4, we had extracted WINRE.WIM and placed it under C:\WINRE; That file is what we copy to our C:\WINRE\ISO\SOURCES folder

COPY C:\WINRE\WINRE.WIM C:\WINRE\ISO\SOURCES\BOOT.WIM

Now if you’re wondering?  If you just wanted to make a strictly Windows PE bootable disc?  Same procedure but copy the WINPE.WIM file from the same folder (COPYPE places it there by default) and put it into the ISO\SOURCES folder as BOOT.WIM.

Once you have this structure under the ISO folder, with Windows AIK you can build a bootable ISO file for 32bit Windows 7 using

OSCDIMG –n –bC:\WINRE\ETFSBOOT.COM C:\WINRE\ISO C:\WINRE\WINRE.ISO

This will take that structure, inject the boot code from ETFSBOOT.COM and create an ISO file you can burn to disc with any of your preferred burning software.  Personally I’ve been using IMGBURN which is free to download and contains no “catch-22” in it’s operations (but you can make donations to the author via PayPal, and I encourage you to do so) and works well in just about every burning of Windows I’ve used it in (including Windows 7 *AND* Server 2008R2).   It can burn ISO files for both CD and DVD as well as file structures.

Next time we’ll take a few minutes and show you how to make THAT into a Bootable USB Flash Drive

Sean
The Energized Tech
”WinRE and Powershell are in the same room, how do I explain this?”

So last time we found out how to at least pull out and make the Winre.WIM file which is your recovery environment.  It can be customized with drivers and additional applications but we’ll get into that later.

Right now, how do you USE that customized environment?

Well you have a few options to work with

It can burn turned into an ISO image on CD rom

You can make a UFD (USB Flash Drive) that is bootable and drop it on there

If you have Windows Deployment Services running in your environment you can drop that into the repository

Or you can drop it into a new partition (or shrunken, spare partition) to have it on a spot SEPARATE completely from the operating system (This could even lend to building a full image recovery partition, without the need for expensive 3rd party vendor solutions)

So just where do we start?

Well let’s start with a bootable CDROM.   You have two ways of doing that.  Once prepares a CDROM from the presently active and running WinRE environment and the other builds an ISO file you can burn to CD from your freshly customized environment.

To make a Bootable CD from within Windows 7 just go to the BACKUP AND RESTORE, Which is under Control Panel / System Security / Backup and Restore.

Or you just type “BACKUP” in the Search bar off your Start Menu to have it automatically populate it for you :)

image

 

So Select Backup and Restore and you’ll see the following screen.  In particular we’re interested in THIS option in the upper left hand side “Create a system repair disc”.

Now of course this does require you have a CD burner and a blank CD, and Administrative credentials (Note the little shield at the left)

 

image image

 

But nothing could be simpler to do, just click “Create a system repair disc” and you’ll see this

 

image

 

Choose “Create Disc”, soon it will be preparing files and burning your Windows Recovery Environment onto CD.

 

image

 

And that’s it! You’re done!  You now have an Extra copy of the Windows Recovery Environment handy to store in your drawer.  this is Especially handy if the seller of your computer did NOT provide you with restore media (Yes some of them are Still shaving a nickel doing that deplorable practice!)

 

Next time we’ll show you how to make that newly customized environment into an ISO file you can burn to CD

 

Sean
The Energized Tech
”WinRE saw all those pictures of Powershell and was acting of a lot of embarrassing questions”

So this is wonderful.  We have this cool “end all fix all” environment.   So how do we GET it?  

My first instructions download the Windows AIK for Windows 7 (if you’re Working with Server 2008R2 and Windows 7) or the Windows AIK for Vista (If dealing with Vista or Server 2008)

Now the newer one still works for making and editing the Vista AIK but it does not have SETFAILOVER.CMD (which is needed in Vista but not in Windows 7) to allow the Recovery Environment to “kick over”.

You’ll find the WinRE is sitting inside the BOOT.WIM file on your install Media.   And yes, they are different.  They FUNCTION the same but the Vista one is for Vista, Server is for Server, 7 is for 7, 64bit for 64bit O/S.  

And that’s not to say you can’t play with it, and try using one for some work on another, they’re all based on Windows PE.  The difference will be in the Automatic repairs or System restore features.    So for best results, DON’T mix and match.

So Start up the Windows AIK by going to “Deployment Tools Command Prompt” and make sure you “Run as Administrator” and the build the folder structure for Windows PE.   Run the COPYPE command

COPYPE X86 C:\WINRE

So look in your install media, find a file called BOOT.WIM under the SOURCES folder on the root of the DVD.

Copy the Boot.WIM file locally to C:\WINRE

COPY D:\SOURCES\BOOT.WIM C:\WINRE\

Then extract the Windows Recovery Environment from Index 2 from BOOT.WIM using the IMAGEX command from Windows AIK

IMAGEX /EXPORT C:\WINRE\BOOT.WIM 2 C:\WINRE\WINRE.WIM “Windows Recovery Environment”

Now we have the Windows Recovery Environment, but we need to reprogram the extracted version to trip over into the Recovery Environment on startup.  This requires Two steps

ONE

Mount the Windows Recovery Environment

If you’re using The Windows 7 AIK the Command is

DISM /MOUNT-WIM /WIMFILE:C:\WINRE\WINRE.WIM /INDEX:2 /MOUNTDIR:C:\WINRE\MOUNT

If you’re using the Windows Vista AIK the Command is

IMAGEX /MOUNTRW C:\WINRE\WINRE.WIM 1 C:\WINRE\MOUNT

In both cases it will EXTRACT and bring the drive structure of the WINRE.WIM file into the C:\WINRE\MOUNT folder

TWO

Once it is within that folder you need to copy a file called WINPESHL.INI into the SYSTEM32 of the WINRE environment

The contents of WINPESHL.INI are

[LaunchApp]
AppPath=x:\sources\recovery\recenv.exe

It is a very simple text file that when the WINPE environment boots up, it launches that as it’s Operating Shell.

So copy it into SYSTEM32 of the WINRE Environment by running

COPY WINPESHL.INI C:\WINRE\MOUNT\WINDOWS\SYSTEM32

Then once that is done, close up the Environment.   Different if you are using again the Windows AIK for 7 or Vista.

Windows AIK for 7 run a

DISM /UNMOUNT-WIM /MOUNTDIR:C:\WINRE\MOUNT /COMMIT

Windows AIK for Vista run a

IMAGEX /UNMOUNT /COMMIT C:\WINRE\MOUNT

And that’s the basics.  Next time we’ll go into how to actually make this USEFUL and Bootable in Both Vista AND Windows 7

Sean
The Energized Tech
”WinRE is staring at Powershell like the eyes of a Jealous lover…”


A problem is roaming the offices and nations.  Worse than any addiction you've ever heard of.

It Professionals, Infrastructure Architects, heck even field technicians crossing that dark line.

Crossing the oh so finely drawn line between ITPro and Developer.  A line that should never be crossed.  Some things were never meant to be.

We see them, sometimes alone, sometimes in pairs.  Huddled together tapping away.

"Scripters"

And it always starts out simply.  The most distasteful of all tastes for every ITPro.  A "Logon Script".  YUCK!  That's why it happens at Logon.  Because we don't even want to SEE it more than once!

But for some people, well that's once too often.

They start out with some mapped drives, a time sync here and there, perhaps dropping a standard Home drive into the list.

Then they get into other commands, deploying software from that login script.  And then the claws of the beast sink into your flesh.  You're hooked.

But you don't realize it.  "It's only Cmd.exe ! It's just a batch file!" You say to yourself.  That horrid lie you make up.  That foul web you weave.

That's all fine until one day somebody comes up to you and asks if you could start emailing those Logs from NTBACKUP.EXE.  Then a little vbscript get's in the mix.  Just a little.

Just enough to work it's way into your system, dragging you further down into the darkness.

It still FEELS like you're not scripting because there are still popup Windows.  But no, you're only kidding yourself.  You're "scripting".  You sicko.

Soon, before you know it you'll have a whole library of scripts, running about like little trolls doing your work for you.  You'll actually stop for a bit.

And you might end up ok.  Unless you're one of "THEM".  Those that start into the "Blue Daemon", "The Box of Entrapment", "Snover's Snare" some call it.

And there is no way to stop once they start into....*eek*... Powershell.

Creatures wrapped so deeply in the darkness it's too late for their souls!  Working DIRECTLY with ...*ack*... DOT NET and learning and speaking METHODS and PROPERTIES!  ITPROS AREN'T MEANT TO USE METHODS!

They're the worst of the lot.  "Shelling" they call it.  Their eyes glazed over with a deep BLUE haze, muttering incantations. "Get-Item | export-csv chants.csv"

What a horrid lot!

"Shelling" is about as dark as they get.  No longer ITPros, but not Devs either, just some horrid mix in between.  As the script twists and misshapes them.

No longer able to speak clear English.  Their sentence structure broken into simple Verb-Noun structure when communicating.  You can always spot a person who has been "Shelling"

"Hey Bob? You want a coffee?"

"GET-DOUBLEDOUBLE"

--- Shelling, definitely shelling

"Hey Susie, we're going to the movies.  Want to come along?"

"GET-MOVIE | WHERE { $_.Review -like "*excellent*" } | write-console 'Yes.' "

--- That's a sign of a person who has been hard core shelling.

Can they be stopped?  Is there any hope for them?

Unfortunately, no.  Once you "Shell", that's all you ever do, that's all you ever want to do.

So stay safe.  Hold onto that crimping tool and Fluke meter for dear life.  Clutch them like a Teddy Bear.

And when YOU'RE asked to compose a Logon Script, JUST USE GPO!

...My name is Sean, and I'm Shelling

So back to Windows Recovery Environment.  Where is it mysteriously hiding?

Nothing mysterious about it.  On the root of your hard drive in Windows 7 and Server 2008R2 is a folder called “Recovery”.  If you’re curious you’ll have to Run with Administrative credentials to get in there. I don’t recommend playing with the NTFS permissions.

But if you look inside (and view HIDDEN FILES and HIDDEN FOLDERS) you’ll see two little innocent files.  Boot.SDI and Winre.WIM

That it’s it.  Again it doesn’t sit on that 100 meg partition, that’s where the operating system boots from (which follow proper best practices in separating the Boot from the Operating system)

image

Accessing it is incredibly EASY!  You can manually run it by hitting “F8” on startup and hopefully not being beaten by your super fast computer.   Or you can boot from the Windows 7 DVD and go to “Repair My Computer”.

Or in Windows 7 you can execute a “REAGENTC.EXE /BOOTTORE” in a Command prompt with Administrative Credentials.  That will force WinRE to start up on next boot.

Or you can do something foolish, like BREAK something!  That trip off WinRE and have it try to fix things.  Usually quite effectively!

But next time we’ll take a quick look at how you can have your own personal Windows Recovery Environment on CDrom or USB key

Sean
The Energized Tech
”I’m a Bigamist, I love Powershell and WinRE”