Home » 2013 » August

Monthly Archives: August 2013


A (very short) White Paper on Cloud Computing

Its’ been my experience lately that there is some confusion by many in the general public of exactly what  Cloud Computing IS and how do I participate. To an average user the cloud is some amorphous area in the ether which stores your data, for music, books, data files and more, so that it is easily accessible from multiple machines. In some cases, it can deliver a “service” such as the Web Apps for Office 365 or Google Apps. It certainly is all that. But for the IT Pro it can mean much more.

The IT Pro is concerned with ways to deliver the software, services and infrastructure that his company requires to do business. In the data center, this usually meant building individual servers to host the many different applications required. This was called a silo, and represented a benefit to the administrator to secure access to the server, and optimize the performance of that machine depending on the work load that it was responsible for delivering to the end user. But it was expensive, requiring rack space, HVAC, hardware purchases, deployment time and lots of maintenance.

Typically, computers measure or deliver their output by using a combination of several resources such as Processor, Memory, Storage, and Network. We would spend hours and days trying to figure out the best mix of these resources to give our users the optimum performance for the least cost, since all those components carried with them an expense to procure, install and maintain. And if you guessed wrong, purchasing more might not be possible for your make/model of hardware.

Things got much better and more efficient when Server Virtualization appeared in the form of Virtual PC and Virtual Server (Microsoft), Hyper-V (Microsoft), VMWare, and Citrix XenServer. Now an administrator could take a single piece of hardware and run several instances of an Operating System on a single machine, tuning each one to optimize the application hosted on that “virtual” machine. There was still much planning required to have the “host” machine outfitted with enough resources to share among the many virtual machines. But now, administrators could easily add more resource in the form of memory and storage on the fly, significantly reducing the time and expense normally associated with traditional hardware. And since these virtual machines were easy to create and didn’t add any additional expense beyond that of host machine itself, we could create new servers for short-lived projects, or add resources on a temporary basis to meet cyclical needs of the business very efficiently.

To the end user, accessing these applications and services was transparent. Users just want their data, they aren’t consumed about where it’s coming from! This was the beginning of the cloud, but we just didn’t call it that yet.

As time moved forward, more and better tools were implemented to help the system administrator deploy, configure, maintain and optimize these virtual machines. System Center Virtual Machine Manager (SCVMM) and vSphere were both industrial strength contributors. Now, discussion centered around  timely creation of these machines, or services, to meet the needs of the business and Cloud terminology was born!

To the IT Pro then, the Cloud is an aggregation of all these services, using virtualization technologies and very robust systems management software to deliver what the customer requires as quickly and inexpensively as possible… usually on demand and sometimes using a concept referred to as “self-service”. The physical hardware on which this all operates can be managed locally (Private Cloud) or hosted by some commercial vendor (Public Cloud). For large companies, it is often a combination of the two, a Hybrid Cloud. One of the most effective tools to help manage this environment at the least cost is System Center and its suite of products consisting of Configuration Manager (SCCM), Operations Manager (SCOM), Virtual Machine Manager (SCVMM), Orchestrator and more. Now we can easily back up entire machines, make them “Highly Available” using data clustering and even move virtual machines from one location to another quickly and easily to provide even better service to our users.  VMWare offers its own solution in vSphere, VMWare Cloud Suite, vSphere with Operations Manager, and others.

There are different ways in which these cloud resources might be used. IaaS, PaaS, and SaaS are the abbreviations standing for Infrastructure as a Service, Platform as a Service, and Software as a Service. This is referred to as the Service Model for Cloud Computing. Infrastructure as a Service would be where the provider gives you access to a server and now you deploy software on that machine much as you would a physical machine. Examples might be Rackspace, Amazon EC2 and Microsoft Windows Azure. Software as a Service would have the provider giving you access to a particular application… think Microsoft Web Apps  via Office 365, Salesforce.com or Google Apps. Platform as a Service would be where the provider not only gives you access to the server but many of the underlying applications and tools to quickly deploy applications for your clients and modify the underlying environment quickly, if needed. Microsoft Windows Azure is again an example, among others.

A term often heard in Cloud circles, that deals with this ability to quickly and efficiently respond to the needs of the business is referred to as “agility”.

Skills to manage the services themselves are based on the fundamental knowledge of the product (e.g. Exchange, SharePoint, Server 2012, System Center Configuration Manager, etc.) but now extended to the Cloud. Cloud management can be the skills needed to quickly deploy new virtual machine images and maintain them in either the Public or Private cloud space.  These techniques along with other planning considerations are discussed in the courses associated with these products.

For instance, Hyper-V 3.0 from Microsoft has made it much more competitive technically with VMWare and its licensing makes it very attractive to businesses new to the Cloud model.  Learning about the Microsoft products such as Server 2012 and how it fits into a more efficient deployment model along with Hyper-V and System Center is part of the “Cloud” training that a student would need to incorporate this technology into their own environment. The same could be said about VMWare.

Some commercial Public Cloud offerings (e.g. Office 365) package many of these services together and make them attractive economically. They can present some simplified management interfaces for the administrator, but most of the more advanced features for Office 365 can be managed with PowerShell, and advanced scripting and command language that has been around for several years and has its own training available. These require the same skills taught in our standard, Exchange, SQL, etc. courses.

So the next time you think about the Cloud, think like an IT Pro and see it not as a WHERE but as a WHAT. Imagine the use of these technologies to deliver to your company technical benefits sometimes not available to small and medium size companies, or to economically scale up and out your services if you are a large company. Think of being able to deliver service for a short interim (major marketing campaign) without having to invest in hardware, licensing, and labor to ramp up those services. Think about cutting down on hardware maintenance and refresh costs. This is just-in-time delivery of information services for the benefit of your business.



Access and Manage Office 365 with PowerShell

As businesses large and small move operations to the Microsoft cloud in the form of Office 365, administrators have to face some limitations in the user interface. While very simple to use for basic administrative tasks, some things can only be done using PowerShell, while other tasks are far faster and easier using this scripting tool as well.

In the blog I will show you how to set up your PowerShell environment to quickly connect to your Office 365 service and help you carry out these functions quickly and easily.

The steps will be as follows:

  1. Check your Execution Policy in PowerShell
  2. Check for, or create, a PowerShell Profile
  3. Edit the Profile to add the needed function
  4. Test the connection

Using Windows 7 or Windows 8 you will find that PowerShell is part of the operating system environment. In Windows 7 there is a pinned shortcut on the taskbar. Opening PowerShell either using this pinned application or by using the Start Menu is the first step. While in PowerShell we need to examine your current settings for executing scripts. This is referred to as the Execution Policy and can be retrieved by typing “get-ExecutionPolicy”. If your response is something other than RemoteSigned you need to set a new policy by typing: “set-ExecutionPolicy RemoteSigned”. You can then confirm that your setting is correct by repeating the “Get-ExectionPolicy” command. There are other choices in PowerShell, but this will suffice for our project. For more information in PowerShell type ” help about_Execution_Policies”.

Next, we want to locate the profile that is associated with your PowerShell environment. To learn more about profiles, type “Help about_profiles”. To locate your current profile, if it exists, type $profile. What returns should be a string that shows the complete path to your current profile. When you learn about profiles in PowerShell you will see that there are several locations in which these profiles can be kept and each has a different impact on how stored functions and scripts might be accessed on your machine.

If no profile exists, you will need to create one. You can test for the existence of a profile by typing, “test-path $profile”. If the response is False, we need to create one, if the response is True, you can simply type $profile to check the path as I pointed out above.

To create a new profile type the following:

if (!(test-path $profile)) {new-item -type file -path $profile -force}

This command tests for the existence of a profile and if none (!) exists, creates a new one.

Now the heavy lifting, which is to create a script or function to help you automatically log on and connect to your Office 365 service. First type, “notepad $profile”. While in Notepad, type the following code:


function admin365

{        $LiveCred = Get-Credential;$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://ps.outlook.com/powershell/ -Credential $LiveCred -Authentication Basic -AllowRedirection;Import-PSSession $Session



Don’t forget the braces, {}.

This code does three things: 1.) It creates a function called “admin365”, 2.) prompts you for your credentials on Office 365 in the form of a dialog box, and 3.) creates a new session to connect you to your Office 365 environment and extends the commands available for you to manage your Exchange environment. Notice the use of a semicolon to separate commands in the string. Items starting with a “$” indicate variables in PowerShell.

Save, the notepad file. Exit from PowerShell and restart a new PowerShell session, which will now utilize your new profile. Since this profile has defined a function for your use, call it from the command line by typing “admin365“. A dialog box will pop up. Enter your credentials, click OK and wait for the connection strings to finish. Once done, you can type “get-command” to see all the new commands that are now at your disposal to help you manage your environment.

Now you can do work in Office 365 using PowerShell. Want to get a list of users? Type, Get-User. Want to see information concerning a user’s mailbox? Type, “Get-mailbox username | fl“. To set maiobox permissions, type “set-mailboxpermission username -Accessrights moreparameters. ” For what follows in parameters see “help set-mailboxpermission”. To see all the commands available, type “get-command”.

Using PowerShell can be very helpful, but there is much to learn about this scripting environment. Consider using on-line tutorials and instructor-led classes provided by Microsoft.

%d bloggers like this: