Sunday, September 26, 2010

With the Lync Server 2010 RC available, the details of what it will take to run Lync in production are emerging. One really nice change from OCS 2007 is that Lync is now fully supported when virtualised. With OCS 2007, only some roles were supported, although anecdotal evidence suggested OCS would work OK virtualised – the issue was more with the client.

This means that all major workloads, including presence, IM, conferencing and Enterprise Voice can be run in a virtual environment. This includes Standard and Enterprise editions. There are some restrictions on virtualisation platforms though, only VMware and Hyper-V are supported. For both virtualisation platforms, only Serve 2008 R2 is supported. And for Hyper-V, you must also run the host as Server 2008 R2. Microsoft will support virtualisations using SE to support up to around 2000 users and Enterprise Edition pools supporting up to 40k users. Edge servers can also be virtualised.

For Hype-V at least, the hosting requirements will significant: 8 Core 2.27Ghz processors with 16GB+ of ram and fast disks (particularly for your back end SQL servers). With virtualisation, your overall consolidation ratio is around 3:1 A suitably speced out host machine will support around 4 Front End servers, or 4 A/V Conferencing Servers for a user base of up to 40k users. For full functionality, you’d also want at least Directors (2 Director roles can be co-located on a single Hyper-V host) and two Edge servers (also co-located on a single VM host). You can also co-locate your Monitoring and Archiving server roles.

You can also virtualise your SQL Server back end database, but in a large Enterprise environment, you may just want to keep your back end cluster as a pair of real servers. You can of course, co-locate two SQL Server VMs on a single host to serve as your fail over back end cluster. Although this only provides resilience in the case the guest OS or applications go down!

The total level of consolidation in such a scenairo would be from around 19 servers, down to around 6 or 7 large hosts machines. You’d then need to consider your Mediation Server requirements! To some degree, the number of mediation servers required will be based on your requirements (how many PSTN ingress/egress locations do you have and what sort of gateways are you using). With Lync 2010’s Media Bypass facilities (and suitable PSTN gateways!) you could co-locate up to around 4 Mediation Servers on a single host. My guess, although I do not have the means to test it) is that you could probably support more Mediation Servers on a given host, depending on the Gateway architecture

Thursday, September 16, 2010

Lee Holme’s latest book, Windows PowerShell Cookbook (2nd Edition) has finally made it to the UK. I ordered this book as soon as O’Reilly mailed me to say it has been released. I arrived home last week and I’ve been eagerly poring over it with some enthusiasm.

This second edition is a significantly expanded work, now around 850 pages in print. There are hundreds of examples of how to use a specific aspect of PowerShell along with commentary explaining what’s going on. If you know PowerShell fairly well, there are always those nooks and crannies you’ve not explored thoroughly . I started playing today with p/invoke to get access to Win32APIs, for example, which was something I’ve been meaning to do for a while, and I also discovered a cool switch on the Add-Type cmdlet that solves a problem I’ve been having for while!

If you go to the O’Reiley catalogue page, you can order the book along with an E-book. I have the e-book on my phone for viewing and consuming when I’m on the move (a great way to spend a 2-hour flight – reading more about Powershell).

Lync Server 2010 follows a Server/Client Access License (CAL) model whereby a Lync Server 2010 license is required for each operating system environment running Lync Server 2010 and a CAL is required for each user or device accessing the Lync Server.

Pricing for Lync Server and Client – this page sets out the details of licensing for Lync Server and client. Pricing on the page is ‘estimated’ – in other words see your reseller as prices will vary from the 'official’ costs shown here.

Support

At present, there’s no formal support for Lync 2010. At present, the two places where you can find more information are Microsoft’s OCS 2007 Forums:

Microsoft presented CS14 topics at TechEd North America earlier in 2010. The presentations and slide decks are all available for download and use. These presentations talk about CS’14’ – but aside from the branding, the details are the same!

As often happens, much the industry found out about Lync Server’s public debut from non-Microsoft sources, quickly followed by the MS presentation. Here is some of the press background if you are interested.

Monday, September 13, 2010

I’ve been teaching my PowerShell Master Classes both in Europe and in the US over the past 6 months. After two classes in Stockholm, I taught in the US (teaching Microsoft’s Hotmail Engineering team), and in Copenhagen – plus a one-day session for a client in the City of London.

There are now two classes – both three days. The PowerShell Basics class covers the basics of PowerShell both from the command line and as a scripting tool. The PowerShell Advanced class looks at more advanced features of PowerShell, particularly its use in the OS, as well as key applications including SQL Server, Exchange 2010, SQL and IIS.

Thanks to May Jo Foley’s piece in ZDNet, I see Microsoft has just shipped a release candidate for Lync Server 2010. Lync, formerly known as Communications Server ‘14’ is the successor to Office Communications Server. The name, said to connect link and sync, is important in that it simplifies the branding with much shorter names for the constituent components.

Lync combines presence, instant messaging, conferencing and telephony – allowing you to simplify communications and in due course reduce the costs of running your legacy phone system. Presence enables your users to know what each other is doing thus simplifying communications. If I want to chat to someone, and I see they are in a meeting, I know the call would be wasted. Combined with presence, IM enables fast peer to peer and sometimes peer to multiple peer communication. Lync 2010’s voice capabilities should enable many companies to adopt the product as their main PBX.

The download is just over 1.5GB and contains both the Standard and Enterprise Editions of Lync 2010. In keeping with recent platform changes, this RC (and the final product in due course) ships as 64-bit only which means you need to be running a 64-bit OS (and here I recommend running Server 2008 R2!).

Over the coming weeks, I’ll blog more about the functions and features of this cool product. Not least of which is the PowerShell interface.

Saturday, September 04, 2010

I spent quite a bit of time earlier this week with a problem in calling worker functions. In a PowerShell script, or a PowerShell session, if there are a set of commands you run more than once or twice, one thing you can do is to put them into function then just call the function rather than typing out all the individual commands. Worker functions can make scripts a lot shorter. You can see an example of a worker function over here: http://pshscripts.blogspot.com/2010/09/get-umalquracalendarps1.html. In that example, you can see a worker function, DisplayValues (begins at line 45), which I then call several times in the script.

The problem I had this week was that for some reason, the worker function was spewing out nothing like what I was expecting. I started at the code for some time before spotting the problem – I’d not use the right calling process to invoke the function. A typical newbie mistake.

In .Net method calls, you state the name of the object, a “.” followed by the method name, and a parameter list enclosed in parentheses: $object.method($a, $b, $c). But a function is called without the parentheses, and the parameters are space, not comma delimited, or function $a $b $c.

To illustrate this problem, I’ve written a little script that defines a worker function then calls it several ways:

Now the first two times the script calls the worker function, PowerShell assigns the array (i.e the stuff delimited by commas) to the first parameter, leaving the second two parameters empty. Not what you want. The second two examples call the worker function correctly. Arguably the last of the calling sequence is better from a production orientated point of view.

On interesting thing – all four of those calling sequences ‘works’ and by default presents no apparent errors. However, if you set strict mode (Set-Strictmode) and setting version to 2 would warn that the first call was in error like this:

PSH [C:\foo]: . 'C:\Users\tfl\AppData\Local\Temp\Untitled5.ps1' The function or command was called as if it were a method. Parameters should be separated by spaces. For information about parameters, see the about_Parameters Help topic. At C:\Users\tfl\AppData\Local\Temp\Untitled5.ps1:8 char:4 + wf1 <<<< ("Foo",'Bar',"foobar") + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : StrictModeFunctionCallWithParens

Now had I had the relevant line set in my profile, I’d not have wasted an hour wondering why things were not working.

Thursday, September 02, 2010

Although Newspapers of the physically printed variety are dying all around us, the metaphor that is a newspaper fails to die. I’ve been playing a bit today with Paper.Li – one of those hundreds of sites that leverage Twitter and add value to your Twitter stream. I’ve created my own 'newspaper’ - http://paper.li/doctordns. This page is updated once every 24 hours and features links that Paper.Li has gleaned from my twitter feed. It’s nicely laid out and features my own tweets, plus tabs I follow. In my case, the paper also includes tweets with the hash-tag #PowerShell. I’m kind of surprised I don’t see more Grateful Dead links, but we’ll see.

The papers that you can create with Paper.Li are one of three broad types: You and your tweet stream, hash tag, @people. The first is the model I noted above – Paper.Li parses your tweet feed/stream (tweets you get from those you follow and those you make) and makes a paper. The second makes the newspaper from tweets containing a particular hash tag. For example, the PowerShell hash tag is #PowerShell, and there’s a related newspaper http://paper.li/tag/PowerShell. The @people paper is based on a list of folks you create on Twitter. http://paper.li/jkavanagh58/powershell, for example, is a paper based on @jkavanagh58’s PowerShell twitter list.