Monthly Archive


Monthly Archives: May 2010

Windows Netbooks: The Path to Low Cost Computing


Author: James Floyd Kelly

Publisher: Apress

ISBN: 978-1-4302-2399-3

My usual three criteria for judging a book are:

  • Is it technically accurate?
  • Does deliver the material it claims to deliver?
  • Is worth the cost of purchase and the time I spend reading it?

I came to this book more intrigued than anything.  I’d not really considered using a netbook – they are too small to do what I want. Right?  So I wanted to learn more and find out if my ideas were right.

At 202 pages this isn’t a massive book and the ratio of screen shots to text is pretty high so it is a fairly quick read.

The book contains 12 chapters and three appendices:

  • 1 The Netbook
  • 2 Netbook Hardware Option
  • 3 Netbook Maintenance
  • 4 Netbook Software Options
  • 5 Netbook and Google Docs
  • 6 Netbook and Malware Protection
  • 7 Netbook Web Browsers
  • 8 Netbook Email
  • 9 Netbook Calendar
  • 10 Netbooks and
  • 11 Windows 7 and Netbooks
  • 12 Finding Great Netbook Apps
  • A Netbook manufacturers
  • B Upgrading a Netbook to Windows 7
  • C additional Netbook Apps to consider

Chapter 1 opens the discussion with a review of exactly what a netbook is and why they are so useful. A jog through the main hardware components and a look at how they can influence your purchasing decisions completes the chapter. Chapter 2 follows straight on with a look at the extras you may want – USB hub, pen drive, external CD\DVD, mouse, keyboard etc. Chapter 3 gives a few hints on the watering (not literally) and feeding of netbooks.

By chapter 4 we’re looking at software.  A computer’s great but you can’t do anything without software. Open Source and Cloud computing get the most space here – especially openoffice.

Chapters 5, 8 and 9 are straight advertising copy for Google Docs, Google Mail and Google Calendar respectively.  Ok so as the author you love these but there are alternatives and in some cases much better alternatives.

Chapter 6 covers Malware with so good information on free AV products. The section on SpyBot is overdone.  If your netbook runs Windows 7 it has Windows Defender – works for me.

The brower is next with chapter 7 mainly given over to a discussion of Firefox. Chapter 10 returns to OpenOffice but agian doesn’t mention alternatives.

In chapter 11 we look at windows 7 on netbooks – good recommendation to get one with it installed. A check at a PC retailer today showed most have it installed. The book was published in October 2009 and is already showing its age.

Chapter 12’s discussion on applications spends too long explaining how to search the Internet. The bit at the end on online software repositories was worth waiting for. I also tried Attack of the Buggles (page 182) the book was almost worth it for that alone!

The appendices do what they say with Appendix C being an extension of chapter 12.

So in summary what do I think of the book:

  • technically it is accurate but on the light side.  Don’t look here for an in-depth discussion of the technologies. I’d give it 7/10
  • does it deliver on the material – yes. After reading this you would have a good idea of waht a netbook can do and if its for you - - 8/10
  • is it worth buying and reading. Not sure if I’d be totally happy if I’d bought it but it was worth the read. – 8/10

Overall, it made me think about netbooks and their place in the scheme of things – I might actually be getting one soon as I can see so uses for one – especially now I can get Windows 7 on one. - - 8/10

I think the book will suffer because of the rapid changes in this area of technology. Another edition in 12 months wouldn’t go amiss – if it was an ebook it would be quicker to update.

PowerShell in Practice ebook deal

I know there isn’t much of today left but if you are quick its possible to get an ebook version of PowerShell in Practice for $15.  See the deal of the day at

Query me no more

One of the things I noticed in the recent Scripting Games was that a lot of the scripts would do things like this

$query = "Select MaxClockSpeed from Win32_Processor"
$proc = Get-WmiObject -Query $query
Write-Host "Speed: " $proc.MaxClockSpeed

Create a query to access the Win32_Processor class to get the MaxClockSpeed.  Run the query and then use Write-Host to format and output the results.  We’ll come back to use Write-Host like this another time.

This construction is based on the way things used to be done with VBScript.  With PowerShell we have much easier ways to get to the same result.

Get-WmiObject -Class Win32_Processor | Format-List MaxClockSpeed

will produce the same answer. if you really need the formatting

Get-WmiObject -Class Win32_Processor | Format-List @{Name='Speed'; Expression={$_.MaxClockSpeed}}

or even

Write-Host "Speed: " (Get-WmiObject -Class Win32_Processor).MaxClockSpeed

Get-WmiObject does a great job of returning the information from a WMI class. Use its power and simplicity to make your scripts quicker to write and easier to understand

Quick ping

If you’ve used ping before you’ll know that it normally returns four replies from the target.  In PowerShell we have Test-Connection which does the same job. It also normally returns four replies.

When I’m working with remote machines I often want to check they are available before sending a command – especially a WMI command that can take a long time to time out.


"rslaptop01", "" | 
foreach {
    if (Test-Connection $_ -Count 1) {
        Get-WmiObject -ComputerName $_ -Class Win32_LogicalDisk -Filter "DriveType='3'" |
        select SystemName, DeviceID, Size, FreeSpace


To speed up the process use the –Count parameter on test-connection and only get 1 reply.  Quick test to see if he system is there and then run the rest of the code

UG May 2010 Recording, Slides and demo

Thank you to everyone who joined the Live Meeting this evening. Hope you enjoyed the session on PowerShell events.

The slides and demo files are available from


The recording can be viewed on line

View Recording
Recording Details
    Subject: PowerShell Events
    Recording URL:
    Recording ID: 39Q7T9
    Attendee Key: Q&x!_63dP

PowerShell UG reminder


Next Live Meeting is Tuesday 18 May at 7.30pm BST

Subject is PowerShell Jobs and Events

Details of the Live Meeting from:

hey ho hey ho its off to print we go

PowerShell in Practice will be going to the printers next week.

Between now and 21 May 2010 you can get 40% off of PowerShell in Practice (and other Manning books that are in the final stages of production)

Use promotional code m1440 at checkout from

PSCX 2.0 install

I mentioned last time that PSCX 2.0 was available. There is a very wide range of functionality available in the form of functions and cmdlets:


Add-PathVariable                        Clear-MSMQueue                          ConvertFrom-Base64
ConvertTo-Base64                        ConvertTo-MacOs9LineEnding              ConvertTo-Metric
ConvertTo-UnixLineEnding                ConvertTo-WindowsLineEnding             Convert-Xml
Disconnect-TerminalSession              Expand-Archive                          Export-Bitmap
Format-Byte                             Format-Hex                              Format-Xml
Get-ADObject                            Get-AdoConnection                       Get-AdoDataProvider
Get-AlternateDataStream                 Get-Clipboard                           Get-DhcpServer
Get-DomainController                    Get-DriveInfo                           Get-EnvironmentBlock
Get-FileTail                            Get-FileVersionInfo                     Get-ForegroundWindow
Get-Hash                                Get-HttpResource                        Get-LoremIpsum
Get-MountPoint                          Get-MSMQueue                            Get-OpticalDriveInfo
Get-PathVariable                        Get-PEHeader                            Get-Privilege
Get-PSSnapinHelp                        Get-ReparsePoint                        Get-ShortPath
Get-TabExpansion                        Get-TerminalSession                     Get-TypeName
Get-Uptime                              Import-Bitmap                           Invoke-AdoCommand
Invoke-Apartment                        Join-String                             New-Hardlink
New-Junction                            New-MSMQueue                            New-Shortcut
New-Symlink                             Out-Clipboard                           Ping-Host
Pop-EnvironmentBlock                    Push-EnvironmentBlock                   Read-Archive
Receive-MSMQueue                        Remove-AlternateDataStream              Remove-MountPoint
Remove-ReparsePoint                     Resolve-Host                            Send-MSMQueue
Send-SmtpMail                           Set-BitmapSize                          Set-Clipboard
Set-FileTime                            Set-ForegroundWindow                    Set-PathVariable
Set-Privilege                           Set-VolumeLabel                         Skip-Object
Split-String                            Start-TabExpansion                      Stop-TerminalSession
Test-AlternateDataStream                Test-Assembly                           Test-MSMQueue
Test-Script                             Test-UserGroupMembership                Test-Xml
Unblock-File                            Write-BZip2                             Write-Clipboard
Write-GZip                              Write-Tar                               Write-Zip



Add-DirectoryLength                     Add-ShortPath                           Dismount-VHD
Edit-File                               Edit-HostProfile                        Edit-Profile
Enable-OpenPowerShellHere               Get-Help                                Get-PropertyValue
Get-ScreenCss                           Get-ScreenHtml                          Get-ViewDefinition
help                                    Invoke-BatchFile                        Invoke-Elevated
Invoke-GC                               Invoke-Method                           Invoke-NullCoalescing
Invoke-Reflector                        Invoke-Ternary                          less
Mount-VHD                               New-HashObject                          Out-Speech
QuoteList                               QuoteString                             Resolve-ErrorRecord
Resolve-HResult                         Resolve-WindowsError                    Set-LocationEx
Set-ReadOnly                            Set-Writable                            Show-Tree


Download the zip file, unblock it, unzip and copy the pscx folder and all sub folders to a folder on your modules path. Couldn’t be easier. To get the functionality

Import-Module pscx

PowerShell Community Extensions 2.0

I’ve mentioned the Community Extensions many times in these posts. Version 2.0 is now available

It installs as a PowerShell module – much easier and neater.

I’ve blogged about the beta a few times – if you didn’t try the beta go and get the RTM

Hex Subtraction

Again this takes the pattern from the binary function and adapts it to work with hex

## this will always subtract value2 from value1
function Get-HexDifference {
## check valid hex numbers
    Test-Hex $inputvalue1
    Test-Hex $inputvalue2

    $diff = (ConvertTo-Decimal -inputvalue $inputvalue1 -hex) `
     - (ConvertTo-Decimal -inputvalue $inputvalue2 -hex)

    if ($diff -lt 0){Throw "Hex subtraction produces negative number"}
    else {ConvertTo-Hex -inputvalue $diff}


As with the binary subtraction function we test to see if we’ve gone negative – if so reject the value.


That’s the end of the math module for now.  As soon as I’ve done the help files I’ll post it on codeplex.