PowerShell for Windows Admins


July 22, 2014  3:09 PM

msmvps.com is back

Richard Siddaway Richard Siddaway Profile: Richard Siddaway
Security

My blog on msmvps.com is back at http://blogs.msmvps.com/richardsiddaway/

July 22, 2014  6:08 AM

July 22 2014–deal of the day

Richard Siddaway Richard Siddaway Profile: Richard Siddaway
Books, PowerShell

Half off my book PowerShell and WMI. Use code dotd072214au at www.manning.com/siddaway2/

Also

Half off PowerShell in Depth, Second Edition. Use code dotd072214au at www.manning.com/jones6/

 


July 21, 2014  1:45 PM

Bad practice – - creating objects

Richard Siddaway Richard Siddaway Profile: Richard Siddaway
PowerShell

Another in my occassional series on bad practices I’ve seen and recommend you avoid.  This time I want to look at creating objects. I recently saw some code that looked a bit like this:

$os = Get-CimInstance -ClassName Win32_OperatingSystem
$comp = Get-CimInstance -ClassName Win32_ComputerSystem
$bios =  Get-CimInstance -ClassName Win32_Bios

$obj = New-Object -TypeName PSObject
$obj | Add-Member -MemberType NoteProperty -Name OperatingSystem -Value $os.Caption
$obj | Add-Member -MemberType NoteProperty -Name Manufacturer -Value $comp.Manufacturer
$obj | Add-Member -MemberType NoteProperty -Name Model -Value $comp.Model
$obj | Add-Member -MemberType NoteProperty -Name Bootup -Value $os.LastBootUpTime
$obj | Add-Member -MemberType NoteProperty -Name BiosType -Value $bios.BIOSVersion
$obj

This involves a lot more typing and effort than is required.

A much, much  simpler way is available:

$os = Get-CimInstance -ClassName Win32_OperatingSystem
$comp = Get-CimInstance -ClassName Win32_ComputerSystem
$bios =  Get-CimInstance -ClassName Win32_Bios

$obj = New-Object -TypeName PSObject -Property @{
OperatingSystem = $os.Caption
Manufacturer = $comp.Manufacturer
Model = $comp.Model
Bootup = $os.LastBootUpTime
BiosType = $bios.BIOSVersion
}
$obj

The Property parameter takes a hash table of property names and values and populates the object. Much less typing and more obvious, to my mind.

Some people complain that use the Property parameter means that you lose the order of the properties.

Who cares – its an object. Access the properties as you need them.

If for some reason you need to be able to dictate the order of the properties then use an ordered hash table:

$os = Get-CimInstance -ClassName Win32_OperatingSystem
$comp = Get-CimInstance -ClassName Win32_ComputerSystem
$bios =  Get-CimInstance -ClassName Win32_Bios

$props = [ordered]@{
OperatingSystem = $os.Caption
Manufacturer = $comp.Manufacturer
Model = $comp.Model
Bootup = $os.LastBootUpTime
BiosType = $bios.BIOSVersion
}

$obj = New-Object -TypeName PSObject -Property $props
$obj

But however you use the hash table use it in preference to Add-Member for these scenarios.

Does Add-Member have a place. Yes. Use when you want to add one or two properties to an existing object.


July 20, 2014  1:45 PM

Docker and DSC for Linux

Richard Siddaway Richard Siddaway Profile: Richard Siddaway
PowerShell

Docker is a way to “virtualise” applications on Linux machines. With DSC for Linux you can manage Docker instances

http://blogs.technet.com/b/privatecloud/archive/2014/07/17/configuring-docker-on-azure-with-powershell-dsc.aspx


July 20, 2014  1:39 PM

DSC Resource Kit Wave 5

Richard Siddaway Richard Siddaway Profile: Richard Siddaway
PowerShell

The next wave of the DSC resource kit has arrived – see http://blogs.msdn.com/b/powershell/archive/2014/07/17/powershell-dsc-resource-kit-wave-5-arrives.aspx

for details


July 20, 2014  11:49 AM

msmvps.com is down

Richard Siddaway Richard Siddaway Profile: Richard Siddaway
Security

My mirror blog on msmvps.com is down – as is the rest of the site.  It is being worked on. In the meantime transfer here


July 15, 2014  2:20 AM

PowerShell Summit Europe 2014 – - update 5

Richard Siddaway Richard Siddaway Profile: Richard Siddaway
PowerShell

Registration is now open. Access through Events menu at powershell.org


July 14, 2014  11:41 AM

Formatting disks – - the new way

Richard Siddaway Richard Siddaway Profile: Richard Siddaway
PowerShell, Windows 2012, Windows 8

Last time I showed how to format disks using the Win32_Volume CIM class. If you need to perform this activity on a Windows Server 2012/Windows 8 or later system you can use a couple of cmdlets from the Storage module

Get-Volume | where DriveLetter -ne ‘C’ | Format-Volume -FileSystem NTFS -Confirm:$false –WhatIf

 

If you’ve not looked at the Storage module before there is a lot of useful cmdlets.


July 13, 2014  9:34 AM

Formatting disks

Richard Siddaway Richard Siddaway Profile: Richard Siddaway
CIM, PowerShell, WMI

Saw a question on the forums about formatting all disks but the C: drive.  Assuming you ever need to do such a destructive activity you might want think about ths sort of approach

Get-CimInstance -ClassName Win32_Volume -Filter “DeviceId != ‘C:’” |
foreach {
Invoke-CimMethod -whatif -InputObject $psitem -MethodName Format -Arguments @{
ClusterSize = 4096
EnableCompression = $false
FileSystem = ‘NTFS’
QuickFormat = $true
}
}

 

Notice I’ve left the –whatif in for safety

More details on the Win32_Volume class at http://msdn.microsoft.com/en-us/library/aa394515%28v=vs.85%29.aspx


July 12, 2014  4:28 AM

Time to stock up your book collection?

Richard Siddaway Richard Siddaway Profile: Richard Siddaway
Active Directory, Books, PowerShell

Manning are offering 40% off everything – print & ebooks – www.manning.com. They have a very extensive set of PowerShell books – now would be the time to add to your collection


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: