Sunday, April 17, 2011

Microsoft’s CloudPro Twitter Hour

As I posted last week, on Friday, Microsoft has an hour long twitter conversation around the cloud. The basic idea was that Microsoft and a few MVPs (I was one) would hang out on Twitter, and answer questions around the cloud and the cloud technologies. The hour came and went – and it was an interesting experiment, which I hope Microsoft will continue with. I lost count of the number of tweets but it was around 150 for the hour. The questions came from a range of sources. I do have the source data (well everything I captured and want to make a CSV file from it – give me a bit of time to write the PowerShell scripts to do it .

As I read through my notes, the following items were discussed:

  1. What is the cloud and what are the economics of the cloud and what’s there and not there. The answers were predictable – some definitions of what the cloud was (and the need for public cloud vs. private cloud). Lower cost was seen a key driver if not the key driver.
  2. Security in the cloud - both in general and with respect to US Patriot act. The architecture provides good provision against most risks and there is an SLA with financial penalties. And Simon May provided a great link to an article around hosted data and exposure to the Patriot act (see http://bit.ly/fj5BbE). It goes some ways to addressing the concerns.
  3. Office 365 - now that it's in more public beta, there's more interest for sure. The questions looked at what features were there and a couple of things learned so far (e.g. no PowerShell cmdlets for SharePoint Online or Lync Online!).
  4. Training and the Future of the IT Pro. It’s clear, to me at least, that the IT Pro does not go away in this drive to the cloud. There continues to be work to be done to facilitate the cloud – IT Pros do not have to worry too much just yet. As for training, well this needs to evolve and training providers need to evolve too.

I understand from talking to the organisers that another event like this is being planned. What did you think? Comments please!

Saturday, April 16, 2011

Getting Started with Office 365

It’s been an interesting week. After months of waiting, I managed to finally get myself onto the beta of Office 365. Office 365 is Microsoft’s latest software as a service offering, which is currently in beta. It consists of Office, Lync, Exchange and SharePoint. The latter three are hosted services where you use a client to access the hosted resources; Office can be consumed either locally (with cloud based document storage), of via the Office web apps (i.e. office in the browser).
It’s taken a few days to get myself up an running, but that’s mainly lack of time! While the setup and installation was simple, I’m still getting to grips with the basics and with working around some of the initial issues. The basic opinion so far is highly positive.
For me, the office component of Office offers little advantage to me – although the cost is highly attractive. I’ve always used Office (i.e. Word, Excel, PowerPoint) locally anyway – and have enough computing power to always run local clients. But I can see how attractive this might be for many small businesses (and not a few bigger ones too).
The basic signup process was simple – a few web pages and the Office 365 account was created, and I was able to logon to the main portal, which looks like this:
SNAGHTML8d126a
From this portal page, you can do all the tenant management actions along the panel on the left, and configure the services with the middle panel. Along the centre top and right hand side is simple help and access to help resources. All in all, a simple and clean interface into Office 365. Setting up the individual services was relatively straightforward, but if you are going to get value out of SharePoint, you have to know SharePoint a whole lot better than I do at present.
The Office 365 Exchange part – well it’s just a hosted Exchange server. The speed is good – it’s really very much what I’d have expected. It does have PowerShell Cmdlets. To get to these is very simple, as follows:

# First Get credential for site
$cred = Get-Credential 
tfl@yourOffice365domain.onmicrosoft.com
# Next create a new PS Session
# Use a hash table to setup parameters to new-pssession
$Office365 = @{ ConfigurationName = "Microsoft.Exchange"
                Connectionuri     = "
Https://ps.outlook.com/powershell"
                Credential        = $cred
                Authentication    = "Basic" 
                AllowRedirection  = $true}

$s = New-PsSession @Office365        
# Note: you see the session being redirected to your site
# Next Import the remote session
$Results = Import-PsSession $s
# And away you go. Here are some things to try:
# How many cmdlets returned?
$Results.ExportedFunctions.count
 
# What mailbox cmdlets do we have gcm *.Mailbox
# Get mail boxes and statistics
Get-Mailbox
Get-Mailbox | Get-MailBoxStatistics
It’s all quite straightforward although the remoting aspect of this means it breaks PowerShell’s Get-Help at least to some degree. The remote session to the server is very much limited (don’t enter the PSSession – even exit is disallowed!). You run all the cmdlets from the local PowerShell console. I’ve not seen PowerShell cmdlets for SharePoint or Lync yet, but I expect they will work in a very similar manner. One further thing you appear NOT able to do is run New-Mailbox to create mailboxes. At least, I’ve not managed to. The documentation does not specifically mention creation of mailboxes by PowerShell, but that may be an oversight or just documentation in production. I’ve got a test script that fails – which is a by product of the restricted session configuration object being used (Microsoft.Exchange).
SharePoint is not a product I know all that well yet. I can use it in a basic way, but I’ve got no real experience either managing or designing SharePoint sites. With Office 365 you get a single ‘vanity’ domain (i.e. Internet facing), as with BPOS, which is nice. I can see small businesses wanting to use this for their ‘shop front’. Ad of course, you get lots more available ‘inside’ your organisation. I definitely need to work more with this, but it looks like a good implementation. Shame their cmdlets are not be available yet. I would hope that Microsoft would ensure these are working before sending Office 365 to the masses, but we may not be that lucky.
Lync was a doddle to install – just download and run the client, login and away you go. In my case, it was marginally more complex to logon as my domain account is a pure local account, separate from the Office 365 account. But with a tad more typing, I was logged in. Enabling Federation was simple, but turns out there are two big gotchas that I came across.
1. First, “Public Internet Connectivity” only  includes Microsoft’s Live Messenger (aka MSN messenger) – AOL and Yahoo are not enabled and so far as I can tell there is no XMPP gateway features either. So that means no XMPP federation with Google, etc. And the time it takes to get federated even to MSN is slow – It’s been two days now and I’m still waiting to  be able to access Live Messenger users. Fuller PIC federation would have been nice.
2. Second, Open Federation does not  work initially with existing Lync customers until they do additional work on their Edge architecture. While you can indeed open federate from your Office 365 account, and you can get it to work, if you try to federate with any partner that has on-premise Lync, it initially fails. They need to do some more configuration to enable a new hosting provider. My good pal Tom Arbuthnot pointed me to a great post from my other old buddy Russ Kaufmann that some how I’d missed. Basically, if you are running on-premise Lync, Office 365 appears as a hosting provider, and your account there does not appear to be just another open federated domain.  Russ argues that this is because Microsoft “doesn’t seem to know how to implement their own product”. He might think that, but I couldn’t possibly comment. The good news is that Russ has a fix which is to run New-CSHostingProvider to add a new service entry for Lync Online. See http://infrastructurehelp.wordpress.com/2011/03/15/office-365a-serious-flaw-with-lync/ for the details and Russ’s views.
I would have hoped that this is just a ‘feature’ of the beta, and gets fixed for RTM. Russ is right that I, as a hosting tenant, should have my domain treated for open federation just like any other domain, and not hindered by virtue of being hosted at Microsoft. If I, as an Office 365 Lync On=Line user, want to federate with someone that has enabled open federation, I should be able to do that without more admin work on their part. 
But now that we know that, I can just get all my contacts to open up their edge servers and we can move past it. As I said, I hope MS can fix this by RTM, as I tend to agree with Russ! But then I usually agree with Russ!
The other components of Lync Online, like conferencing and peer-peer audio seem find. Once Tom and I got his Edge server sorted out, we were able to IM, he’s in my contacts list and I can see presence. We tested peer-peer IM, audio and desktop sharing. It all worked as it’s supposed to. The audio quality, once I got my mike plugged in correctly, was excellent. We did not test video only due to lack of camera at my end. I will be testing this during the week.Sadly, like SharePoint Online, I can’t find any cmdlets yet for Lync Online.
All in all, Office 365 looks like compelling. The price plans (a subject for another blog post!) look very interesting. I am almost certainly going to move a secondary domain onto it and use it to learn more about the suite.  I’ll be writing more in the coming weeks, particularly with more details on the PowerShell cmdlets for Lync and SharePoint once I get hold of them.
And if you fancy trying things out, you can get me, at least for now, on Lync as:
tfl@cookham.onmicrosoft.com. Feel free to IM me and help me test this out!

Wednesday, April 13, 2011

IT Pro Cloud Hour–Friday 15 April

The cloud, and all it’s variations, is one of the more fundamental paradigm shifts of modern times, at least as far as IT id concerned – perhaps as fundamental as the arrival of the Internet itself. As a way of advancing IT Pro’s understanding of the cloud, Microsoft is running an interesting event this coming Friday, April 15 from 12:00 to 13:00 (local time): IT Pro Cloud Question hour. This hour will be conducted on line via Twitter.

The way this is meant to work is pretty simple: to ask any Cloud related question, post your question to twitter and add the hash tag #cloudpro to your tween. Alternatively, you can text your question from you phone – text to 80809 or even send the question by mail to ukitpro@microsoft.com. During the hour, a team of Microsoft and MVPs will be watching the questions and tweeting answers. Watch for @AskTechNetUK where at least some of the answers are going to come from (I suspect these will be MS staff) – others like me will be posting under our own twitter IDs, but still using the #Cloudpro hash tag.

For more information on this event and to learn more about the cloud, see: http://technet.microsoft.com/en-gb/gg710912.

Technorati Tags: ,,

Saturday, April 02, 2011

Call for assistance–Powershell Notes From The Field (NFTF)

I am currently hard at work writing a book on PowerShell to be published this autumn. I’m extremely fortunate to have three very talented and skilled co-authors Karl Mitchke, Mark Schill and Tome Tanasovski and a good editor in Marco Shaw. These names should be familiar to many on the PowerShell community – we are all MVPs, some of us have been around since the very beginning of the journey!).  I can’t say too much more about the book just yet, but watch this space for more details. It should prove to be a pretty good book!

The final chapter of this book is Notes From The Field. This is my chapter, and what I want to is to showcase some of the great, interesting and fun things you’ve all done with PowerShell. The chapter is aimed at showing PowerShell’s incredible awesomeness. I’m look for anything, including gotchas, that you find noteworthy. What I’d like is something like 10-15 separate stories each 400-500 preferably with samples or examples I can either include (if they are not too long) or point to  a URL for a longer script which might be appropriate in some cases).

To give you an idea, I’ve already written one NFTF example – which is my use of PowerShell to manage my collection of over 2000 Grateful Dead And Jerry Garcia live show recordings. Not everyone’s cup of tea, perhaps, but PowerShell has sure helped me to manage this vast collection – and I’ve written several simple one-liners to do specific things with the collection as well as longer scripts to do richer things.

‘What does this pay’, I hear you ask. Well, given the state of book publishing, I can’t offer very much – a beverage of your choice (and more if you submit several suggestions!) the next time we meet. If the publisher is amenable, I can possibly even get you a copy of the final book (but I can’t guarantee how generous the publisher will be so this may not be possible – I’m not even sure how many copies I am getting!).

I can certainly offer you any Grateful Dead or Jerry Garcia Band show of your choice from my collection – send me a memorable date in the time period 1965-1995 and if Jerry or the Boys played that day, I can send you the show in a format of your choice. Did you ever go a Dead/Jerry show and enjoy yourself - if so, I can provide a copy of it assuming I've got it!!I can certainly put your name in print and ensure I think you in the preface!!

If you are interested, then I’ll need your piece by 1 May 2011, and preferably earlier. Once I get it, I’ll run it through the template, and doing some minor updates to ensure style consistency. Once I’ve completed an edit pass, I’ll send you back what I have for your approval. I’ve got to complete this by the beginning of June, so time is of the essence.  

Please contact me at DoctorDns {at} Gmail {dot} com. I’d be most appreciative of a response!

Sunday, March 20, 2011

London PowerCamp is Over – Roll on York

The 2-day PowerShell Power camp is over. The room’s empty and I’ve left the house (and I am home!). A very long two days, but very productive, at least as far as I can tell! Twelve folks took the challenge to give a weekend and jump into the fast flowing fire hose - and made it all the way through. The PowerCamp was promoted via social media – unlike traditional training. The delegates all self-selected and learned about the event via Twitter, Facebook, etc. There were no corporate clients telling their employees to attend. And there was no vendor paying for the class. The delegates all had to give up a weekend – which is always a real challenge these days. So well done group for making it through the weekend!

The objective was to cover as much of PowerShell as possible in 2 days. And we covered a lot!! We had a special guest today, super-star James O’Neill who did a fantastic job augmenting my solo performance discussing not only his most excellent PowerShell module for Hyper-V, but also sharing what he has learned about PowerShell as a result. In some areas we may not agree – the disagreements make great food for thought. Personally, I really enjoyed the session and I am pretty sure all the delegates did too. Those of you attending the PowerShell deep dive in Las Vegas will be delighted with James’s talk there!

This style of training is not for everyone. There are people who learn better by lots of hands on – they need the structure of formal labs and time to play (which in turn requires powerful PCs, plus the setup time and effort necessary). But many experienced IT Pros can learn by listening and watching (and of course developers can to this too although this was not a developer focused event). They learn enough to move them on to the next level and gain the motivation them to do so. They also learn about the excellent PowerShell community and how to take advantage of it. The outstanding qualities of the PowerShell community never ceases to amaze me.

Ultimately, mastering any subject takes practice and that practice has to be on the job. But in two days we covered enough for the delegates to know and see the potential of PowerShell, learn enough of the syntax to move beyond the minutiae of the PowerShell language, and most important, for them to get more excited about PowerShell. One delegate came with a problem he hoped to solve – he goes away (well hopefully!!) knowing the problem is solvable and broadly how to do it. Another spent all of last evening working through the things we covered, and I suspect will do the same tonight.

This training also does not eat into the revenue of my training company clients. Folks that self select and pay a modest amount for 2 days of weekend training are highly unlikely to pay to come on a 5 day 'official’ training course. ALL the delegates this weekend had day jobs that probably precluded them taking that much time off. Neither were they going to pay the ‘official course’ price (and the expenses involved). And the income amounts were sufficiently small that most big training company sales folks would just not bother with pushing (their commission against the low rates I charged just doesn’t make sense). I sure get that.

One cool thing, those very very nice people from Idera and Quest were kind enough to let me give away copies of their PowerShell software. The delegates really appreciated the very kind offer – so a dozen more PowerGui Pro and PowerShell plus users!!!

But at the end of the day, we have a dozen folks who leave with a much greater enthusiasm for PowerShell, equipped to learn more on their own and excited about the potential for PowerShell in their jobs. What a result! It really makes all the work involved worth it.

I’ve now got a couple of days off before heading up to York to do another PowerCamp. There’s still room, if you want to attend. So come along, bring your thoughts, problems, concerns along and I’ll do what I can to make you as excited as this weekend’s group was! York is very central to a lot of key Northern cities, and the transport to/from the event is pretty easy. We’re out to the east of York city at the wonderful University of York. I know it’s a lot to ask you to give up a weekend, but why not – you’ll certainly leave knowing a LOT more about PowerShell!!!

Friday, March 18, 2011

It Was The Night Before PowerCamp…

And all through the house,
Not a creature was stirring,
Not even my mouse.

Well – that’s enough corny poetry for tonight. Tomorrow, the 2-day PowerShell PowerCamp hits London. We have a dozen folks booked up for two long days covering PowerShell V2.0 fundamentals (and as much more as I can cram into 2 days).  This two-day mega-jump-start event has gained more traction than I had hoped for. By design, I’ve only publicised it via social media – via Twitter, my blog, and a few other most welcome retweets, plus Microsoft kindly posted a couple of blog entries. I’m not sure I can boast that this is the first ever social media promoted course, or even the first social media promoted PowerShell course. But it is the first I’ve done, and it’s been exciting. For those of you coming – see you there.

What’s more exciting is that we’re taking this to York next week where we have both a great audience already, and room for more. If you’re serious about getting a jump start into PowerShell, come along. Let me know if you’d like to book a place!

Thursday, February 24, 2011

London Weekend PowerShell PowerCamp – March 19-20 2011

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. 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

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 March 19-20, 2010.

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. 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, February 18, 2011

PowerShell on my iPhone

I recently got a new iPhone 4 16GB, courtesy of American Express (a long story!) and have been slowly making the transition from my HTC Desire Android (a nice phone) to the iPhone. There are some observations I’ll leave for another day – but let’s just say that the iPhone is not perfect and the Desire/Android is worth competitor.

One neat thing I have found in my search for applications for the new phone is iPowerShell V2, built by Sapien. iPowerShell is neat reference tool for users of Microsoft’s PowerShell, for use on the iPhone or iPod Touch. It contains full descriptions of all the core PowerShell Version 2 cmdlets, their syntax, parameters and examples of proper usage. It also contains the complete set of “about item” help topics as well as provider and alias help.

I’ve not yet found a way to extend it (i.e. to add or modify the contents, but I find it useful to dip into and out of. I particularly like browsing the about_* files using iPowerShell.

Here’s a screen shot of the application:

image

Thursday, February 17, 2011

IPv4 X-Day Arrived–No One Died

At a ceremony held on 3 February, 2011 the Internet Assigned Numbers Authority (IANA) allocated the remaining last five /8s of IPv4 address space to the Regional Internet Registries (RIRs) in accordance with the Global Policy for the Allocation of the Remaining IPv4 Address Space. Each /8 contains a total of 2^24 addresses, although depending on how the /8 blocks get subnetted, the actual amount of usable IPv4 addresses would be lower.

So after 30 years or thereabouts, the free pool of available IPv4 addresses is fully depleted from a global perspective, that is, IANA has no more. The individual RIRs of course still have address block to give out as do individual ISPs. There are companies with /8 block (e.g. HP that has the original DEC 16.0.0.0) that might be persuaded to give some of all of their /8 blocks back either to IANA or a RIR. And there are a lot of companies that have smaller allocations (e.g. /16, /24, etc.) that also might be persuaded. And I’m sure that ISPs and RIRs will start to be a lot more aggressive over smaller allocations. If nothing else, the cost of holding allocations is pretty likely to begin to cost more.

With better use of the now scarce resource that is IPv4 addresses, the Internet will continue to operate just fine for at least the next few years. But the writing is on the wall – IPv6 needs to happen sooner rather than later. I use Xilo as my ISP – and ever since switching to them around a year ago, IPv6 is ‘in testing’. I keep asking, but it’s still in testing.

It’s time for Xilo, and all ISPs, to ramp up and start rolling out IPv6. With the handing over of the last /8 block, IPv6 needs to be here for all of us soon. Of course, it’s not just the ISPs that need to adopt and adapt. The manufacturers of ADSL/Cable modems, Wireless access points, switches, particularly consumer grade devices, need to be upgraded to fully support IPv6.  And there probably needs to be a new protocol to do complete setup for an ISP customer (configuring not only the individual hosts, but also the router itself.  Not sure DHCPv6 is quite enough. A PowerShell module perhaps?

So start asking your ISP, your hardware manufacturer and your corporate IT department: when do you support IPv6? And start learning more about IPv6.

Technorati Tags: ,

Wednesday, February 16, 2011

Weekend PowerShell PowerCamp–York UK

I’ve written (and tweeted) in the past about my weekend PowerShell PowerCamps. Now have two more on the schedule and ready to book. These two will be held in York, at the University of York. A great venue easily accessible from much of the north east (Newcastle down to Leeds), the North West (Manchester and Liverpool) and the north Midlands. And for those farther afield, the organisers will have a great B&B offer, plus we’ll have dinner on the Saturday night in York.

This event will be, as the web site promises, fast paced!  I’ll be covering the basics of PowerShell, from the fundamentals at the command line through to writing production oriented scripts. On the first day, we start with topics including installation and configuration, formatting, providers and PowerShell remoting. On day 2, we look at scripting, modules, a deeper dive into objects and a quick lap around the PowerShell features included in Windows Server 2008 R2.

You should come along with a laptop with either Windows 7 and Server 2008 R2 loaded (in a virtual environment). The virtualisation product you use is irrelevant – you can use VMware, Oracle Virtual Box, Hyper-V, etc. You should, however, have at least two VMs (a DC and a ‘client’) so you can investigate PowerShell features as we cover them in the class. If you don’t have a MSDN or TechNet subscription to get the DVDs for these OSs, you download the trial versions for the class. See here for Windows 7 and see here for Server 2008 R2 X64. I’ll be running Server 2008 R2 with Hyper-V plus a number of VMs to conduct the demos – so be sure to bring along your laptop all setup. We will not be providing computers for you – so please come prepared (and contact me if you have any concerns).

There are two dates currently scheduled in York: 26 March 2011 and 18 June 2010. Both are to be held at the University of York. See the web site for more details of costs and to book.

And for those hoping for more information about PowerCamp in London – watch this space! News should be available this week.

Technorati Tags: ,,

Monday, February 14, 2011

Lync PowerShell Blog–A Challenge For You!

The folks behind the Lync Server 2010 PowerShell blog have another fun wheeze on: The PowerShell Challenge. The idea of this contest is simple: each week, the Blog team present 4 things and you need to figure out which is The Odd One Out (or as they put it, One Of These Things Is Not Like The Others).  You can read up on the rules here.

The PowerShell challenge has been going for a few weeks, and there are still 4 folks with perfect scores (naturally, I am one of those). But you can still join in the fun and compete in this week’s contest. Who knows, the top runners might have a bad week and you could end up winning the competition. But it’s not whether you win or lose – I am finding this contest very useful in helping me to get better familiar with the Cmdlets.

To see a summary of the past challenges (and answers), plus this weeks’ challenge, see: http://blogs.technet.com/b/csps/p/otherschallengearchive.aspx.

 

Wednesday, February 09, 2011

Formatting of Repeating Groups in PowerShell–Two Neat Tricks

When you use Format-Table to create a table from a pipeline/variable, you’ll find that PowerShell truncates the output of a column. Here’s a simple example

 

PSH [C:\foo]: Get-Process | Group company | Sort count | Select –Last 2 | Format-Table

Count Name                       Group
----- ----                       -----
   18 Microsoft Corporation     {System.Diagnostics.Process (conhost), ...
   51                           {System.Diagnostics.Process (ApMsgFwd),...

 

As you can see, PowerShell has truncated the Group colum to just show one member of the group. Note that ’ve deliberately truncated the width of the console to produce this output to avoid Blogger from ‘helpfully’ wrapping the column when you read this post – if you try the pipeline you’ll likely see a few more.

Here’s the first neat tric: To get more output you can use the –wrap parameter on the call to format Table

PSH [C:\foo]: Get-Process | Group Company | Sort Count | Select –Last 2 | Ft -wrap


Count Name                      Group
----- ----                      -----
   19 Microsoft Corporation     {System.Diagnostics.Process (conhost), System.Dia
                                gnostics.Process (conhost), System.Diagnostics.Pr
                                ocess (conhost), System.Diagnostics.Process (dwm)
                                ...}
   51                           {System.Diagnostics.Process (ApMsgFwd), System.Di
                                agnostics.Process (audiodg), System.Diagnostics.P
                                rocess (csrss), System.Diagnostics.Process (csrss

Now this better, but this still truncates the group to just 4 entries. What if you want to see more? To to that, and here’s the second neat trick, you need to set a preference variable, FormatEnumerationLimit. You set this variable to the number of group entries you want to see. By default PowerShell sets this to 4. If you set it higher, you will see something like this:

 

PSH [C:\foo]: $FormatEnumerationLimit = 10

PSH [C:\foo]: get-Process | group company | sort count | select -last 2 | ft -wrap


Count Name                      Group
----- ----                      -----
   19 Microsoft Corporation     {System.Diagnostics.Process (conhost), System.Dia
                                gnostics.Process (conhost), System.Diagnostics.Pr
                                ocess (conhost), System.Diagnostics.Process (dwm)
                                , System.Diagnostics.Process (explorer), System.D
                                iagnostics.Process (explorer), System.Diagnostics
                                .Process (ielowutil), System.Diagnostics.Process
                                (msnmsgr), System.Diagnostics.Process (msseces),
                                System.Diagnostics.Process (OUTLOOK)...}
   51                           {System.Diagnostics.Process (ApMsgFwd), System.Di
                                agnostics.Process (audiodg), System.Diagnostics.P
                                rocess (csrss), System.Diagnostics.Process (csrss
                                ), System.Diagnostics.Process (Idle), System.Diag
                                nostics.Process (inetinfo), System.Diagnostics.Pr
                                ocess (lsass), System.Diagnostics.Process (lsm),
                                System.Diagnostics.Process (MDM), System.Diagnost
                                ics.Process (mqsvc)...}

In this case, you new see 10 members of the group and not the default of 5. Were you to set $FormatEnumerationLimit to, say, 1000, then you would see up to 1000 entries. If you look at the variable (Get-Variable FormatEnumerationLimit | FL *), the description of this variable says: “Dictates the limit of enumeration on formatting IEnumerable objects”. This is a 32-bit integer so you could set it higher than 1000, although that's probably a bit OTT. Setting it to say 100 in your profile is probably good enough for most things.

Thanks to Alexandar for pointing me to this preference variable. For more information on this and the other PowerShell prefernce variables, you can get-help on about_perferencevariables.

Monday, February 07, 2011

PowerShell Master Class Returns to Stockholm–March 8-10 2011

I’ve just had confirmation from Lab Center that I’ll be running another Introduction to PowerShell master class event in Stockholm on March 8-10.

Lab Center is one of the best training centres that I’ve had the privilege to work with – and given the great folks I hang out with these days, that’s saying something. The centre is in downtown Stockholm just 10 minutes walk from the central train statin and 2 minutes stroll from the nearest T-Banna station

The agenda for the lab is as follows:

Day 1 – The Basics

  • PowerShell Fundamentals – the key elements of PowerShell plus installation, setup, and profiles
  • Discovery – finding your way and learning how to discover more
  • Formatting – how to format output nicely
  • Remoting – working with remote systems
  • Providers – getting into OS data stores

Day 2 – Diving Deep in to Scripting

  • Scripting Concepts – automating everyday tasks including language constructs, error handling and debugging
  • Modules – managing PowerShell in the enterprise
  • .NET/WMI/COM Objects – working with objects

Day 3 – Practical PowerShell

  • 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
  • Taking it to the Next Level – the stuff we can’t cover in these three days.

 

We’ve got a nearly full class – but there’s always room for on e more. So if you fancy Stockholm in the early spring along with as much PowerShell as your head can handle – book today. I hope to see you there…

Sunday, January 30, 2011

Creating PSDrives for Modules

In my PowerShell training, I spend time examining modules and how you can use them to manage code and avoid profile bloat. In the (forgive the pun) modules on modules, I do lots of demos where being able to quickly set your location to the personal or system modules folder is useful. One simple way I demonstrate is to create PS drives pointing to the folders. I do this as follows:

# First, create variables pointing to each folder
$mod       = (ls env:psmodulepath).value.split(";")[0]
$sysmod    = (ls env:psmodulepath).value.split(";")[1]

# Now create PsDrives
New-PSDrive -name mod    -root $mod     –PsProvider FileSystem | out-null
New-PSdrive -name sysmod -root $sysmod  –PsProvider FileSystem | out-null

As you can see, I first create variables corresponding to the two built in Profile folders. The PsModulePath environment variable is set to a string holding the names of these folders, delimited by a semi-colon. Once I have the $mod and $sysmod variables, I can call New-PSDrive to create the drives. The last two PowerShell statements do return a value, so to to keep the output to a minimum, I just pipe the results to out-null (although I’ll quickly point out there are other ways to avoid the output!)

Friday, January 28, 2011

Powershell WebCast–Formatting in PowerShell

As I wrote earlier this week, on Wednesday night (well night in the UK!), I delivered PowerShell.Com’s first webcast. The webcast was a huge success – we had a total of 1350 people signed up to attend. At the peak we had just over 675 users watching (about par for the course in terms of attrition!). If you were amongst those who missed any or all of the web cast, or just want to re-see part of it, the web cast itself is posted to PowerShell.com (http://powershell.com/cs/media/p/8773.aspx). I’ve also posted my slides and demo code to my website – www.reskit.net/powershell/formatting.zip.

Enjoy!

Tuesday, January 25, 2011

Webcast: Formatting with PowerShell

Tomorrow, 26 January, I’ll be presenting a web cast of formatting with PowerShell. Those kind forks at Idera, sponsors of PowerShell.Com, have organised an on-line webcast where I’ll be looking at formatting with PowerShell. As of this afternoon, over 900 folks  have signed up for the event!! The webcast is live at 18:00 GMT (19:00CET). For the US folks, that works out to 13:00 EST and earlier further west.

The webcast examines how you format output using PowerShell. It’s aimed at a 250 technical level presentation. I first look at default formatting and using Format-Table and Format-List (and Format-Wide). I’l exmine .NET Composite formatting strings and PowerShell's -F operator – these enable you to format individual values into output strings. I’ll then move gears and look at using hash tables with Format-Table and Format-List to provide more precise control over the formatting of tables. I’ll also spend time answering your questions.

To find more about the webcast, and to sign up to attend, see: https://www2.gotomeeting.com/register/626513458. I hope to see you all there!

Friday, December 24, 2010

PowerShell Jobs

I’ve just seen an interesting blog article, that shows using PowerShell Jobs to do a specific task in Forefront Identity Manager (FIM). This article was neat ins two ways.

First, even though I am not really an FIM guy, by looking at the script, I had a pretty clear idea of what the script would do. So while I am not clear on the details (just how big is a management agent, how complex is the import process, and what do I do with them anyway!), I can see what the script will do. This shows up a point I keep making to my PowerShell classes: learning a new product’s cmdllets is mainly about learning about how that product’s objects are surfaced (WMI, CMDLET, Provider, etc) and then what they are and what they are used for. The latter bits of this of course require product knowledge, outside of PowerShell.

The second thing neat about this article was how the author took a set of operations (importing several management agents into FIM). In terms of the importing, you could have written the script to not use just – just calling the script block directly  inside the loop instead of inside a separate job. This approach delivers parallelism that can speed up dramatically the time for a task to happen. But, it depends.

Each time you run a PowerShell job (whether in the ISE or console), PowerShell creates an instance of PowerShell.exe to execute the script or script block. This means that each job comes with a bit of overhead – process creation has CPU/IO/Memory requirements. But if you can run multiple tasks in separate processes, then with Window’s multiprocessing features, the jobs run in parallel and therefore a much shorter overall time. At least in theory!

As ever it depends. If the task being executed uses a lot or resources to actually execute, then having multiple tasks run in parallel therefore raises the resource utilisation. Specifically, with more than one or two ‘heavy’ tasks, you can find the system is paging heavily. This paging might actually end up slowing the execution down to the point where there the benefits of parallelisation are swept away by the paging costs.

A related issue is what I call the 3:00 wakeup test. If had to be woken up at 3:00 in the morning to have to fix this script, what would I make of it. Because the script is more complex, it might take me longer to work out what is going on (and therefore how to fix things).

So-this script illustrates something that can really improve the performance of certain tasks. But as ever it depends!

Technorati Tags: ,,

Saturday, December 11, 2010

Lync Server and PowerShell–a new forum

Over at Www.PowerShell.Com, there’s a new forum: PowerShell for Microsoft Lync Server. This is a forum where you can ask any and all your questions around using PowerShell and Lync Server 2010. As you may know, Lync Server 2010 follows in the foot steps of Exchange and other MS server applications in offering a complete PowerShell Admin experience.

For those of you who are getting into Lync, your basic administration can be done from the Lync Server Control Panel (a sliver light application that replaced the MMC console used in Office Communications Server and earlier versions of what we now call Lync. But for heavy duty admin, PowerShell, and the 543 cmdlets in the Lync Module are going to be your focus. I teach Lync in the UK and know that many of the admins I’ve taught thus far are going to struggle with PowerShell as many of them have little or no PowerShell background (with too many still living in the land where administration must mean doing it at the GUI).

So if you are getting into Lync, and are having trouble doing a specific thing – come on down. If you are a seasoned OCS admin, and a bit unsure on PowerShell – definitely come on over and ask your questions.

Friday, December 10, 2010

First PowerShell PowerCamp A Fantastic Success

Last Saturday (Dec 4th) a group of 29 hearty souls sat down at an absurdly early hour and began to experience the first ever weekend PowerShell PowerCamp. After a short intro from super-star technology writer and consultant Jon Honeyball, I took the floor and spent the rest of the guiding the attendees through PowerShell. I projected slides, did tons of demos, while the attendees typed along on their own laptops. We did take a few minutes out for coffee and lunch, but worked on into the darkness before gathering our senses and meeting for a lovely meal in a local pub. Sunday saw more of the same, with a most excellent presentation of the Managing Hyper-V with PowerShell by superstar ex-Microsoft superstar James O'Neil.

The attendees were from a variety of companies and backgrounds but all shared a desire to learn PowerShell. Unlike some of the folks I see in my general Windows courses, the PowerCamp attendees all see the value in PowerShell and also see the value, to their CVs and careers, of learning PowerShell. It’s clear that for some weekends like this are just the ticket!

Moving forward, I will be running two more PowerShell PowerCamp weekends. The next one is March 26-27 and will be held in York, England. Price and full details will be announced shortly. Watch this space!

Thursday, November 25, 2010

PowerShell Training

I’ve been doing quite a lot of PowerShell training of late for organisations big and small. The biggest organisation was Microsoft’s Hotmail team where I ran a week long class over the summer – organisations with that many servers to manage could not function as well with out PowerShell. But despite it having been around for few years, many (most?) IT Pros don’t really know PowerShell – well not yet anyway. Microsoft’s broad adoption of PowerShell has meant a lot of my customers moving over to doing things with PowerShell. This is a good thing – but there’s a lot of resistance that needs to be overcome.

As see it, organisations must acknowledge that PowerShell is here, is part of Microsoft’s Common Engineering Criteria (what every team in MS must do). PowerShell will only become more pervasive. In short, it matters. So it’s time to start learning it and adopting it as an enterprise tool.

While I can talk about PowerShell being a strategic task automation platform, IT Pros need to work with Powershell itself and the product specific cmdlet set(s). And they need to understand how to write scripts – detecting the errors that will happen, dealing with credentials, working with .NET/WMI/COM, etc. There is a bit of a learning curve here, and that’s something Microsoft can work on as they develop PowerShell Version 3 (which would be expected to ship inside the next version of windows in a couple of years).

So how do you learn PowerShell. Well – for those who are motivated there is a plethora of on-line material, ranging from blog posts, twitter references, web tutorials, free e-books, etc, etc, etc. Use your favourite search engine to mine a vast amount of content – most of it pretty good. For those who are self motivated, the internet is a good source of learning material.

If you prefer the structure of a formal class, as I know I do, then you have a number of options. Microsoft has issued two PowerShell official training courses:

Microsoft CPLSs also offer another 5-day class, PowerShell for Administrators. This is a 3 day class covering PowerShell V1.

As an alternative: I offer two 3 and 4 -day PowerShell classes: an Introduction to PowerShell class and an Advanced PowerShell Class. I find that, with PowerShell, this is enough time to get someone started. Armed with the knowledge and practice gained during those sessions, delegates begin their journey, and come back in a few months for more advanced topics like XML, database access, error handling, etc.

How you learn PowerShell is really up to you – you have options! So go on – you know it makes sense!