With the winter of rain, hopefully now well behind us, it’s time to look forward. Both Server 2012 R2 and Windows 8.1 now slowly pushing into organisations large and small the End of Life for Server 2003 and Windows XP are looming. Learning PowerShell is now, more than ever, something every IT Pro needs to do! While I say this ever year, it seems to me that learning PowerShell is now, more than ever, something every IT Pro needs to do! And one great way to get up to speed is via the PowerShell PowerCamp event!
Why Learn PowerShell?
I hear this question a lot – after all the GUI is so good, why bother with PowerShell? Well, for a start, PowerShell is now at the centre of Microsoft's manageability strategy. Every key component of Windows Server (and client for that matter) can be managed using PowerShell. The latest sets of cmdlets enable you do to more than ever before with PowerShell. At the end of the day, PowerShell provides reliable, robust and repeatable automation – and in these days of having to do more with less, that’s vital.
What is A PowerShell PowerCamp?
PowerCamp is a fast paced weekend training event that covers all the basic aspects of Windows PowerShell v4 - from the command line to writing production-oriented scripts. The focus is on smart IT Pros who know then need to learn PowerShell but can’t afford to take a week and take the standard Microsoft course. We package this up at a price that’s easily affordable.
On day 1, we start with the basics including configuration, formatting and providers, remoting and jobs. Then, on day 2, we look at scripting, work flows, managing script libraries using modules, WMI/CIM, using objects, and finishing with the PowerShell features added into the latest versions of Windows.
The PowerCamp event is a combination of lecture, demonstrations plus Q&A, with the opportunity to type along with the tutor. There are no formal labs. But I do provide the key demos, all the slides, plus a wealth of other add on material on a memory stick you get at the start of day 1. So bring along your laptop, and type away. I use a set of VMs to demonstrate and you can bring along ones you made earlier so as to follow along as I demo.
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. I also call out some of the new features in PowerShell V4.
• Formatting – how to format output nicely – both by default and using hash tables and display XML
• Providers – getting into underlying OS data stores (certificate store, AD, registry, etc.) via providers
• Remoting and jobs– working with jobs plus working with remote systems using PowerShell’s remoting capabilities
Day 2 – Diving Deeper
• Scripting Concepts – automating everyday tasks including PowerShell’s language constructs, error handling and debugging and workflows
• Modules – managing PowerShell script libraries in the enterprise
• WMI and CIM – we look at the WMI and CIM components, including the new CIM cmdlets
• Using .NET and COM Objects – working with native objects
• PowerShell in Windows 2012 R2 and Windows 8.1 – a look at what’s there and how you can leverage the huge number of new cmdlets
And as we go, we always have time to take your questions and to show you how to overcome your issues with PowerShell!
What does it cost?
The cost is £200 (+VAT at the prevailing rate) for the weekend. Meals and accommodation are not covered. Should you book and have to cancel, that’s fine so long as you give at least two weeks notice – I understand that plans change. Refunds after that point are not, sadly, possible.
Where is the event going to take place?
The PowerShell PowerCamp is being held at Microsoft Cardinal Place, 100 Victoria Street in Victoria on the weekend of April 26/27 2014. Each day starts promptly at 09:00 and finishes up by 16:45. We’ll also take short breaks throughout the day, including a 1-hour lunch break.
After Saturday’s session, attendees are invited to a small nearby public house for some lovely English ale, etc. The first round is on me!
Who is the tutor?
The PowerShell Weekend PowerCamp is delivered by Thomas Lee. Thomas is a veteran PowerShell evangelist 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. In his spare time, he lives with his wife, daughter, wine cellar, and Grateful Dead live recordings collection in a small cottage in the English countryside. 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 PowerShell v4 loaded. That can be either native or in a virtual machine. I suggest you have at least two VMs pre-configured – one a server 2012 R2 installation the other a Windows 8.1 installation. The virtualisation software is not of concern – but you need 64-bit guest OS support for Server 2012 R2! Thus you can use Hyper-V, VMware Workstation or Oracle’s Virtual Box. Heck, run it in a VM on a Mac or Linux PC if you want. Just bring along PowerShell v4!
How do I book?
Contact DoctorDNS@Gmail.com to book a place and to arrange for the invoice to be paid. Payment must be in cash, cheque or bank transfer – I don’t take credit cards.
Watch this blog for any hot breaking news on the event.
Ever since Microsoft introduced Live Communications Server, customers have been asking how they can virtualize the product. During the OCS years, I constantly heard requests for support for Virtualisation. But the answer remained: no support. Eventually Microsoft did the work necessary to validate fully the product in a virtual environment. The result is that, today, you can fully virtualize both the Lync server and the Lync client product. But it’s not all that simple – virtualization just adds more opportunity for problems.
While many workloads are a great fit for virtualization, Lync is a real real-time application. As such, there can be performance related issues that are not even noticeable with other workloads. These issues manifest as poor audio and video resulting in a poor service to the user.
In a recently published White Paper, Lync Server 2013 Virtualization White Paper Microsoft provides full guidance for planning a Lync Server deployment in a virtual environment. The white paper descries how to configure Lync Server 2013 in a virtual environment, including both the host and the guest VMs. Also included are the most important Key Health Indicators (KHIs) that you should watch both when performing a capacity test prior to deploying, and later during deployment.
If you are planning a Lync deployment in a virtual environment or if you want to consider virtualizing part of your existing Lync infrastructure, you really should read this paper.
One of the major changes between Lync 2010 and Lync 2013 is the integration of Lync with Windows Fabric. Windows Fabric is described as ‘a Microsoft technology used for creating highly reliable, distributable an scalable applications’. Windows Fabric is designed to enable replication of application related data across multiple application servers. These application servers work in parallel to provide fault tolerance and scalability. Windows Fabric ensures the information needed for these applications is delivered reliably to each of the necessary servers.
Lync uses Windows Fabric to move information previously held in a back end database (and hence a bottleneck) to the front end servers. This eliminates the need for each Lync Front End server to use network resources to obtain application information – it’s available locally.
In the case of Lync, this change enables better scaling as well as providing resilience (a front end server can continue to work in the case of errors elsewhere in your network). While pretty much all of the complex stuff, with respect to Windows Fabric, is done auto-magically for you, it is important to understand what it’s doing, why and some of the issues arising.
One of key issues that arises from the integration of Windows Fabric and Lync is the recommendation of always having at least three ES servers in an ES pool. See http://technet.microsoft.com/en-us/library/gg412996.aspx for the details of this limitation.
For more information on the integration of Lync 2013 and Windows Fabric, see Richard Brynsteson’s post on the Mastering Lync blog.
I’m off next week to Stockholm to deliver our sprig PowerShell Geek Week at LabCenter, Sweden’s top IT training firm. The idea of Geekweek is to both have fun and to learn more about PowerShell. Geekweek starts with a brief review of PowerShell – making sure you are fully up to speed with the fundamentals. Then we dive deep into the product showing you how you can leverage the power of PowerShell inside your organisations.
For more information about Geek Week – see the Lab Center page at https://www.labcenter.se/Labs#lab=Windows_PowerShell_V4_Geekweek. And if you are going and you want any more information or want to ensure something is going to be covered, please feel free to ping me.
Last week, Microsoft held their annual Lync Conference in Las Vegas. If you attended the conference, no doubt you missed some sessions – but all is not lost. If you were, like me, unable to go – all is not totally lost.
Superstar MVP Tom Arbuthnot has a script that will enable you to download all the sessions – PowerPoint's and videos. See Tom’s Blog for the PowerShell script to download sessions, along with some instructions on running it.
However: this script is currently only of use to attendees – those who did not attend will need to wait a while before Microsoft will release the material to a wider audience. As soon as I hear that this is available, I’ll blog it!
As I write this, Microsoft is running their annual Lync conference in Las Vegas. I would have liked to attend, but such is life. Up to about now, the news has been dribbling out, but UClarity a Swedish firm has summarised the first day’s news. You can read it here: http://www.uclarity.se/lync-conference-2014-dag-1/ but the content is in Swedish. Users of Chrome get offered a translation automatically, but if not, try going here: http://translate.google.com/translate?sl=auto&tl=en&js=n&prev=_t&hl=en&ie=UTF-8&u=http%3A%2F%2Fwww.uclarity.se%2Flync-conference-2014-dag-1%2F&act=url
Lync joins other Microsoft products in the billion dollar club! With the release of the Q4 earnings, Microsoft has disclosed that is now taking in over one billion US$ and revenue grew 30% This is fantastic news to those of us watching in the Lync space.
As part of the earnings call, Microsoft also divulged that Skype delivered 162 billion call minutes this quarter. My wife calls her dad every day and they chat for an hour – so I know where a few hundred of those minutes come from – but 162 billion is a lot of call time. I suspect many telcos would love to have that call volume (well that volume in PAID calls anyway!).
Tom Arbuthnot has a few more comments about this over on his blog. It makes interesting reading.
It’s been a quiet week for Lync News as all the interesting stuff is happening at the Lync Conference in Las Vegas. One very interesting tit-bit is the news that Microsoft is aiming to deliver Lync/Skype video chat interoperability by the middle of this year. At long last!
Paul Thurrot has more information over on his WinSuperSite, including some good background to this announcement. You can read it here: http://winsupersite.com/skype/microsoft-track-deliver-lyncskype-video-chat-interop-mid-year.In that article, Paul also discloses that there will be a Lync application for Android tablets, although he did not name the date.
I am looking forward to hearing more of the news from Las Vegas and the Lync conference. I was hoping we’d also hear a bit more about the next version of Lync – but so far not much news.
One of the big changes with Lync has been Microsoft’s approach of investing in a particular product for a particular function/feature and then have other products leverage that investment. This really makes sense on two levels. First, product groups are not each re-inventing the same wheel. Second, it really makes the ‘better together’ argument more real and less hype.
For example, with Lync 2013, all contact information is in a single Unified Contact Store which is maintained by Exchange 2013. The architecture for that looks like this:
Microsoft has just published an awesome set of posters that illustrate all the current sets of feature integration along with loads of links and more information. I find this a fantastic Lync resource (if only the Microsoft Learning courses were as well described!
You can download these posters (it’s a 9 page PDF) from http://go.microsoft.com/fwlink/p/?LinkId=311975
I have setup a Paper.Li weekly newsletter of news on UC and in particular Lync. You can see it: here. You can also subscribe (free) and get an abbreviated version in your mail box every Monday Morning. The mail can be clicked to get to the full content. The language is set to English, with coverage from around the globe.
In Lync, and indeed with almost any VOIP product, call quality can vary. This variation can be caused by a number of factors, including network delay, jitter, packet loss, and under powered PCs. Diagnosing the causes is difficult if you don’t have all the facts.
To understand more about the tool(s) and what the out means, take a look at an excellent blog article by Byron Spurlock.
Thanks to Jamie Stark, there’s a very funny video looking at how Conference Calls work. It’s amusing but reminds me all too much of the conference calls I am on of late!
See the video on YouTube at:
Tomorrow (Feb 5th 2014), GoGo6, an IPv6 company, is running a fee webinar with Alvaro Vives: IP v6 Essentials. You can go to their web site and sign up for the webinar which begins at 19:00 CET/18:00 GMT and 13:00 EST. It’s also being repeated later in the day on Feb 5 (you can sign up for both at the same place!
Why bother, you may be asking yourself? Great question and hopefully Arlindo will nail that answer as he looks at why IPv6 is a must, and how to address the issues that arise if you want to deploy IPv6.
While IPv4 is how most users deploy tools such as Lync Server, you can use IPv6. And at some time, I believe, IT pros will look back and wonder why anyone would want to use IPv4.
See you there!
Microsoft’s Lync server has a great feature called E911 – Emergency calling mainly for the UK and Canada. I teach Lync and find this topic to be of only minor interest in the UK and Europe mainly because we do not have E911 service over here (yet, anyway!).
Gary Williams has just published a great blog article entitled Is it OK to Place a Test Call to Emergency Services. His answer is Yes and he goes about telling how to do it. I have to say, I’ve always been quite nervous about testing out calls to 999 – and have only twice every had to call it for real.
But Gary’s article makes it clear that yes you can do this and also makes the good point that not testing it can be life threatening if it doesn’t work. He sets out how to do it in the article and it’s pretty simple. Gary also notes another potential gotcha – Lync will add a leading “+” to the number (e.g. if you dial 999, Lync ‘dials’ +999). Thus it’s vital that you have your routes are set up expecting this.
I just love how the market is creating little useful add-ins to increases the functionality and value of Lync. The most recent one I’ve found is a product called SuperToast. It’s made by Modality Systems and you can read about it over on Modality’s web site.
SuperToast is a Lync application that notifies a Lync user of any missed instant messages and telephone or video calls. If an instant message is not acknowledged within a certain timeframe, or a call goes unanswered, SuperToast pops up a window in the centre of your screen, notifying you of any missed items. It stays there until you click it away and add any subsequent missed IM’s or calls to the list.
The value here should be obvious. For all too many IT Pros, and Information Workers, it is all too easy to miss an incoming instant message or call from a colleague, partner or even a customer. Combine that with the difficulty of being able to see when or what IM’s and calls you have missed. SuperToast avoids important queries going unnoticed.
That very nice man Lee Holmes has done something really nice – in support of the current PowerShell games, he’s made access to his Cookbook web site unlimited for all. See http://www.powershellcookbook.com/ and have at it.
PowerShell, as you all know (or probably should know) is based on .NET – many cmdlets are just a PowerShell wrapper around an existing .NET Class/method. For example, Get-Process just invokes the System.Diagnostic.Process class’s GetProcesses() method. Now the cmdlet does a little more than just a GetProcess call, such as processing wild cards, enabling the cmdlet to run against a different machine, etc. But essentially, the base cmdlets just enable IT Pros simple access into .NET functions and Features. Application specific cmdlets, such as those supported by Lync, provide access into application specific functions, which are implemented as .NET Classes too. You can think of the application specific classes as just an extension to .NET.
The .NET Framework, and the Application specific ‘extensions’, are vast. There are a very large number of classes in total, and many of them have no relevance at all to the tasks that Lync admins carry out. To load all the relevant classes at runtime each time you open PowerShell would be very wasteful – both in terms of how long it would take to load them all, plus the runtime overhead (i.e. memory) wasted on classes never used. Thus, PowerShell only loads a core set of classes by default. But there is nothing stopping you from first loading the using any other .NET class.
Each .NET class is delivered via a DLL. If you look at http://msdn.microsoft.com/en-us/library/system.diagnostics.process(v=vs.110).aspx, you can see the Systems.Diagnostics.Process class is implemented in the System.DLL (See ‘Assembly:’). System.DLL holds the core .NET functions and is always loaded by PowerShell. If you go to the http://msdn.microsoft.com/en-us/library/system.diagnostics.process(v=vs.110).aspx page, which documents the MessageBox class, you’ll see this class is contained in System.Windows.Forms DLL, which is NOT loaded by default.
So to use the class in the first place, we need to first load the DLLs. This is pretty easy and looks like this:
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")This load the DLL from .NET’s global assembly cache and it remains loaded in the current PowerShell window and memory space till you close that instance of PowerShell. If you have other assemblies either part of the .NET Framework (e.g. System.Numerics) or a privately developed assembly, you can load them in a similar fashion.
Developers and PowerShell Gurus will probably point out that the LoadWithPartialName method has been deprecated. This is true but the recommended approach is more complex. Whatever, it remains the case that the LoadWithPartialName method works, and is likely to continue to work for some time! You can read a good explanation of this in Lee Home’s blog (http://www.leeholmes.com/blog/2006/01/17/how-do-i-easily-load-assemblies-when-loadwithpartialname-has-been-deprecated/) although you should note that that article was written in the Monad days, and is just slightly out of date (e.g. it uses .MSH as an extension). But for now, using this deprecated method does work and as I say, is likely to continue to work for a while!
So once you have the DLL loaded, you can just use the normal .NET calling feature to invoke a method in a .NET class directly. The core PowerShell line of code to do this is:
[Windows.Forms.MessageBox]::Show($Message, $BoxTitle,Ok, so it’s three lines long but it is quite simple. But rather than have to load an assembly and call that nasty looking method, you can wrap all of this inside a simple Advanced Function, and load that in your Profile or as part of a script or suite of scripts. I’ve written a simple script that implements a Show-Message function that displays a message box as you see above – see my PowerShell scripts blog for the script.
The bottom line is that you can easily display a message box from your script if and where you need. Just leverage my script as part of your profile, a personal module or directly inside a longer script and go for it.
The Lync team at Microsoft publish a comprehensive guide to network planning, monitoring and troubleshooting of Lync.
This guide consists of a large (146 page document) , 2 spreadsheets, 2 PowerShell scripts and a collection of SQL T-SQL scripts – not to mention a README file:
- The document looks at the aspects of planning, monitoring and troubleshooting Lync 2013 and describes these processes in some detail.
- The spreadsheets enable you to look at various aspect of your Lync architecture and compare your environment with best practices – for example looking at the CPU utilisation on all your servers and ensuring that they are all less than 80%. These were updated in the latest drop of the guide
- The PowerShell scripts enable you to obtain the key health indicators in your infrastructure that can then be used within the spreadsheets.
- The SQL scripts are queries that help you leverage the data contained on your QOA/CDR databases.These were updated in the latest drop of the guide
If you are implementing Lync, this material can be invaluable. especially if you are planning using Enterprise voice. If you used earlier version of the guide, then you would be well advised to download the latest version for the updated spread sheets and the T-SQL scripts. If you have not yet used the guide, or are early on in the planning stages of your deployment, make sure you read and work through document as you deploy.
I was somewhat (pleasantly) surprised to see on my Windows Phone that there was an updated Lync 2013 client. The client does not change much, but there are two nice new features added. One nice new feature is the ability to view a PowerPoint presentation during a Lync meeting. The update also enables you to use your voice to control Lync 2012 client.
For me, the ability to see a PowerPoint presentation on my phone is of pretty minimal value. That’s mainly for two reasons: first my phone (I have a Nokia 820) is just too small to do much more than listen to the audio. I’d rather be somewhere that I can watch the presentation on a decent screen (i.e. my laptop or desktop). But having said that, it would make great sense on a larger form factor device (phablet’s here we come). So while I won’t be using this feature much, I am sure glad I can!
I’m not alone in talking about SIP Trunking and SIP Trunking providers, as it turns out. SIP Trunks, as I discussed in this blog post, can provide a lot of benefits, not the least of which is cost reduction. The more you look at Sip Trunk Providers, though, the more you realise that not all providers are equal.
Microsoft has done a good job in qualifying Sip Trunk Providers and publishes a list of such providers at: http://technet.microsoft.com/en-us/lync/fp179863.aspx. This page lists the various qualified carriers and their service name. By ‘qualified’, each of the listed providers has been independently reviewed and their product is seen to support all the necessary Unified Communications Open Interoperability Program (UCOIP) requirements. You can read more about these requirements here.
In his blog, Jonathan Steeman looks at some of the differences between SIP providers in terms of the functions and features they provide. The more I read this post, the more it is clear that there really is a great deal of difference between the qualified trunk providers. If you are considering a SIP trunk, then you should take a close look at this blog entry and work out which of the mentioned features are important to you.
I’d love to hear of any experiences, good or bad, you are having with any of these named providers.