Friday, December 16, 2011

Lync 2010 Lync Mobile Client

Earlier this week, I blogged about the new Lync mobile client – i.e. client software for smart phones and the iPad. As of mid afternoon today, the client sets for WP7 and Android are shipping. From the comments I hear from users – this software is fairly trivial to install and does what it says! It also adds value to the Office 365 proposition. I can’t wait to use it against Lync Online!

There is one small gotcha – in order to use this new client against your on-premise Lync deployment – well first you have to have one (the client is of no use unless you have an implementation of Lync to use it against). And secondly, assuming you have Lync working, there are upgrades to the product, the mobility service, that need to be added. And there are a couple of DNS changes to be made and a new firewall port to open. Those are pretty straightforward but of course have to be done before the client can work against your implementation of Lync.  For those of you on Office 365, all that work is done – although you need to make DNS changes if you are hosting the DNS for your Office 365 domain.

I’ve seen very few issues reported so far, and the general consensus in Twitter at least is that the client is working well. About the only negative comment was from Michael Smith (Market Management Director at Cisco). Of course he got it wrong ranting about no Android/IOS support, which seemed to blunt most of his argument. One point he does pick up on is  that there is no VOIP feature in the client.

To support VOIP, the mobile handset would have to either support wireless and have wireless connectivity or use the cellular data channel against your data plan. Those are the only two ways to get the IP datagrams carrying VOIP signaling and data from your phone to the other end of the connection. If you are using wireless to connect, then VOIP calls will constitute additional bandwidth both from the phone to the WAP and from the WAP into your enterprise network. If your wireless infrastructure is not up the mark, you end up with poor service and a bunch of unhappy users. Using your cellular carrier for the actual phone call reduces that risk.  If you were using VOIP over wireless, then the battery life takes a hit.  Battery life on my phone is sure improved when I turn the WIFI off!

Using VOIP over the cellular carrier’s data channel might have once made sense – sadly the days of unlimited data may well be gone with most mobile phone companies imposing limits and costs. And don’t get me started about how expensive it can be to use data roaming when outside the UK or worse outside the EU (around half my working time is spent outside the UK). Even with the inflated call cost outside the UK, using the mobile network for the phone calls is a lot cheaper. Outside the EU, we can pay over £6/mb for cellular data. A one minute call over such a link would consume in the region of 4.6mb (assuming RTA Narrowband is used) for the call and would cost around £14.00. Worst case rates on O2 are £1.79/minute for the cellular call. A no brainer to me – plus the company pays the cost of the call.

A VOIP client in the product might have been nice to have, but from an Enterprise perspective, using Call-From-Work makes more sense as provides better assurance over call quality and lower help desk calls. These users do, of course,have Skype which works perfectly as a VOIP phone for those times when they can tether on the USB to keep the battery topped up and are on a well provisioned wireless network. With Skype now belonging to Microsoft, I can’t help but thinking that one day we will have the combined client – but exactly what Skype will do to Lync is a topic for another day. 

But in the meantime, it looks like another nice addition to the Lync family aimed at.  I am anxious to try it out!

Technorati Tags: ,,

Tuesday, December 13, 2011

PowerShell ISE Script Explorer–Get it Today

Microsoft has just released the latest CTP release of the Microsoft Script Explorer for Windows PowerShell. This is an add-in to the ISE that enables you to search for scripts within the PowerShell ISE. With this release, you can:

  • Search online repositories including PoshCode and Technet
  • Establish and search local and corporate script repositories
  • Filter search by location and product relevance
  • Browse Community Resources, including the TechNet Wiki
  • Integrate community samples into corporate script library seamlessly

This CTP is based on an invitation – and I just happen to have one:

https://connect.microsoft.com/site1064/InvitationUse.aspx?ProgramID=7431&InvitationID=TL10-GX2K-3VFW

Click on this link and login to Connect. If you are not already resistered on Connect, you need to sign with a valid Microsoft LiveID.

So head on over, and try it out. Feel free to leave you comments – either here, or with Microsoft!

Technorati Tags: ,

PowerShell’s ++ and -- Operators (Redux)

A couple of days ago, I posted an article on PowerShell’s ++ and – operators. I grew up using programming languages that never implemented the auto increment/decrement operators, this was a neat new feature for me.

But I have had a couple of comments pointing out that these operators are not new, are in C# and what I describe is indeed by design. Of course they are right. The point I was making was aimed at those new to PowerShell and who probably do not have a background in programming.

For the avoidance in doubt, I know how these operators work and am well aware of them and their behavior. Smile But I do see many IT Pros that discover these operators for the first time in a PowerShell class – and it was a question I’d been asked that I posted about.  For those new to programming and to PowerShell, these two operators are a neat find and I advocate using them. But like many of PowerShell’s richer features, you have to know how they work.

 

Microsoft Begins Shipping the Lync Mobile Client

For those of us in the Lync world, the release of a Lync client for mobile phones has been long awaited. Although Microsoft released Lync 2010 to the market over a year ago, there has been no mobile client up till now. The lack of a mobile client has been a point some Microsoft competitors have been quick to jump on. But starting earlier this week, the client is slowly rolling out on 5 key platforms (Windows phone, iPhone, iPad, Android and Nokia Symbian).  Thus far, Microsoft has only released Lync for the Windows Phone – the others are shown as ‘coming soon’ on the Mobile Clients for Microsoft Lync web page.

Microsoft cites 4 key features of the new Lync mobile client:

  • Join conferences with a single touch - no access code or pin number is required.
  • Stay connected, while controlling your availability – you can see who's available at a glance and connect over IM, email or a call. You can also set your own status and notification settings so you can stay in touch while protecting your "off-work" time.
  • Communicate with others using a single, consistent identity. The Call-via-work feature allows outbound calls using your Enterprise Voice number, making it easier for others to recognize calls from the Lync mobile client.
  • Connect with confidence through channel encryption, transport layer security (TLS) support, and perimeter/internal network protection that help safeguard your communications.

To the dismay of some, there is no VOIP client – all phone calls to/from the device have to be made over the cellular network, but Call from work and One Number reach do make that a little less expensive.  It appears that the Call via Work feature will not be shipped with Android.

Like so many things Microsoft, the client is not something you can just load from the relevant store and have it work – you do need some work on your Lync implementation and need to install the latest cumulative updates (CU4 in particular) to get the necessary services up and running that support the motile client.

These requirements are spelt out in yet another TechNet article: http://technet.microsoft.com/en-us/library/hh690988.aspx. You will need to do some work against your DNS servers to ensure automatic discovery and sign-in works properly. Although this is pretty straightforward, it is work that needs to be planned for and carried out. If you are an Office 365 user and Microsoft is managing your DNS, the work appears to be already done. I host DNS externally to Office 365 but it took me just a few minutes to adjust my DNS settings as needed. You also have to install and configure the mobility service (in CU4), and update your voice policy to support use of the mobile client.

One important gotcha that might be easy to overlook: You need to include certain (new and additional) SAN entries on your key servers. In particular you need to adjust SAN entries on the certificates in your Director pool, your Front End Pool and the reverse proxy. If you use public certificates for any of these systems, you may have to buy an updated certificate for the RP system. 

In closing, it’s worth noting that the mobile client does NOT provide 100% of the features of the Lync desktop client.  You can see a good comparison of the various clients at: http://technet.microsoft.com/en-us/library/hh691004.aspx. Some features that are NOT provided by the mobile client (as documented in TechNet) include:

  • Caching multiple users account information on the same device
  • Modify Contacts List
  • Tag contacts for status change alerts
  • Control privacy relationships
  • Log IM conversations in Exchange/Outlook
  • Use dial-in audio conferencing
  • Transfer a call
  • Call a response group
  • Support E911
  • Client side IM archiving and client side recording

I can’t wait to get my hands on the client and to use it against my Office 365 account (tfl@reskit.onmicrosoft.com). From all I’ve heard from those who have the client – it does what it says it does and thus far appears stable and resilient. I look forward to using the client - As an iPhone user, I will have to patient. After all – I’ve been waiting 14 months or so for this client a few more days wait is not the end of the world! It will make a nice Christmas present!

Monday, December 12, 2011

Using PowerShell’s ++ (and–-) operator–Take Care

I got a great question the other week in a PowerShell class regarding the ++ operator. The delegated to know if there was any difference between $variable++ and ++$variable. In PowerShell, the operator ++ says, effect to add one to the variable it’s attached to.  So specifying $loopcounter++ as a statement on it’s own (e.g. inside a loop would just add one to the loop counter variable. 

I don’t use the ++ operator a lot – When I was first learning programming, the languages we had (assembler, Cobol, RPG, Fortran and Algol) never had these operators. So incrementing loop counters freestanding is about all I ever do. But I started playing and found some interesting things about ++!

First, looking at my most common use case, $variable++ and ++$variable seem to be the same as this code illustrates:

$lc=0;1..10 | foreach {$lc++};"Loop counter: $lc"
$lc=0;1..10 | foreach {++$lc};"Loop counter: $lc"

produces

Loop counter: 10
Loop counter: 10

 

So at that level the formats are equivalent in function.  And for the most part, the ++ operator used before or after the variable name produces similar results. But not in all cases. Consider the following code fragment:

“Case 1”;$lc=0;1..5 | foreach {"{0}" -f $lc++};"Loop counter: $lc"
”Case 2”;$lc=0;1..5 | foreach {"{0}" -f ++$lc};"Loop counter: $lc"

These two code fragments do not produce the same output. In the first case, the value of LC is formatted into the string, THEN it’s incremented, whereas in the later case, the incrementing occurs before the formatting. Thus the output looks like this:

Case 1
0
1
2
3
4
Loop counter: 5
Case 2
1
2
3
4
5
Loop counter: 5

So as you can see ++$variable is not always the same as $variable++.  Another curiosity of PowerShell that you just have to know!

[Later]

Of course, if you know C# or some other newer languages ++/-- may be old hat to you. And thanks for the comments that came from this post!

Wednesday, December 07, 2011

PowerShell 3.0 CTP2 Released for Windows 7/Server2008R2

I’ve been on the road a bit lately, and missed last week’s shipment of the PowerShell V3 CTP2. This is the second ''beta'’ of the upcoming PowerShell Version 3. At present this only works in Windows 7 and Server 2008 R2. There are, as I understand it, no plans for this to back-port to Vista and Server 2008 R2. I do hope that MSFT DO release a version for Vista and Server 2008 RTM but we’ll see.

In the meantime, the new version has lots of bug fixes, seems quite a bit faster and in general seems more mature than CTP1. In my case, the install was a bit confusing as I’m doing a multi-boot to VHD with Windows 8 on my laptop, unfortunately, one of the partitions (of course my default) ran out of disk space so after installing the update, recovering from the out of disk space issue, Win 7 thought the update had failed. I fixed the boot problem, then re-installed the update. From the looks of it, the update also does an in-place upgrade of the CTP 1 process (although the release notes ask you to remove CTP1 first).

The new CTP has a wealth of update to the console and the ISE. With the ISE, the output and input panes are merged into a single console like pane. Very useful and much easier to use. Read the release notes for a summary of what’s new.

You can get the various downloads that make up the release here: http://www.microsoft.com/download/en/details.aspx?id=27548. From that page you can get the 64-bit and 32-bit installation packages (.MSU files), release notes and a PDF containing a description of the new ISE Features and a description of the new features in Out-Gridview.

I love this product!

Technorati Tags:

Saturday, November 12, 2011

Using the PowerShell ISE–two cool finds

I’ve been using PowerShell’s Integrated Scripting Environment ever since it was in beta. Despite being relatively slow to load, it sure beats using Notepad for simple script development/debugging. The colour coding alone makes it even more useful! I love how you can add functionality to the editor via object model. It’s neat how that object model is exposed inside PowerShell as the $ISE variable – and how easy it is to use it to add menu items (and keyboard short cuts for the menu items).

A freely available module that offers a lot of ISE customisation is the IsePack, which is part of the PowerShellPack mega-module issued by Microsoft as part of the Windows 7 Resource Kit. You can download the full PowerShellPack from http://archive.msdn.microsoft.com/PowerShellPack. The PowerShellPack module is actually a set of 10 sub-modules. You can import the entire module (Import-Module PowerShellPack) or the sub-components. In my ISE Profile file, I add the ISE pack in specifically (Import-Module IsePack). That in turn exposes me an additional Add-On menu item, ISEPACK. This menu contains a set of sub-menus which add a lot of features to the ISE.

My two cool finds are partly what’s in IsePack and what I could easily add to it. The ISEPack creates a number of functions based on the ISE’s object model. It then leverages those in additional functions that PowerShell associates with menu items and keyboard shortcuts when the module is imported. And since the module is just a text file – you can easily edit it and add more features.

The first cool find is the Search-Bing function, which is associated with a menu item (Add-ons/IsePack/Search-Bing) and a keyboard shortcut (Ctrl-B). The Search-Bing function uses a lower level function,  Select-CurrentText, that gets the text that is currently selected somewhere on the ISE', then pipes it to copy of IE which points http://www.bing.com/search?q=$_. Thus, if I have the text ‘ToString’ highlighed in an open editor window, and hit Ctrl, I get a Bing Search Page, like this:

image

 

The second cool thing was how easy it was to ammend the IsePack module to add a Search-Google function. In the IsePack.PSM1 file, there’s a fragment of code that implements the Search-Bing feature (and adds it to the menu) This fragement is part of a larger script, but here’s the starting poing:

"Search-Bing" = {
        $Shell = New-Object -ComObject Shell.Application
        Select-CurrentText | Where-Object { $_ } | ForEach-Object {
            $shell.ShellExecute("
http://www.bing.com/search?q=$_")
        }
    } | Add-Member NoteProperty ShortcutKey "CTRL+B" –PassThru

 

As you can see, Search-Bing is associated with a script block that first opens the currently configured Web Browser (FireFox in my case). Then it executes a Bing Search on the currently selected text. This results in the search window coming up. So how hard was it to add to add a Search-Google? Trivial as it turns out. I just added the following text directly below the Search-Bing definition:

    "Search-Google" = {
        $Shell = New-Object -ComObject Shell.Application
        Select-CurrentText | Where-Object { $_ } | ForEach-Object {
            $shell.ShellExecute("http://www.Google.com/search?q=$_")
        }
    } | Add-Member NoteProperty ShortcutKey "CTRL+Shift+G" -PassThru

 

Sadly, Ctrl+G was already taken by something (a puzzle for another day!), so I used Ctrl+Shift+G and that brings up something like this:

image

 

As I am currently working on my next Pluralsight course on Formatting with PowerShell, I’m finding a need to look stuff up in MSDN and these two functions sure are useful to me!

Wednesday, November 09, 2011

PowerShell PowerCamp–A great weekend!!!

I’m now recovered from the most recent PowerShell PowerCamp – an intense two days of PowerShell training. I ran the event in London last weekend, and had 21 booked. Sadly there were two very last minute cancellations, so we we ended up with 19 eager souls. We walked through the basics of PowerShell at the command line on the Saturday, then on Sunday, started looking at scripting and other enterprise aspects of PowerShell. And on Sunday, we has Lync MVP superstar Tom Arbuthnot of Modality Systems in to talk some real world approaches to PowerShell.

On Saturday night we took over a small pub nearby, to the amusement of the locals, and continued chatting about PowerShell. I My lovely wife came up to London and we enjoyed a most interesting meal in Sobraine, a Russian restaurant in Victoria. Great food and very, um, interesting décor.

The delegates took home a memory stick with as many PowerShell goodies as I can find and will shortly be getting licenses for PowerGui professional and PowerShell Plus Pro, thanks to Quest and Idera!

I have no specific dates for the next PowerShell PowerCamp, but depending on interest, I would like to run another session sometime in the late spring (March/April). As ever, dates are tricky at that time of year what with half term and Easter, etc – but I’m sure we can find a good weekend should there be anyone wanting this level of training! And for those corporate readers – I’m happy to come to your place of work and run this same training for your team on your premises. If you have 6 or more delegates, this could be financially beneficial.

And in closing – a big thanks for Claire Smyth of Microsoft who was an enormous help in getting this event off the ground. Without her help and passion for the community, this event probably would not have happened! Thanks Claire!! And thanks too to Michael Sullivan for letting his hosting channel know about the event.

For any enquires about the next PowerCamp or running a PowerCamp privately, email me at DoctorDNS@Gmal.Com.

 

Technorati Tags: ,

Performance with PowerShell

Over the weekend, at the most recent PowerShell PowerCamp, I got to discussing the performance of PowerShell. The point I was making was that PowerShell made doing some things very easy, even though they were not performant. Two examples are the early filtering  of WMI data using –Filter (vs using Where-Object after you retrieve all the data from a remote machine) and the two variants of ForEach.

In the case of WMI, where you early filter properties/occurrences on the target machine, PowerShell has less data to serialize and transmit across the network. Also, late filtering requires more local memory, and additional processing. Thus I’d expect early filtering to be faster. We are thus comparing two statements which might look something like this:

Get-WMIObject win32_share -computer  Cookham1 -filter "Description='remote admin'"

versus

Get-WMIObject win32_share -computer  Cookham1  | Where {$_.description -eq 'remote admin'}

In the first example, only one share is returned from Cookham1, whereas in the second example multiple shares are returned and are then filtered locally (aka late filtering). If I wrap both of these commands in a Measure-Command, and do the operation a number of times, the code and results look like this:

 

Psh[Cookham8:fmt:\]>"Early Filter:"
" {0} ms"  -f  ((Measure-command {1..100 | foreach {
Get-WMIObject win32_share -computer  Cookham1 -filter "Description='remote admin'"}}).totalmilliseconds).tostring("f")

"Late filter:"
" {0} ms"  -f  ((Measure-command {1..100 | foreach {
Get-WMIObject win32_share -computer  Cookham1  | Where {$_.description -eq 'remote admin'}}}).totalmilliseconds).tostring("f")
Early Filter:
1948.91 ms
Late filter:
2715.44 ms

So the difference between late filter and early filter is around 28%, although if I run this test a few times, the numbers do vary a bit, but almost always early filtering is in the region of 20% faster.

But a much bigger difference was observed by Anita Boorboom, a Dutch SharePoint guru, in the second case, i.e. using For-Each-object (vs using ForEach in a pipeline).

When you use the foreach operator in a pipeline, PowerShell is able to optimise the creation of objects at one stage of a pipeline and their consumption in the next. Using Foreach-Object, you need to first persist all the objects you wish to iterate across, then perform the iteration. The latter clearly requires a bit more processing and it is likely to require more memory (which can be a bad thing if the collection of objects is large! I knew this, but Anita’s results were a little more than I was expecting, so I duplicated her scripts, well nearly, and found here results were indeed correct, like this:

$items = 1..10000
Write-Host "ForEach-Object: "
" {0} ms"  -f ((Measure-Command { $items | ForEach-Object { "Item: $_" } }).totalmilliseconds).tostring("f") 
Write-Host "Foreach: "
" {0} ms" -f ((Measure-Command {Foreach ($item in $items) { "Item: $item" }}).totalmilliseconds).tostring("f")
ForEach-Object:
  629.73 ms
Foreach:
31.84 ms

Thus the pipelined foreach is nearly 20 times faster for this experiment. I ran this code several times, and the multipler was consistently in the 20-30 times as fast range. That floored me. The For-Each Object does require PowerShell to instantiate every object in memory, then to iterate over it, vs iterating as it instantiates. But I did not expect a 20-30 fold difference in performance!

So it’s obvious that some language constructs will be a little more efficient, You also need to consider the time it takes to write the code, and how often it will be run.  In the first case above, I managed to save just over 750ms by using early WMI filtering. But it probably took me more than that just to write the code for early binding. And for a lot of admins that don’t know WMI very well, filtering using Where-Object is familiar and uses PowerShell Syntac (the –filter clause on Get-WMIObject used WQL which is different). In the second case, the difference was staggering. Of course, when the processing you want to apply to the collection members is non-trivial (i.e. more than a couple of lines of code), you often find the improvement in readability of the resulting script block to be worth considering. By using task oriented variable names, the resulting code is easier to read then when you use $_. And for some production orient5ed scripts, that improvement in readability may be worthwhile.

In summary, there always a lot of different ways to achieve the same result in PowerShell. I advocate using what is easiest for you to remember. At the same time, PowerShell can provide some big performance differences between the approaches – and it pays to know more!

Technorati Tags: ,

Thursday, November 03, 2011

PowerShell PowerCamp Soon Come!

We’re locked and loaded for this week-end’s PowerShell PowerCamp event in London this Saturday and Sunday November 5 and 6 in London Victoria. We had a few last minute cancellations, but in all we have 19 folks signed up (and room for 2 more late bookers should you be interested). And owing to landlord works, the event has been moved to the building next door – but everything will be alight on the night as they say.

I’ve got a box of nice new memory sticks to copy all the collateral onto – one for each attendee. I’ve also got copies of some cool software for all who turn up as well. And in the unlikely event that Wiley gets their act together and the books actually arrive, I may have a copy or two of our PowerShell Bible book (but as Wiley ship books by surface, it’s a month after the copies shipping but they’ve still not arrived).

Should you be at a loose end this weekend and fancy a two day PowerShell boot camp, please email me (DoctorDNS@Gmail.com) as due to the two late cancellations, there’s still a bit of room. Alternatively, I am hoping to do another weekend event in the Spring (and will announce it as soon as I get the dates etc. lined up which will probably not be till late-November/early-December).

And for any PowerShell addicts who happen to find themselves in London on Saturday, we’ll be having PowerDrinks (also known as beer and other drinks!)starting at 17:15 on Saturday. Send me mail and I’ll send you the co-ordinates of the event!

Technorati Tags: ,,

Tuesday, November 01, 2011

Introduction to WMI and PowerShell – A NEW Pluralsight Course

I am quite pleased to be able to announce I’ve finished my first video class for Pluralsight, Introduction to WMI and PowerShell. It’s now available for viewing for Pluralsight subscribers.  I’ve been watching it a bit this morning and it’s not bad, if I do say so myself. Smile

The course is a total of 2:29, and is broken down into 5 modules as follows:

  • Introduction to WMI and PowerShell (21:28) – Describes WMI in Windows and discusses some of the key WMI exploration tools. The module then looks at PowerShell support for WMI in PowerShell V3, and describes the WMI cmdlets. The module finishes with some of the gotchas you need to be aware of when using WMI with PowerShell.
  • Using PowerShell and WMI  (34:37) This module looks at accessing WMI data, including instances, instance properties and methods, WMI classes, and static class methods. We cover the use of the key WMI cmdlets and explain the use of Type Accelerators.
  • Practical PowerShell (24:42)  - This module looks at the range of data you can use in WMI. We show key namespaces and key classes you might leverage. The module also looks at some of the security settings you might make use of when using WMI in a Enterprise environment.
  • Using WMI Query Language (29:36) – Describes the WMI Query Language and how to use it with the PowerShell WMI cmdlets.
  • WMI Eventing (39:16) - This final module looks at accessing WMI events. It shows how to create both temporary and permanent event subscribers for intrinsic, extrinsic, and timer events. It also explains all those terms and shows how to leverage WMI’s eventing subsystem.

So if you are currently a Pluralsight subscriber, why not consider it? If nothing else, take the free trial – 10 days access to the entire library, including this course.

And also: a big thank you to Alexandar Nikolic (@alexandair on Twitter) for his proof reading of the course – much appreciated!!

Thursday, October 27, 2011

Pluralsight WebCast on Using WMI from PowerShell

I got a fun call last night – PluralSight has a regular webcast but this week’s presenter has had personal issues – and would I like to do the webcast? Well SURE!  When don’t I like the chance to talk about PowerShell!?!?

As it turns out, this is perfect timing - I’ve just finished developing a new PluralSight course, Using WMI from PowerShell which goes LIVE today. So this web cast is a great opportunity to tell you a bit more about the course, and hopefully tempt you to download it and consume the video! I’ll enjoy talking about it!!

The webcast is at 11:00 US Eastern Time – 16:00 time here in the UK. Please join us at: http://www.pluralsight-training.net/microsoft/Webcasts

Friday, October 07, 2011

Using PowerShell with WMI Events

I’ve been working on a WMI and PowerShell video course for PluralSight (due out soon) and am today working on the last bit of the course which covers Events. I found an MSDN sample written in VBScript. Here’s the VBScript:

Sub SINK_OnObjectReady(objObject, objAsyncContext)
    WScript.Echo (objObject.TargetInstance.Message)
End Sub

Set objWMIServices = GetObject( _
    "WinMgmts:{impersonationLevel=impersonate, (security)}") 

Set sink = WScript.CreateObject("WbemScripting.SWbemSink","SINK_")
 
objWMIServices.ExecNotificationQueryAsync sink, _
    "SELECT * FROM __InstanceCreationEvent " & _
    "WHERE TargetInstance ISA 'Win32_NTLogEvent' "
I spent some time looking at this trying to get my head around what it was actually doing.   Turns out that translating it into PowerShell was fairly simple. Here’s the PowerShell code:

$query = "SELECT * FROM __InstanceCreationEvent WHERE TargetInstance ISA 'Win32_NTLogEvent' "

Register-WmiEvent -Source Demo1 -Query $query -Action {
                Write-Host "Log Event occurred"
                Write-Host "EVENT MESSAGE"
                Write-Host $event.SourceEventArgs.NewEvent.TargetInstance.Message}

Even with the nice spacing that turns 9 hard to understand lines of VB SCript into 2 LONG lines of PowerShell (or 5 as it’s so nicely spaced out here). I could have written it as a one-liner had I wished to go for compactness – but I think spacing it out a bit helps in terms of understaning.

The bottom line for me is that PowerShell is just so much easier to understand – you register for an event. A query tells you which event. And when that event fires, you take some action. Job done.

Technorati Tags: ,

Wednesday, September 28, 2011

PowerShell PowerCamp–November 5/6–Filling Fast

I first started advertising this event in August, with a blog post and some tweets. Since then, we’ve had a good response with 14 folks booked so far. At this rate, we may need a bigger room. I’m going up Saturday to check out the meeting room to ensure all is OK!

In the mean time,  here’s the details of the event:

What is it?

This fast paced weekend event covers all the key aspects of Windows PowerShell - from the command line and writing production-oriented scripts. We start with the basics including installation and configuration, formatting and providers and remoting. We then look at scripting, managing script libraries using modules, using objects, and finishing with the PowerShell features added into Windows. We finish with a look at PowerShell in the cloud and what’s coming with PowerShell 3.  The event will be all lecture, with the opportunity to type along with the tutor.

What is the Agenda?
Day 1 – The Basics
•  PowerShell Fundamentals – starting with the key elements of PowerShell (Cmdlets, Objects and the Pipeline) plus installation, setup, and profiles
•  Discovery – finding your way and learning how to discover more
•  Formatting – how to format output nicely – both by default and using hash tables and display XML
•  Remoting – working with remote systems using PowerShell’s remoting capabilities
•  Providers – getting into OS data stores via PSProviders
Day 2 – Diving Deeper
•  Scripting Concepts – automating everyday tasks including PowerShell’s language constructs, error handling and debugging (both from the command line and using an IDE)
•  Modules – managing PowerShell script libraries in the enterprise
•  .NET/WMI/COM Objects – working with native objects
•  PowerShell and Windows Client/Server – how you can use built in PowerShell cmdlets
•  PowerShell in Key Microsoft Servers - a look at PowerShell today in SQL, SCVMM plus a look forward to the future with SharePoint 2010
•  PowerShell and the cloud – this module looks at PowerShell in the cloud and how you can use PowerShell to manage cloud computing.
•  PowerShell 3 – this final module will show you what’s new in PowerShell V3, based on the the latest Beta of Windows 8

What will it cost?
The cost is £200 (+VAT at the prevailing rate) for the weekend. Meals and accommodation are not covered.

Where is the event going to take place?
The PowerShell PowerCamp will be held at Microsoft Cardinal Place, 100 Victoria Street in Victoria on the weekend of November 5/6 2011.

Who is the tutor?
The PowerShell Weekend PowerCamp will be delivered by Thomas Lee. Thomas is a veteran PowerShell MVP who has been involved in the PowerShell community since the very beginning. He provides training and consultancy around a range of Microsoft products, with a recent focus on PowerShell and Lync Server. Thomas runs PowerShell training courses around the world, and has been a speaker at conferences across the world for the past decade. His Twitter handle is DoctorDNS and he maintains two blogs (Under the Stairs at http://tfl09.blogspot.com and PowerShell Scripts Blog at http://pshscripts.blogspot.com)

PowerBeers after Class on Saturday
I'll also be leading the class across the street to the pub for a beer after we finish on Saturday. I’d be happy to buy the first round! You (and I ) will probably need by then!

Special Guest
I have arranged for a guest PowerShell advocate, Tom Arbuthnot, to come along and add some additional flavour to the event. Tom works for Modality, a great UK Unified Comms consultancy and will be looking both at PowerShell in Lync abut also at wider issues. He’s should be fun!

PowerBeers after Class
I'll also be leading the class across the street to the pub for a beer after we finish on Saturday. I’d be happy to buy the first round! You (and I ) will probably need by then!

What do I need to bring
You need to bring a laptop with at least two VMs pre-configured. The first should be a Server 2008 R2 domain controller and the other one a member server. And if you have access to the Windows 8 beta, bring along a Win8 VM for the look at PowerShell V3. The virtualisation software is not of concern – but you need 64-bit guest OS support. Thus you can use Hyper-V, VMware Workstation or Oracle’s Virtual Box.

Take Aways
After the event, I’ll provide you with a USB memory key with as many of the free PowerShell Goodies as I possibly can. Attendees will also get an NFR license to both Idera’s PowerShell Plus Professional and Quest’s PowerGui Professional.

How do I book?
Contact DoctorDNS@Gmail.com to book a place and to arrange for the invoice to be paid. Payment will need to be cash, cheque or bank transfer – I don’t take credit cards. I will need to limit the total number of attendees, so book now!


More Details
Continue to read this blog!!

I look forward to a few more bookings and two cracking days of PowerShell.

Monday, September 26, 2011

PowerShell V3 and Updateable Help

With PowerShell v2, the help information you can get using Get-Help is fixed. if there are errors in the help information, Microsoft is not going to up date them (until V3 ships). The logic is that PowerShell is a component of Windows and the Help text is not a critical or a security fix – thus we’re not gong to get hot fixes. And given the relatively high bar to bugs that are fixed by Service Packs (it has to be customer impacting - it’s tough to argue erroneous help information falls into that category), thus the only way with V2 to get updated help is to wait for V3.

One good thing Microsoft did do for Version 2 was to add the –Online switch to Get-Help. This switch has Get-Help open a browser window and navigate to the on-line help in TechNet. Since TechNet content can get updated when appropriate, this has been the work around – go online for the latest help information. And looking at the online help topics, there have been a number of changes and fixes.

This changes at V3. With PowerShell V3, Help can be updated mid-version using the appropriately named Update-Help cmdlet. When you first start up PowerShell V3 (CTP1!), you get only basic help material. If you type ‘Get-Help Get-Help, you see the following:

image

As you can see from this screen shot, PowerShell can’t initially find the help information. If you try to run Get-Help About_*, you get none of the help topic files listed. Finally, at least for now, the help link shown in the screen shot takes you to V2 help, which doesn’t really help that much (for the obvious reason that V2 shipped with help information fully implemented). But the screen shot does tell you more or less how to fix the problem – use Update-Help.

When you installed PowerShell V3 CTP1, you downloaded a .cab file from Microsoft then expanded it. When you did the expansion, you created a HelpContent folder which contains the necessary information. With CTP1, help information is localised into German (de-DE), US English (en-US), Spanish (es-ES), French (fr-FR), Italian (it-IT), Japanese (ja-JP), Korean (ko-KR), Brazilian Portuguese (pt-BR), Russian (ru-RU) and Chinese (both zh-CN and zh-TW). So long as your OS is one of these languages, then just use Update-Help specifying the UI culture and the Source path to the Help .cab files. For reasons I’m sure of yet, you seem to need to specify the –Force parameter in order to force PowerShell to update the help information (this may be a feature of the early CTP). Like this:

image

in the longer term, this is going to be a great feature – being able to update help on your local system as Microsoft makes updates. In the short term, I suspect this my cause some confusion.

[Later]

I have been playing with this some more. And I have noticed slightly different behaviour from Update-Help if you run it in the ISE. Hmmm.

Thursday, September 22, 2011

Using PowerShell and WMI to Manage the Registry

For those of you who are very keen eyed, you may have noticed some posts on my PowerShell Scripts blog related to the WMI Registry Provider. I’ve been working on a PowerShell and WMI course which will be published by Plural Sight in October. As part of this, I have been playing with WMI and the Registry provider, which you can easily use via PowerShell.

Microsoft has implemented a nice registry provider withing WMI: the StdRegProv class in the ROOT\DEFAULT WMI class.  This class contains 20 static methods that enable you to perform any Registry action on a local or remote computer. You can access these in two ways, either using New-Object to create a new System.Management.ManagementClass object, specifying the path to the class to the constructor ("Root\default:StdRegProv"). Alternatively, you could use the [WmiClass] Type Accelerator, specifying [WmiClass]"Root\default:StdRegProv". Both return the class object, which contains a number of methods as shown here:

c:\> $x=new-object System.Management.ManagementClass "Root\default:StdRegProv"
c:\> $x.Methods | ft name

Name                                                 
----                                            
CreateKey                                                
DeleteKey                                                
EnumKey                                                  
EnumValues                                                
DeleteValue                                                
SetDWORDValue                                                
SetQWORDValue                                                
GetDWORDValue                                                
GetQWORDValue                                                  
SetStringValue                                                 
GetStringValue                                                 
SetMultiStringValue                                                
GetMultiStringValue                                                 
SetExpandedStringValue                                                
GetExpandedStringValue                                                 
SetBinaryValue                                                
GetBinaryValue                                                
CheckAccess                                                 
SetSecurityDescriptor           
GetSecurityDescriptor   

In effect you have four sets of methods:

  • Create/delete registry key (CreateKey, DeleteKey)
  • Enumerate a registry key or value entry (EnumKey, EnumValue)
  • Create, set or delete a value entry (Set<valuetype>Value, Get<valuetype>Value, DeleteValue)
  • Check security on a value/key (Check Access, SetAccessDescriptor, GetSDecurityDescriptor)

Each method is very easy to call, as you will have seen on my PshScripts blog. To manipulate the registry, you need to specfiy a registry Hive, a Registry Key, and where needed, a registry value. So to create a registry key, you could do this:

$HKEY_LOCAL_MACHINE = 2147483650
$Reg                = [WMIClass]"ROOT\DEFAULT:StdRegProv"
$Key                = "SOFTWARE\NewKey"
$Results            = $Reg.CreateKey($HKEY_LOCAL_MACHINE, $Key) 

In this case, you specify the  hive to create the key in by specifying a well known value, in case, 2147483650. The well known values are as follows:

HKEY_CLASSES_ROOT     2147483648
HKEY_CURRENT_USER     2147483649
HKEY_LOCAL_MACHINE    2147483650
HKEY_USERS            2147483651
HKEY_CURRENT_CONFIG   2147483653
HKEY_DYN_DATA         2147483654
With PowerShell, you first instantiate the class instance, which gets you an object on the local or remote machine. Then, you pass the static methods of htios class the values necessary. You always need to the specific well known numbers – in my example above, via a variable to the call the appropriate registry operation. The other paramaeters will depend on the specific call being made.
 
So to create a new MultiString regisgry value, below the key created earlier, you could do this:

$HKEY_LOCAL_MACHINE = 2147483650
$reg       = [WMIClass]"ROOT\DEFAULT:StdRegProv"
$Key       = "SOFTWARE\NewKey"
$ValueName = "Example MultiString Value"
$Values    = @("Thomas", "Susan", "Rebecca")
$Key       = "SOFTWARE\NewKey"
$reg.SetMultiStringValue($HKEY_LOCAL_MACHINE, $Key, $ValueName, $Values)

In this case, the code created a new MultiString value. There are no explicitly NEW methods on StdRegProv – you use a Set* method to either create a new value entry or change a value. With both getting and setting value entries, you use different methods depending on the specific value type you wish to manage (String, Multi—String, Binary, etc).  With removing a value, there’s only one method: DeleteValue.
 
One small thing to be careful of, DeleteKey, deletes the key specified and everything below it. So Deleting a key of “\” in most of the well known hives is probably not advisable.
 
All in all, it’s darn easy to use the StdRegProv class with PowerShell for all your registry manipulation needs.
Technorati Tags: ,,
 
 

Windows PowerShell Bible To Be Published Soon!

I am really pleased to see that the PowerShell Bible 2.0, from Wiley, is due to be published very soon.

 

image

This labour of love from Karl Mitschke, Mark Schill and Tome Tanasovski took a lot of time and effort. I’m so glad to see it finished and nearly in the shelves.

Feel free to visit any book seller and buy as many copies as you like. Once the book is published and I get my rather meager allowance of them, I will have a few copies to give away to those folks who attend my PowerShell Master Classes!

Tuesday, September 20, 2011

PowerShell V3 - Autoloading Modules

Autoloading is a cool feature in PowerShell V3. With Autoloading, PowerShell allows you to ‘see’ cmdlets included in module without you needing to explicitly loading the relevant module. And when you need to run the cmdlet, the module is loaded automatically by PowerShell.

For example, if you run Get-Module on a newly opened PowerShell V3.0 CTP1 prompt, you get the following:

PSH [C:\foo]: get-module

ModuleType Name ExportedCommands
---------- ---- ----------------
Manifest Microsoft.PowerShell.Core {Add-History, Add-PSSnapin, Clear-History, Connect-PSSession...}
Manifest Microsoft.PowerShell.M... {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Content...}
Manifest Microsoft.PowerShell.U... {Add-Member, Add-Type, Clear-Variable, Compare-Object...}

 

if you then run a cmdlet contained in a module (e.g. Get-CimInstance), then re-run the Get-Module, you see the relevant module has been autoloaded, like this:

PSH [C:\foo]: Get-CimInstance win32_bios
SMBIOSBIOSVersion : A05
Manufacturer      : Dell Inc.
Name              : Default System BIOS
SerialNumber      : 804HWM1
Version           : DELL   - 6222004

PSH [C:\foo]: get-module

ModuleType Name                      ExportedCommands
---------- ----                      ----------------
Manifest   CimCmdlets                {Get-CimAssociatedInstance, Get-CimClass, Get-CimInstance, Get-CimSessio...
Manifest   Microsoft.PowerShell.Core {Add-History, Add-PSSnapin, Clear-History, Connect-PSSession...}
Manifest   Microsoft.PowerShell.M... {Add-Computer, Add-Content, Checkpoint-Computer, Clear-Content...}
Manifest   Microsoft.PowerShell.U... {Add-Member, Add-Type, Clear-Variable, Compare-Object...}

As you can see, PowerShell automatically loaded the new CimCmdlets module as needed. This is a neat feature.

One proviso  - autoloading does not appear to work with script modules. Sad smile

PowerShell Version 3–First CTP is available NOW

The first beta version of PowerShell 3 is now available to the public. To give it it’s full name, Microsoft today released the Windows Management Framework 3.0 Community Technology Preview (CTP) #1. This allows you to install PowerShell 3.0 onto systems running Vista/Server 2008 and later  Windows 7 and Server 2008 R2. So if you want to play with PowerShell 3 but are not yet running a Windows 8 version, this is the package for you.

To get the ‘bits’, navigate to the Microsoft Download centre where you can pick up a .cab file for either a 32-bit or 64-bit version of Windows. To install it, you must first expand the cab file using the Expand utility, then you run WINDOWS6.1-KB2506143.MSU.

Running the Windows patch, you are asked to accept the EULA (as per most installations these days) and the installer just does its stuff. For reasons I can’t explain this morning, the installation requires a reboot.

Once you reboot, you can see the new version of PowerShell

image

I’ve got a lot more to tell you, but I want to get his posted now prior to a long flight. I’ll post more later today on this new version of PowerShell

Technorati Tags:

 

[Later] Re-reading the documentation, this version of WMF is not supported on Vista or Server 2008, but only on Windows 7 and Server 2008 R2.

Sunday, September 18, 2011

The Build Videos–Getting Them With PowerShell

I’m just back from the //BUILD/ concerence in Anaheim – where I missed far more sessions than I could have ever hoped to attend. It was 3 1/2 days of the fire hose – I get tired just thinking about it. Luckily for us, Microsoft has taped every session and has put them up for download.

By day 2, superstar PowerShell guru James Brundage had created a great PowerShell function to download the whole set.

Get-EnclosureFile -Directory $home\Videos\Build -Feed http://channel9.msdn.com/Events/BUILD/BUILD2011/RSS

function Get-EnclosureFile  {
<#
    .Synopsis
        Downloads enclosure files from a feed
    .Author
        James Brundage
    .Description
        Downloads enclosure files from a RSS feed using the BitsTransfer module
    .Example
        Get-EnclosureFile -Directory $home\Videos\Build -Feed
http://channel9.msdn.com/Events/BUILD/BUILD2011/RSS
    #>

param(
# The directory where the files should go
[string]$Directory,
# The Feed
[uri]$Feed
)

begin {
Import-Module BitsTransfer –Global
}

process {
New-Item -ErrorAction SilentlyContinue $directory -ItemType Directory
Push-Location $directory
$Rss =(New-Object Net.Webclient).DownloadString("$Feed")
$xfer = $Rss |
    Select-Xml //item/enclosure |
        ForEach-Object {
            $url = [uri]$_.Node.Url
            $destinationFile = $_.Node.ParentNode.Title
            foreach ($char in [io.path]::GetInvalidFileNameChars()) {
                $destinationFile = $destinationFile.Replace("$char", "")
            }
            $destinationExtension= $url.Segments[-1].Substring($url.Segments[-1].LastIndexOf("."))
            if (-not (Test-Path $destinationFile)) {
                Start-BitsTransfer -Source $url -Description $_.Node.ParentNode.Title -Destination "${destinationFile}$destinationExtension"
            }
        }

    Pop-Location
    }
}

To call the function, just do something like this:

Get-EnclosureFile -Directory $home\Videos\Build -Feed http://channel9.msdn.com/Events/BUILD/BUILD2011/RSS

Of course, you better have a lot of disk space (I’ve taken up 21GB so far!). Oh – you also need a reliable connection (and you have Windows Bloody Update not decide to reboot).

Enjoy!

Saturday, September 10, 2011

Lync PowerShell Support forum on PowerShell.Com

For those of you who are using PowerShell with Microsoft’s Lync Server, there’s a additional place to ask questions – and get answers. Namely the Lync PowerShell forum on PowerShell.com. It is one of the two forums I moderate on PowerShell.com and I am ably assisted by superstar Lync MVP Marshal Harrison.

The Lync PowerShell forum is a place both to hang out and to ask (and answer) questions. Some for those of you learning PowerShell along with Lync, hope to see you there.

And for those of you with Twitter accounts, why not Tweet about this forum!

Lync 2010 Resource Kit is Released

The Lync Server 2010 Resource Kit is a technical reference to Lyn Server and extends the planning, deploying and managing documentation in Microsoft’s Lync Technical Library.

After a number of months in preparation, the Lync Server 2010 Resource Kit has been published – and you can download it for free from Microsoft. The book has 18 chapters and you can download each one from the Microsoft Download Center.  And from the same page, you can also get a single zip file with all the documents.

If you are interested in Lync, then these documents are a must read.

 

Technorati Tags: ,

Friday, September 09, 2011

Just when you think it’s safe to move to the cloud

I currently use those very nice people at CobWeb for my email service. I have a singe user account, utilising Exchange 2007 (2gb mailbox) which costs a mere £6.00 a month.  The service from CobWeb, for mail, has been outstanding – not a single noticeable glitch in over a year. It took a couple of days to get mail flowing when I first signed up, due to long DNS, but that was quickly resolved. Since then, it’s been flawless. And that’s the level of service that I guess I expect. Not being able to get to my mail is, as someone who is self employed, simply bad news!

I’ve been playing with Office 365 and am very impressed with the overall service – for not much more money than I currently pay, I could move up to a 25gb mailbox (not that I actually need such a large mailbox, but it’s the principle!), and get SharePoint and Lync thrown in. It’s Lync that is especially interesting – the new Lync client is so good, that I’m tempted to move just for that!

Then I read this: http://www.bbc.co.uk/news/technology-14851455.

While this explains the downtime, I suppose you could argue that a couple of hours downtime is no big deal especially as it took place overnight. But look at the Office 365 service’s reliability record since GA at the very end of June – it was down briefly in August, then again this week. In just over 2 months of live service, two outages in 2 months. 

Of course, Microsoft is not alone in having challenges. Google had an outage this week as well. And in April, Amazon’s infrastructure failed taking down a number of sites, including Foursquare.

So is this latest outage just a bit of teething/growing pains on the part of Office 365 or something else? I remember the trials and tribulations Demon had in the very early days – scaling massively a service that’s growing massively is very hard work! So, I suspect it’s a combination of factors. Certainly, developing and delivering scalable and highly reliable solutions, especially to Internet scale, is just plain difficult. Things that probably shouldn’t go wrong do – at least until there’s enough experience to make those problems a thing of the past. So I feel that at least a goodly portion of the ‘blame’ must lie in growing pains – which one would expect (hope) die off.  Certainly taking the latest and greatest versions of the software has risks. Cobweb is still running Exchange 2007 while O365 is using Office 2010 and related servers. But the features are so much better, I hear you say!

In my view, Microsoft released Office 365 a tad early. The outages, the problems with federation with Live, and of course the still missing PowerShell cmdlets for Lync Online and SharePoint online do not make for a perfect story. And I’d really have liked to see a full voice solution in terms of Lync online (but I know that such a feature is likely to reveal a number of challenges both technical and legal). The  outages (yesterday’s and the one in August) and lack of tools would have been noteworthy but not complaint worthy had the service still been in beta.  Maybe Microsoft should have considered a longer beta? I certainly think another 6 months would have been appropriate and might have enabled Microsoft to get better at running this vast service.

So what’s to be done. Certainly, as the BBC article points out, “the number of high profile failures have dented confidence in cloud computing”. But I do believe that eventually, MIcrosoft and the rest of the cloud vendors will get it right and we will see cloud computing as an everyday thing. I suppose it pays to be cautious. I’ve put on hold my plans to move my business email to Office 365, but I’m watching things carefully.

 

Technorati Tags:

Thursday, September 08, 2011

Hyper-V in Windows 8

Microsoft have announced some more details of Hyper-V in Windows 8 in the Building Windows 8 blog: http://blogs.msdn.com/b/b8/archive/2011/09/07/bringing-hyper-v-to-windows-8.aspx

There are two really exciting things about this. First, Hyper-V is included in the Windows 8 client – I don’t have to have Server loaded to run it. That is going to be huge news to those folks using the client as their workstation/laptop/desktop. We can get rid of the rather poor VPC 7 product (and of course stop using Oracle/VMware).

The second really cool thing is that Hyper-V will support wireless adapters. This is a huge benefit for those of us on the road using Wireless everywhere. I have  new laptop with an 802.11N wireless adapter that I will now be able to use. I can’t wait to upgrade my laptop to Win8!!

These are both welcome additions – I can’t wait to get my hands on the beta next week at BUILD!

Technorati Tags: ,,

Office 365–A nice E-Book and an update on PowerShell Support in Office 365

Microsoft released Office 365 to General Availability at the end of June 2011. It’s been a couple of months since that happened and I’ve just noticed two things.

First my good friend Katherine Murray has released a free eBook from Microsoft Press. You can find details of the book here. And to download the book, just click here. The book is 299 pages long and covers the full set of features contained in the shipping version of Office 365. One small omission, IMHO, is that there is no coverage of PowerShell for administering Office 365. Having said that, MS Press have indicated that updates to the book “will become available in the future” – so perhaps we’ll see more PowerShell Coverage soon. Having said that, the book looks complete and I am keen to work though the contents learning a bit more about, in particular, SharePoint! Good job Kathleen.

Following on from that, the announcement of the book encouraged me to look again at the use of PowerShell in Office 365. Frankly, I’m somewhat disappointed – the situation hasn’t really changed since I wrote about it in April. At present there is support for a set of general Office 365 cmdlets, which my good friend Jan Engil Ring has described in his blog here. As you can see from that blog post, you can download the Microsoft Online Services module from Microsoft as either 32-bit or 64-bit. There is also support for Exchange online – the code I used my April blog post still works just fine – and gives you 229 cmdlets to manage Exchange online.

Sadly, there is no PowerShell support for either SharePoint Online or Lync Online. IMHO, this is just another indication that Office 365 shipped before it' was really ready. Hopefully we’ll see these cmdlets emerge soon – but there is nothing official other than they ‘will come later’.

In summary, Office 365 is maturing, with some good documentation and some limited PowerShell support. With a bit of luck, the additional PowerShell cmdlets and support will come sooner rather than later – I’ll be sure to blog when I find it!!

Technorati Tags: ,

Tuesday, September 06, 2011

Build Conference Getting Closer

The build up (forgive the pun) to the Build conference is slow but relentless. For those not in the know, Build is Microsoft’s upcoming developers conference around Windows 8, the next version of Microsoft’s Desktop (and Server) operating system. Although due out till 2012, until recently details of what’s coming have been scarce.

As I’ve blogged previously, Microsoft is slowly releasing details of what will make it into Windows 8, albeit in a verbose and rather opaque fashion (not dissimilar to how they handled Windows 7). The Build conference is intended to be where Microsoft open the Kimono, but if the current agenda (http://www.buildwindows.com/Agenda) is anything to go by, details in Anaheim will be thin. We’ll have to see, although having taken millions in conference fees, it’s rather sad that Microsoft can’t be a little more open about who’s speaking, when, and about what.

Microsoft has also been blogging about the contents of Windows 8 at http://blogs.msdn.com/b/b8/. There’s a very low signal to word ratio – lots of words, but not a lot of meat yet. The blog claims to be a dialogue, but so far, it’s been a monolog. Each blog post has generated a LOT of comments (the Improvements in Windows Explorer article, for example, has generated 1175 comments thus far!). But the number of responses is low – which I suppose is to be expected given all the comments. Also, given the blog engine being used, it’s really hard to see any thread/conversation. The comments are all sequential. I also note that some comments are being deleted – I’ve posted two comments that have somehow vanished.

Build should be a good event – for me at least it’ll be a chance to socialise with a bunch of friends. And given how cold and wet England is this year, a little south California sunshine is most welcome!

See you at Build!

Monday, August 22, 2011

PowerShell PowerCamp–November 5/6–Bookings Now Open

What is it?

This fast paced weekend event covers all the key aspects of Windows PowerShell - from the command line and writing production-oriented scripts. We start with the basics including installation and configuration, formatting and providers and remoting. We then look at scripting, managing script libraries using modules, using objects, and finishing with the PowerShell features added into Windows. We finish with a look at PowerShell in the cloud and what’s coming with PowerShell 3.
The event will be all lecture, with the opportunity to type along with the tutor.

What is the Agenda?
Day 1 – The Basics
• PowerShell Fundamentals – starting with the key elements of PowerShell (Cmdlets, Objects and the Pipeline) plus installation, setup, and profiles
• Discovery – finding your way and learning how to discover more
• Formatting – how to format output nicely – both by default and using hash tables and display XML
• Remoting – working with remote systems using PowerShell’s remoting capabilities
• Providers – getting into OS data stores via PSProviders
Day 2 – Diving Deeper
• Scripting Concepts – automating everyday tasks including PowerShell’s language constructs, error handling and debugging (both from the command line and using an IDE)
• Modules – managing PowerShell script libraries in the enterprise
• .NET/WMI/COM Objects – working with native objects
• PowerShell and Windows Client/Server – how you can use built in PowerShell cmdlets
• PowerShell in Key Microsoft Servers - a look at PowerShell today in SQL, SCVMM plus a look forward to the future with SharePoint 2010
• PowerShell and the cloud – this module looks at PowerShell in the cloud and how you can use PowerShell to manage cloud computing.
• PowerShell 3 – this final module will show you what’s new in PowerShell V3, based on the the latest Beta of Windows 8.

What will it cost?
The cost is £200 (+VAT at the prevailing rate) for the weekend. Meals and accommodation are not covered.

Where is the event going to take place?
The PowerShell PowerCamp will be held at Microsoft Cardinal Place, 100 Victoria Street in Victoria on the weekend of November 5/6 2011.

Who is the tutor?
The PowerShell Weekend PowerCamp will be delivered by Thomas Lee. Thomas is a veteran PowerShell MVP who has been involved in the PowerShell community since the very beginning. He provides training and consultancy around a range of Microsoft products, with a recent focus on PowerShell and Lync Server. Thomas runs PowerShell training courses around the world, and has been a speaker at conferences across the world for the past decade. In his spare time, he lives with his wife, daughter, and wine cellar in a small cottage in the UK. His Twitter handle is DoctorDNS and he maintains two blogs (Under the Stairs at http://tfl09.blogspot.com and PowerShell Scripts Blog at http://pshscripts.blogspot.com)

What do I need to bring
You need to bring a laptop with at least two VMs pre-configured. The first should be a Server 2008 R2 domain controller and the other one a member server. And if you have access to the Windows 8 beta, bring along a Win8 VM for the look at PowerShell V3. The virtualisation software is not of concern – but you need 64-bit guest OS support. Thus you can use Hyper-V, VMware Workstation or Oracle’s Virtual Box.

How do I book?
Contact DoctorDNS@Gmail.com to book a place and to arrange for the invoice to be paid. Payment will need to be cash, cheque or bank transfer – I don’t take credit cards.

More Details
Watch Thomas’s blog for any hot breaking news on the event.

Friday, August 19, 2011

If they BUILD it, will they come?

That question comes from Field of Dreams, a movie in which Kevin Costner builds a US baseball and attracts the Black Socks. In my experience, though, the answer to the question is usually only true in movies – in real life, just building something is often not enough – it often takes a lot of effort and costs a lot to attract your audience. But not always – as Microsoft’s demonstrated with their BUILD conference being held in Anaheim in September.  I wrote about this conference last week in an article in Pacific IT News where I’m writing a series of articles about BUILD.

In this case, the answer is a resounding YES. BUILD is sold out, despite the economy and the utter lack of details about the conference. This is quite surprising and perhaps positive in terms of developers. It’s all part of Microsoft’s marketing approach for Windows 8.

The BUILD conference is taking place in Anaheim California on 13-16 September. You can see what details exist about the show at: http://www.buildwindows.com/. BUILD will be the first time most developers and many hardware developers will get a chance to see and hear about Windows 8.

In earlier versions of Windows, Microsoft had a long beta programme and took input from beta testers. I recall fondly the NNT 5.0 beta period of several years. And for those with longer memories, the Win95 beta programme featured near-weekly releases to test.

With Windows 8, all that openness is a thing of the past – just like Windows 7, we have the ‘cone of silence.’ MS staff are under significant pressure to reveal nothing – as recently as February key staff were even forbidden to say the words ‘Windows 8′ or to even hint at what might or might not be included. And leaked builds were not as common place as during the XP or Vista days, although in preparing for this article it took me around 3 hours to find and download what appears to be a legitimate leaked build. In earlier generations of Windows, beta testers were more involved and the beta test process longer. With Windows 7 and now Windows 8, that’s a thing of the past. It appears likely we’ll have just one real beta release sometime soonish, with the probability of a single RC nearer to RTM.

So why do IT Pros care about BUILD in the first place. IT Pros should care because BUILD is where MS will let you see what will be coming in Windows 8. Unlike earlier versions of Windows, what you see released of BUILD will pretty much be what we all get as Windows 8 when that is finally released. So if you or your organisation is running earlier versions of Windows, particularly Windows 2000 and XP, Windows 8 is most likely your future. On current timescales, Win 8 will almost certainly be released before XP mainstream support ends. Given the ascendency of Google with Android and Apple with iPad and iPhone, Windows 8 may be Microsoft’s most important version of Windows to date. It could become a game changer. Ballmer is right to be nervous about Windows 8.

What’s IN Windows 8? That is a great question – and one I really can’t answer. Anyone who does know what is in Windows 8 will  be under a pretty draconian NDA – and I would bet MS will be pretty fierce on those who break the NDA. Speaking personally, I do not want to have MS’s lawyers on my case! Personally, I think this approach is poor, but it’s the way MS has chosen to go. We do know a little about Win 8, but BUILD is where we’ll see some semblance of the final product. Of course, given the development approach being taken, what we see at BUILD will pretty much BE what Windows 8 will be – it’s too late in the cycle to do much other than cosmetic stuff. Sadly, gone are the days when beta testers mattered to the Windows development team.

As part of a very carefully crafted disclosure approach, we know that the UI will be, at least partly, based on the Windows Phone tile UI as disclosed by Julie Larson Greene (http://www.microsoft.com/presspass/features/2011/jun11/06-01corporatenews.aspx). You’ve no doubt have seen the demos by now.

We also know MS are planing to deliver one version of Windows 8 across phone, tablet, desktop and server. That approach has caused some raised eyebrows and seems to generate more questions than answers. Quite how MS will get the bloat that is Windows to fit into a phone and tablet without poor battery life is an interesting question. We also know that at the Partner Conference, MS announced windows 8 would include some improvements in Hyper-V. But beyond that details are sketchy. From the looks of it, Hyper-V may be part of Windows 8 clients as well as for the server.

While industry reaction is understated so far, some critics are positive on the potential benefits, but well, critical on other points. Jon Honeyball, for example, raises some interesting questions in a recent blog article http://www.pcpro.co.uk/featu res/367813/windows-8-could-i t-be-more-than-lipstick-on-a –pig

I imagine, as a PowerShell MVP, that we’ll see a new version of PowerShell – but what that consists of is still highly secret. We’ll also probably see improvements in Windows Server for the cloud -  but details thus far are pretty minimal. There have been a few leaked builds – but a lot less than in previous years. I’m pretty certain that torrent sites will quickly have any builds handed out at BUILD – and I’d hope that MSDN subscribers will also be able to download those builds at the same time.

One more positive thing, the Windows Team have begun their official Win 8 engineering blog, also known as the Building Windows 8 blog. The first article, http://blogs.msdn.com/b/b8/archive/2011/08/15/welcome-to-building-windows-8.aspx written by Steve Sinofsky, sets out the aims of the blog. In this 1200+ word article, no real details are given, but some promises are made. In particular: “We'll participate in a constructive dialog with you. We'll also make mistakes and admit it when we do.” It remains to be seen how much of a true dialogue this will be – I am not expecting much more than the blog being a useful monologue on what MS has chosen to do in Windows 8 and their justification of it. I doubt any mistakes will be ‘found’ or ‘admitted’. We’ll see.

BUILD is just a few weeks away and I’ve got flights and hotel booked. If you’ll be there, please add a comment to this article and let’s meet up – I’d love to hear your views.

 

Technorati Tags: ,