PowerShell for Windows Admins


September 15, 2013  4:16 AM

PowerShell help



Posted by: Richard Siddaway
PowerShell v4

There’s an announcement from the team producing PowerShell help that most of the help for PowerShell 4.0/Windows 8.1/Windows 2012 R2 is complete.

You can see the latest versions of the help files at

http://technet.microsoft.com/en-us/library/dn249523.aspx

The version numbers may not be fully up to date but they will be corrected

The link is worth bookmarking for future use

September 15, 2013  3:44 AM

PowerShell whimsy with arrays



Posted by: Richard Siddaway
PowerShell Basics

I was thinking about the Christmas song – 12 days of Christmas and wondering just how many presents were delivered. Don’t ask why!

So I decided to work it out.

$days = 12
$presents = 1..$days

$total = 0
0..($days-1) | foreach {
$total += $presents[$_] * $presents[(-1 * $presents[$_] )]
}
$total

You start with 12 days & create an array containing the values 1 to 12

Set the total to 0 & loop through the days. Because array indices start at 0 you need the range 0-11 which you can calculate as 0..($days-1)

The total number of presents delivered of a type is the number of things 1 partridge, 2 turtle doves etc multiplied by the number of times its delivered 12, 11, 10 etc

The number of presents of a particular type is from the array $presents[$_]. The days delivered is found by getting an inverse relationship into the array. So present 1 delivered 12 times which is value of last element; present 2 delivered 11 times which is next to last element etc.

Now the point of the post is to show you that you can access the last element of an array using an index of –1; the next to last using –2 and so on.

As we want to calculate this we end up with taking the value of the array for that point and multiplying by –1 to get the value we need fo r the multiplication

$presents[(-1 * $presents[$_] )]

Add the calculated values together and you get the total number of presents delivered.

I’ve deliberately put more () into this than needed to make the logic easier to follow.


September 12, 2013  1:35 PM

Windows 2012 activation



Posted by: Richard Siddaway
Windows Server 2012 R2

Following the nightmare of my last post – don’t what I was doing last night – it seems that Windows 2012 R2 will activate as soon as an internet connection is established.

If you attempt to manually activate (not noticing that its happened already) it will ask for a product. Still doesn’t appear to accept the key I’d already input during install which seems odd.

At least its working


September 11, 2013  2:43 PM

Windows 2012 R2–ouch



Posted by: Richard Siddaway
Windows Server 2012 R2

The other day I downloaded Windows Server 2012 R2. Goodie I thought I’ll download that. Download worked. Installed 2012 R2 in to a VM and started to configure it tonight.

Went to activate Windows and it asked for a product key. No biggie as I grabbed that during the download.

Entered the key and it was rejected. Huh. Assumed a mistype and tried again. Still rejecting. Went back to MSDN and got a second key. Rejected again.

Next steps – trash the VM & re-download & rebuild.

I do love doing things a second time for no apparent reason.


September 10, 2013  2:43 PM

Windows 2012 R2 PowerShell Execution policy



Posted by: Richard Siddaway
PowerShell v4, Windows Server 2012 R2

In Windows 2012 R2 RTM – just installed first VM this evening – the PowerShell execution policy is set to RemoteSigned. One less thing to change when I create new VMs.


September 10, 2013  1:20 PM

Loading the SQLPS module



Posted by: Richard Siddaway
PowerShell, SQL Server

Loading the SQLPS module gives you quick access to the sql cmdlets, sql provider and the SMO assemblies. It also, infuriatingly, moves your location into the sql provider.

I (really) * (lots ) hate things that assume what I want to do.

You can use PowerShell to reverse this annoying, and arrogant action:

Push-Location

Import-Module SQLPS

Pop-Location

Will get you back where you were.

SQLPS is slowly becoming a civilised member of the PowerShell eco-system especially when compared to its first incarnation. A few more versions and it might behave properly.


September 10, 2013  3:27 AM

PowerShell one-liner for virtual disk analysis



Posted by: Richard Siddaway
Hyper-V, PowerShell 3, Windows Server 2012

I needed to look at my virtual machines & their disk sizes – with Windows 2012 R2 upgrade in the works I need to do a bit more tidy up

I found two cmdlets in the Hyper-V module:

get-vmharddiskdrive – can be related to the virtual machine but doesn’t give a size

get-vhd – expects a path to the VHD file

Luckily get-vmharddiskdrive outputs the path. This gives me a nice pipeline:

Get-VM |
Get-VMHardDiskDrive |
Get-VHD |
select Path, @{N=’Size’; E={[math]::Round(($_.FileSize / 1gb), 2) }} |
sort -Descending

Get the VMs pipe through get-vmharddiskdrive and get-vhd then select and sort and you’re done.

I always break my pipelines at a pipe symbol – it acts as a line continuation in the console and ISE so anything thing else is just extra unnecessary work


September 10, 2013  1:29 AM

Windows 2012 R2 on MSDN



Posted by: Richard Siddaway
Windows Server 2012 R2

In case you didn’t see yesterday’s announcement – the RTM versions of Windows 2012 R2 and Windows 8.1 are available for download. From what has been announced so far by Microsoft expect some updates before, or at, General Availability next month


September 9, 2013  12:54 PM

SMO with SQL Server 2012



Posted by: Richard Siddaway
PowerShell, SQL Server

I’ve been working quite a bit with PowerShell and SQL Server 2012 just recently. In earlier versions of SQL Server you had to load the SMO assemblies to get access to the admin functionality.

In SQL Server 2012 –

import-module sqlps

gives you the SQL Server provider, the cmdlets and loads the SMO assemblies for you.

Nice and easy so I don’t have to do anything extra. That’s a good module


September 9, 2013  12:11 PM

Solving partial displays of AD properties



Posted by: Richard Siddaway
Active Directory, PowerShell

Had an interesting question today. The question concerned displaying the StreetAddress property when its multiple lines like this:

PS> Get-ADUser -Identity dgreen -Properties StreetAddress | fl Name, StreetAddress

Name : GREEN Dave
StreetAddress : Floor 5
Buidling 3
Newboro Square

If you try this with format-table instead

PS> Get-ADUser -Identity dgreen -Properties StreetAddress | ft Name, StreetAddress -a

Name StreetAddress
—- ————-
GREEN Dave Floor 5…

The address is truncated

The answer is to use the –Wrap parameter

PS> Get-ADUser -Identity dgreen -Properties StreetAddress | ft Name, StreetAddress -a -Wrap

Name StreetAddress
—- ————-
GREEN Dave Floor 5
Buidling 3
Newboro Square

And all is good


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: