Most Recent Posts
February 22,2012 by Dan RollerFor effective strategy execution, un-balance your balanced scorecardThe following is an excerpt from a white paper written by Dan Roller, PLA’s business strategy and execution practice group leader. The entire white paper can be read here.
Introduction
How effective is your organization at executing strategy? Most organizations admit that there is room for improvement. They know, for example, that they often fail to meet their growth targets, or find that their cash flow rises and drops unpredictably. Their product line changes in reaction to customer demand, but is rarely out in front of customer demand. The level of service required by customers is not the same level of service delivered. Operations is overwhelmed by the number of initiatives they are asked to support - and consequently, the delivery on these initiatives rarely meets defined requirements. Surprisingly, these organizations may or may not be profitable, but they are always performing significantly below their potential.
When leaders in these organizations are asked to explain why they are underperforming, they often cite a lack of money and resources, or of being “spread too thin.” Some blame the market. Others point the finger at other departments. In the end, what they are all really talking about is “focus.”
Almost invariably, when an organization’s leaders talk about being “spread too thin,” they are saying that priorities aren’t clear. Those who blame the market typically can’t see the trends that really impact the company, because they simply don’t understand which trends are most important. Those who point the finger internally are really saying that their organization is made up of silos, operating independently of the needs of other silos.
Organizations with clear priorities, a strong grasp of the most important market trends that impact customer acquisition and retention, a view of the big picture and an understanding of how and where departments must coordinate activities all share one thing in common: “focus.”
Where does “focus” come from? It comes from the top. It requires aligning leaders around a common understanding of strategy first, and a common understanding of what is required to execute that strategy, second. In the past, organizations wishing to align around a common understanding of strategy often engaged in a strategic planning process. Strategy mapping and the development of a “Balanced Scorecard” were seen as best practices in the strategic planning processs for aligning leaders, and the rest of the organization, around a common understanding of strategy execution.
In applying these best practices, organizations often focused on developing a full and balanced map and scorecard to define organization priorities. Unfortunately, the focus on full and particularly balanced has blurred priorities instead of clarified them.
You can continue reading here.
- Dan Roller, Solution Group Leader
Comments(0) Add a Comment
PowerShell may be one of the most powerful system management tools that Microsoft has ever delivered. Its use is becoming pervasive across all platforms: SQL, AD, SharePoint, Exchange and even desktop management. The problem with a GUI interface when managing systems is that everything you do in a GUI is by its nature repetitive, often tedious and never easily reproducible in the exact same way for system to system.
With PowerShell, once you crafted a solution – whether that is creating users in AD, moving SharePoint site collections from one farm to another or managing mailboxes in Exchange – then you can reproduce that task at any time and across similar systems.
You can do much of the heavy lifting with PowerShell just using the built in CmdLets crafted by Microsoft for the different systems and applications without writing “code”. But, like all tools, there is tremendous power in learning to leverage all the features available. For PowerShell that means learning some basic coding techniques that let your PowerShell Scripts become even more useful for managing your particular environment.
This is the first blog in a series that will explore some of the basic programming syntax that will allow you write PowerShell scripts that go beyond basic chaining together CmdLets.
PowerShell Functions
Writing a function in PowerShell allows you to create a segment of code that you can call at any point in your script. It is useful when you see yourself repeating the same set of commands over and over throughout your script. It can make your script easier to understand, and improve the quality of your code. There are a few ‘gotchas’ that I’ve run across when first learning the PowerShell syntax.
Calling Your Function with Parameters
In every other programming language I’ve learned, when you call a function in your program you enclose the parameters you are passing in in parenthesis. For example a function to add two numbers you would use “AddNumbers(10,20)”. This is a common first-time mistake in PowerShell as enclosing anything in parenthesis tells PowerShell to take everything in the () and come back with whatever object that turns out to be.
An example of where this is useful is in working with the Get-Date cmdlet. Get-Date returns on object of DateTime, when you enclose the cmd-let in parenthesis then you can use that object directly. The following two command snippets produce identical results:
- Example 1:
$x = get-date -year 2012 -month 7 -day 20
$x.AddDays(-10)
Tuesday, July 10, 2012 3:36:57 PM
Example 2:
(get-date -year 2012 -month 7 -day 20).AddDays(-10)
Note: Add Days is a METHOD, you do use paranthesis when you are call a METHOD.
Back to our fictional AddNumbers function. We can write that like this:
Functon AddNumbers([string]$msg,[int]$n1, [int]$n2)
{
write-host “$msg $n1 to $n2″
return $n1 + $n2
}
And here are the results when calling that function 3 different ways, only one of which is correct. Notice the first two examples call the function with the parameters in parenthesis and again without them, but separated by a comma. In the first two cases we are not actually passing in the string and two integers the function is expecting, rather we are passing in an array object as the $msg parameter and null values for the two integers:
PS C:\> $x = AddNumbers(”Adding up “, 10, 20)
Adding up 10 20 0 to 0
PS C:\> $x
0
PS C:\> $x.getType()
IsPublic IsSerial Name BaseType
——– ——– —- ——–
True True Int32 System.ValueType
PS C:\> $x = AddNumbers “Adding up “, 10, 20
Adding up 10 20 0 to 0
PS C:\> $x
0
PS C:\> $x.getType()
IsPublic IsSerial Name BaseType
——– ——– —- ——–
True True Int32 System.ValueType
PS C:\> $x = AddNumbers “Adding up ” 10 20
Adding up 10 to 20
PS C:\> $x
30
PS C:\> $x.getType()
IsPublic IsSerial Name BaseType
——– ——– —- ——–
True True Int32 System.ValueType
Returning Unexpected Values from Functions
Another item that might trip up first time users in returning values from the functions they write. In many languages you control explicitly what the function will return as a value, and when your function has the statement “return x”, then the function will terminate and return x to the place in your code that called it.
This is not the case with PowerShell. PowerShell takes every object that is created in the function, and unless that object is either stored in a variable or consumed as part of a pipleline command, then it is returned as part of the return object.
Looking at the AddNumbers function again, if we change the line:
- write-host “$msg $n1 to $n2″
if we change that to this (which is a commonw ay to print output to the console.
- “$msg $n1 to $n2″
Then the string object is actually pushed onto the stack of objects that the function will return. The results look like this:
PS C:\> function AddNumbers2([string]$msg, [int]$n1, [int]$n2) {
>> “$msg $n1 to $n2″
>> return $n1 + $n2
>> }
>>
PS C:\> $x = AddNumbers2 “Test this Function” 11 22
PS C:\> $x
Test this Function 11 to 22
33
PS C:\> $x.GetType()
IsPublic IsSerial Name BaseType
——– ——– —- ——–
True True Object[] System.Array
So, rather than returning an integer as expected, you get back an array of objects.
Using write-host instead of a quoted string if your function needs to output text is pretty simple and maybe obvious, but consider this command which creates a new Document Library in a SharePoint site.
$web.Lists.Add(”Financial Documents”, “Financial Documents”, $fLibTemplate);
If used as shown in a function that later you were expecting to return a specific value from, for example a Boolean value if a document was successfully added to the library you created in the function then the library created by the line above would actually be an object returned by the function. You would need to use a statement like this:
$result = $web.Lists.Add(”Financial Documents”, “Financial Documents”, $fLibTemplate);
Even if you didn’t otherwise need to the variable $result.
Summary
PowerShell functions are a useful feature that can improve many aspects of your PowerShell scripts including increasing code reusability. There are a couple of nuances to the language that I don’t consider obvious to those starting out with the tool. If that’s you, I hope this was some help.
- Steve McHargue, SharePoint Solution Architect
Comments(0) Add a Comment
There is always much debate on Lync 2010 Enterprise Edition on which load balancing method one should implement. Do we use Hardware based load balancing such as F5 BigIP, Citrix NetScaler, Barracuda, etc.? Many of these vendors are available in house in larger corporations so I won’t cover the hardware/maintenance costs associated with hardware load balancers. Microsoft also keeps their Hardware Load Balancing Interoperability list posted on the Lync 2010 website. This should be checked before any implementation and close attention paid to the specific code revision. So the question is always which one to use if both are made available. In my opinion, the simpler the better and when asked, I usually recommend using DNS Load Balancing for both Lync Front End and Lync Edge Pools. Microsoft usually will not prefer one method over the next as both methods are fully supported per the hardware requirements are met. I have come to this conclusion after many different Lync 2010 Enterprise Edition deployments I have completed for many reasons:
- 1. When implementing Hardware Load Balancing (HLB) on the Lync Edge Pool(s), we must not only load share the Edge server external network but also load share the internal network. This sometimes creates additional complexity for the project. In most large deployments (1500 seats and above), the ownership of the physical network and the hardware load balancers is usually performed by a different team than the System Administrators. This can sometimes not only create complexity in the design, but also cause delays due to change control and/or security reviews.
2. Most hardware load balancers will perform TCP checks on the virtual servers it is publishing. These TCP checks that it will perform on the Lync pools will sometimes cause the Lync Server System Event Logs to fill due to these TCP Checks. On the Front End pool, Lync can enable a hardware load balancing port monitor (shown below) which will allow the HLB administrator to specify the monitor port rather than use a separate monitor for each virtual server. However, this is not made available on the LYNC Edge Pool(s).

- 3. Using Hardware Load Balancers on the Lync Edge Pools require the external Lync Edge servers to be publically addressed. While this is still debated whether or not this is 100% accurate, I have found this to be true. Utilizing public IP addressing directly on a Lync Edge server is not always an option in any environment due to the perimeter network design and topology and of course due to security concerns.
4. While I prefer DNS load balancing, HLB is still required for the Lync 2010 Front End Pool. However, only the Lync web services and simple URLs will require HLB (TCP 80/443). This is due the lack of session state information that DNS LB can provide. Since the Lync web services provide us with Address Book, Web Meetings and Meeting Content, we are still at the mercy of a HLB Admin. A common workaround here is to utilize your reverse proxy such as Microsoft ISA or TMG. In most cases, the administration of these environments is under the ownership of the system administrators. Since ISA and/or TMG can function as a web server load balancer, we can utilize these systems to perform the load sharing requirements thus re-gaining all of the Lync 2010 environment back to the system administrators.
5. During systems maintenance, DNS LB will allow Lync administrators to perform server “draining” without the intervention of HLB administrators.
6. DNS Load Balancing will also prevent any interruption of SIP traffic and/or call routing that hardware load balancers can cause.
Since I have addressed the reasons why I don’t prefer Hardware Load Balancers in a Lync 2010 Enterprise Deployment, I should also state the limitations of DNS Load Balancing:
- 1. In a mixed mode environment such as OCS R1 or R2 and LYNC 2010, DNS load balancing fault tolerance cannot be utilized on OCS clients and/or OCS 2007 Edge Servers. This can be a problem if there are federated partners using OCS or internal users are still on the MOC (Microsoft Office Communicator) client. Since the resiliency when using DNS LB is partly part of the Lync 2010 client’s application awareness, this might not be an option for some deployments. In addition, when migrating legacy users to Lync TCP 135 (DCOM) must be load shared to successfully migrate the accounts. However, a “hack” or workaround is to simply enter a host entry within the OCS Front End Server(s) pointing the Lync Pool to one of the Lync 2010 Front End Servers. Then when the user migration is complete simply remove the entry.
2. DNS Load Balancing is also not fault tolerant with Public IM providers such as AOL, Google, etc. Should one of the LYNC Edge servers in a DNS Load Balanced pool fail, connectivity to these providers can be interrupted.
So there you have it. The pros and cons of HLB vs. DNS LB. For additional information and requirements on configuring Lync 2010 enterprise load balancing please follow the links below:
- Rob Sestili, Senior Consultant, MCITP
Comments(2) Add a Comment
Citrix has recently released an all-in-one VDI product which is appropriately named VDI-in-a-Box. The product is aimed at the SMB market and brings all the functionality and perks of a dynamic VDI architecture for just a fraction of the cost to implement and manage its big brother, Citrix XenDesktop.
VDI-in-a-box includes the necessary infrastructure required to deliver dynamic desktop pool inside of a virtual appliance or ‘VA’. The VDI-in-a-Box VA is compatible with all enterprise hypervisors; VMware ESXi, Microsoft Hyper-V, and Citrix XenServer. The VA also boasts built-in point and click web management, wizard driven configuration and management, a user facing web interface login, and support for the latest Citrix HDX technologies.
Setting up VDI-in-a-Box includes purchasing or re-utilizing a 64-bit architecture server. A hypervisor of choice is then installed and configured on that server. The VDI-in-a-Box VA is then imported and configured using the built in configuration wizards. The next step is to configure a Windows 7 or XP virtual desktop and import it into the VDI-in-a-Box appliance, also with the assistance of step-by-step wizards. The image is then edited to an image standard, including applications, customizations, and licensing. Once that is completed, a template is constructed and users can be assigned to login to that template. The number of VDI desktops to deploy is completely dynamic and can be increased or decreased on the fly.
The VDI-in-a-Box solution is a great fit for SMB’s looking to give their users virtual mobility both inside and outside the corporate walls. It’s also a great fit for enterprise size clients looking to offer VDI to specific departments within the organization. For under $500 per user (includes product and licensing), corporations can begin offering users the virtual mobility they are after.
- Adam Bolt, Technical Architect
Comments(0) Add a Comment
Have you turned over every rock?
The up-swing in the economy is not happening as fast as first thought! Most organizations under-went a series of cost-cutting measures in late 2007 early 2008. These cost cutting measures consisted mostly of reducing employee size and where possible real-estate and some internal operating costs, but how many organizations have taken a deep dive in their PRINT COSTS?
Re-structuring equipment lease or entering into a print management contract is a start but where does that leave your organization? Who is responsible for the enterprise wide print spend, how many devices does your organization have and which devices are cost efficient, is your fleet optimized? Some organizations can answer these questions, but the answers are coming from your trusted Print Vendor who probably sold you some new software or efficient hardware and has ensured you that your organization is 100% healthy as it relates to PRINT.
We’re not saying that you have been given false information – but 100% of the print vendors are sales organizations with monthly quotas and your vendor representative is paid on commission.
Consider this example of a recent client:
A large Organization with a global footprint – The MFD business is with one of the larger manufactures and the network printer business is being handled by another large manufacture. Both of these companies are in competition to increase their individual footprint with our client. Both manufacturers had completed what they call a “Print Study” – both reports came out favoring the individual manufacture and recommended to our client to buy more hardware and install a couple different software applications to help monitor the print volume and help drive the print jobs to the more efficient device. Of course the client needed to upgrade the current fleet to realize the savings!!!!
Our study contraindicate the first (2) studies – we traveled to a couple of destinations in the US and Asia and Europe, we conducted end-user studies and management studies. After 4 months we delivered our recommendations. This client ended up switching from a lease platform to a purchase platform, reduced 45% of the network printers and relocated MFD – added a print management program which we assisted with and end up reducing the current equipment no new equipment was purchased. We recommend software to help direct print traffic. This client saved over 1.4 million within the first 6 months and is on-track to save 4-5 million over a 36 month timeframe.
- Richard Ayares, Managing Consultant
Comments(0) Add a Comment


