PowerShell for Windows Admins


December 7, 2011  3:09 PM

Backing up the WMI repository

Richard Siddaway Richard Siddaway Profile: Richard Siddaway

The WMI repository is a collection of files. It can be easily backed up

function backup-wmirepository {            
 param(            
  [string]$path,            
  [switch]$force            
 )            
             
 if ($force){            
  if (Test-Path $path){Remove-Item -Path $path -Force}            
 }            
 else {            
   if (Test-Path $path){Throw "$path already exists"}            
 }            
 $exp = "winmgmt /backup $path"            
             
 Invoke-Expression -Command $exp             
            
}

The function will back up the repository to the given file unless the file exists. if you want the backup file overwritten use the force switch

December 5, 2011  1:41 PM

Testing the WMI repository

Richard Siddaway Richard Siddaway Profile: Richard Siddaway

Occasionally the WMI database becomes corrupt. Strangely I have seen this happening more often recently because of the creation of virtual machines from templates – if the template is corrupt so will be the virtual machines.

With Windows Vista and above we can use the winmgmt utility to test the repository. I’ve gotten used to the verb-noun syntax of PowerShell so decided to create a wrapper rather than try and remember the syntax

function test-wmirepository {            
 param(            
  [string]$path            
 )            
             
 if ($path) {            
   if (-not(Test-Path $path)){            
    Throw "$path not found"            
   }            
   else {            
    $path            
    $exp = "winmgmt /verifyrepository $path"            
   }            
 }            
 else {            
  $exp = "winmgmt /verifyrepository"            
 }            
 Invoke-Expression -Command $exp            
            
}

 

The utility can test the repository (default) or if the path to a backup file is given then that can be tested instead.

PS> test-wmirepository

WMI repository is consistent

if you don’t get the message about the repository being consistent then you have a problem. We’ll see how to fix that later.

How do you take a backup of the repository? – We’ll get to that later as well


December 5, 2011  12:00 PM

WMI rising

Richard Siddaway Richard Siddaway Profile: Richard Siddaway

Its not the name of a new film but something that is happening.  WMI has always been a very powerful technology but has suffered because it has a reputation of being difficult to use and hard to understand.

Some of that is true but there is a lot more information becoming available. I’ve noticed a lot of sites putting out WMI based PowerShell – Scripting Guy blog and powershell.com being the two that most readily come to mind.

There are some big changes to WMI coming in PowerShell v3 and Windows 8 – now is the right time to start preparing


December 4, 2011  2:17 PM

UK PowerShell Group–December 2011

Richard Siddaway Richard Siddaway Profile: Richard Siddaway


When: Thursday, Dec 15, 2011 7:30 PM (GMT)


Where: Virtual

*~*~*~*~*~*~*~*~*~*

Discover how to use the WSMAN cmdlets to retreive WMI information and see a demo of the new WMI API’s CIM cmdlets in PowerShell v3 CTP 2

Notes


Richard Siddaway has invited you to attend an online meeting using Live Meeting.
Join the meeting.
Audio Information
Computer Audio
To use computer audio, you need speakers and microphone, or a headset.
First Time Users:
To save time before the meeting, check your system to make sure it is ready to use Microsoft Office Live Meeting.
Troubleshooting
Unable to join the meeting? Follow these steps:

  1. Copy this address and paste it into your web browser:
    https://www.livemeeting.com/cc/usergroups/join
  2. Copy and paste the required information:
    Meeting ID: PJSH3M
    Entry Code: gG/C-75(m
    Location: https://www.livemeeting.com/cc/usergroups

If you still cannot enter the meeting, contact support

Notice
Microsoft Office Live Meeting can be used to record meetings. By participating in this meeting, you agree that your communications may be monitored or recorded at any time during the meeting.


December 4, 2011  2:06 PM

UK PowerShell Group–November Recording

Richard Siddaway Richard Siddaway Profile: Richard Siddaway

The November meeting

http://msmvps.com/blogs/richardsiddaway/archive/2011/11/05/powershell-user-group-22-november.aspx

was “What’s new in PowerCLI 5?” presented by Jonathan Medd

The recording of Jonathan’s presentation is available from

https://skydrive.live.com/?cid=43CFA46A74CF3E96&id=43CFA46A74CF3E96%212929

Jonathan’s slides are available from

http://www.jonathanmedd.net/2011/11/whats-new-in-powercli-5-0-slides-from-uk-powershell-usergroup.html

 

Enjoy


December 4, 2011  5:19 AM

PowerShell v3 CTP 2 install

Richard Siddaway Richard Siddaway Profile: Richard Siddaway

Very important – remove CTP1 BEFORE installing CTP 2.  There is no over the top upgrade for the CTP


December 4, 2011  4:59 AM

PowerShell 3 CTP 2

Richard Siddaway Richard Siddaway Profile: Richard Siddaway

I’ve been mainly offline the last couple of weeks with health problems – so apologies for not posting as regularly but it was unavoidable.  Back now to discover the awesome news that CTP 2 of PowerShell 3 is available for download from

http://www.microsoft.com/download/en/details.aspx?id=27548

 

it only runs on Win 7 SP1 and Win 2008 R2 SP1.  Both need .NET 4 installed

 

Other useful info from

http://blogs.msdn.com/b/wmi/archive/2011/12/03/windows-management-framework-3-0-community-technology-preview-ctp-2-available-for-download.aspx

 

http://blogs.msdn.com/b/powershell/archive/2011/12/02/windows-management-framework-3-0-community-technology-preview-ctp-2-available-for-download.aspx

 

much more to come on this over the next few weeks


November 21, 2011  1:09 PM

UK PowerShell Group November–reminder

Richard Siddaway Richard Siddaway Profile: Richard Siddaway

UK PowerShell Group meeting – Jonathan Medd on “Whats new in PowerCLI 5”

details from http://msmvps.com/blogs/richardsiddaway/archive/2011/11/05/powershell-user-group-22-november.aspx


November 19, 2011  5:46 AM

Using calculated fields in subsequent processing

Richard Siddaway Richard Siddaway Profile: Richard Siddaway

A calculated field can be created in Select-Object or Format-Table. When you use Format-Table processing effectively stops, the pipeline terminates and you are dumping the results to screen. The objects produced by Format-Table are not meant for further processing.

If you use Select-Object to create the calculated field the results are an object on the pipeline that can be used for further processing. As a simple example consider

Get-ChildItem -Path c:\windows

This produces the file sizes in bytes. Lets say that we want the sizes in KB

Get-ChildItem -Path c:\windows |
where {!$_.PSIsContainer} |
select Name, @{Name="Size(KB)"; Expression={[math]::round($($_.Length/ 1kb), 2)}}|
Format-Table -AutoSize

OK this is good. I’ve used the math rounding method as it leaves me with a number rather than a string

No we want to sort of the Size(KB) field so the biggest file is shown first

You might think that

Get-ChildItem -Path c:\windows |
where {!$_.PSIsContainer} |
select Name, @{Name="Size(KB)"; Expression={[math]::round($($_.Length/ 1kb), 2)}}|
sort Size(KB) -Descending |
Format-Table -AutoSize

would work. But we get an error

The term ‘KB’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
At line:4 char:13
+ sort Size(KB <<<< ) -Descending |
+ CategoryInfo : ObjectNotFound: (KB:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException

When we have a property name that isn’t a single simple word we need to put it in quotes like this

Get-ChildItem -Path c:\windows |
where {!$_.PSIsContainer} |
select Name, @{Name="Size(KB)"; Expression={[math]::round($($_.Length/ 1kb), 2)}}|
sort -Property "Size(KB)" -Descending |
Format-Table -AutoSize

To work with properties that we create in calculated fields where their names aren’t simple – wrap the name in quotes


November 15, 2011  2:43 PM

Infrastructure Architecture–from the Middle Ages to Now

Richard Siddaway Richard Siddaway Profile: Richard Siddaway

i often wonder about how we go about performing Infrastructure Architecture in particular and Architecture in general. We spend a lot of time and effort creating frameworks such as Zachman and TOGAF; we create large bodies of data in the form of Enterprise Architecture bodies; we have patterns and reference architecture and the body of white papers and other advertorial content produced by, or on behalf of, vendors.

When it comes down to to actually putting infrastructure on the ground how much of this do we actually use & think about?

Are we like the research scientist looking for  the best answer to solve the problem that we are investigating or are we more like the master mason’s of the Medieval period that built Europe’s great cathedrals, churches and castles?

My feeling is that in many cases we are more like the later.

We have a set of techniques, tricks and tips that we know work because we have used them before. We learn new techniques by working with different people –changing jobs, contractors coming into the organisation  etc.  Often this information ends up being traded. We often serve a long apprenticeship working up through building servers, configuring OS and applications and troubleshooting. When we are deemed worthy – skilled and knowledgeable enough – we are presented with our own projects.

Pretty much parallels the Guild system of the Middle Ages!

Next time you are planning some infrastructure architecture think back on the heritage of how we apply our knowledge. Hopefully one day we will be in the position that it becomes more science than art – when that happens though some of the fun will have gone


Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to: