Deploying Office 2016 and Office Proofing Tools Kit 2016 / Office 2016 language packs with SCCM 2012 R2

I recently deployed Office 2013 SP1 (and wrote a blog post about it). Now I got the honours to do the same for Office 2016. The procedure is theoretically quite the same, but with many different bugs and gotchas. The following procedure describes how to remove any previous versions of Office and corresponding Proofing tools & language packs and replace them with Office 2016 versions. I’ll dive right into the steps:

Customizing Office 2016

  • Got a copy of Office 2016 and extracted the iso. Our version is “Professional Plus” with Volume Licensing.
  • Fired up a command prompt and navigated to the extracted Office directory.
  • From here I ran “setup.exe /admin”  to launch the Office Customization Tool (OCT).
  • Customized the OCT settings according to our needs:
    • Setup/Organization Name
    • Setup/Licensing and user interface/Use KMS client key
    • Setup/Licensing and user interface/I accept the terms in the License Agreement, Display level: None, No tick in Competition notice, Tick for Suppress modal and No cancel.
    • Setup/Remove previous installations/Remove the following earlier versions of Microsoft Office Programs/Remove all (here’s a BUG btw, more on that later on).
    • Setup/Modify Setup Properties:
      • SETUP_REBOOT, value Never
    • Features/Modify user settings:
    • Features/Set feature installation states:
      • Everything gets installed.
    • Additional content/Configure shortcuts
      • For some weird reason, Office 2016 by default decides to put all of the shortcuts on the start menu WITHOUT a subdirectory – splattered all over the start menu. This is fixable by editing the shortcut entries. In Fig 2. below, I’ve added the path/directory \Microsoft Office 2016. You also have to add a “[“ in Start in, otherwise you can’t close the dialog box. It’s a “feature” (bug), see: https://support.microsoft.com/en-us/kb/2797938. While editing, you can also decide which shortcuts you want to put on the Desktop. In Fig 2, I’ve chosen to put the Excel shortcut on both the Desktop ([DesktopFolder]) and in the Start menu ([ProgramMenuFolder]\Microsoft Office 2016).
    • Update: More bugs, sigh. Skype for Business shortcut launches “Skype for Business Recording Manager” instead of “Skype for Business”. I’m getting very frustrated with all the bugs. See: https://community.office365.com/en-us/f/166/t/344410. Anyways, I corrected the mistake MS has made. In Fig 3 target should definitely not be Skype for Business Recording Manger, instead it should be “Skype for Business 2016”. At least so I thought. After this “fix” (and a test-deployment), my reward was the following message:

                   office2016_sfb_problem_with_shortcut

                   Fig 1. Problem with shortcut

      • Only solution (as I can see it), is to force-copy a “functional shortcut icon” during deployment. With functional I mean a shortcut that has been manually created from C:\Program Files (x86)\Microsoft Office\Office16\lync.exe. (You should also remove all the Skype for Business shortcut entries in OCT).
        • This shortcut will then be deployed as a dependency. See later chapter about dependencies.

                   Office2016_OCT

                    Fig 2. Office 2016 OCT.

                   Office2016_OCT_shortcuts

                   Fig 3. Skype for Business – example shortcut entry.

 

 

Deploying Office 2016/Removing Office 2013/2010

The deployment part was quite straight forward after the customization part was done. Well, so I thought. Instead I got to fiddle with SCCM’s supersedence and dependencies. More on that later on. As with Office 2013, I basically followed a (very good) guide from http://www.ronnipedersen.com/2012/11/how-to-deploying-microsoft-office-2013-using-configmgr-2012/ with some changes for our environment. In this case the changes were about uninstalling Office 2013 SP1, as a fully patched Office 2013 SP1 WON’T get uninstalled even though I’ve chosen to remove previous versions in the OCT (see my (unanswered) post at https://social.technet.microsoft.com/Forums/office/en-US/a664a0c7-c6b5-40a3-9e04-f347556d39a0/office-2016-oct-bug-office-2013-doesnt-get-uninstalledremoved?forum=Office2016setupdeploy). The remove previous version-feature works with Office 2010 however, which means I don’t have to create a supersedence relation for that version (luckily).

 

Checking parameters for Office 2013 uninstallation:

In order for Office 2013 SP1 to be silently removed via SCCM before you install Office 2016, you have to be sure that the uninstall string is correct and a custom xml-file is in place. I’m already using “custom.xml” (together with OCT) for the installation part, so I’ve created a custom2.xml for the uninstallation part. (The reason for this is also a bug, see my Office 2013 deployment post). This file contains only the following information:

<Configuration Product=”ProPlus”>
<Display Level=”none” CompletionNotice=”no” SuppressModal=”yes” AcceptEula=”yes” />
</Configuration>

You’ll then use this xml file when you specify the uninstall string for Office 2013 SP1 in SCCM. See https://weikingteh.wordpress.com/2013/09/12/uninstallremove-office-2013-with-configmgr-2012/ for details. If you don’t specify a xml file, the uninstallation won’t be silent. This in turn means it won’t be successful.

 

Supersedence

With all the parameters done, you can now deploy Office 2016 using Office 2013 as Supersedence (see screenshot below):

Office2016_deployment_supersecence

Fig 4. Supersedence.

 

All of the fields aren’t visible in the screenshot, but the fields are:

This application supersedes the following applications:

Application: Microsoft Office 2013 SP1
Old Deployment Type: Microsoft Office Professional Plus 2013 SP1 installer
Replacement Deployment Type: Microsoft Office Professional Plus 2016 installer
Active: Yes
Uninstall: Yes (Tick in the box)

That’s it! All the other options are the same as with a regular deployment, you just add the Supersedence-information (so Office 2013 SP1 can be successfully removed while installing Office 2016). This would not be successful without having specified the correct uninstallation information/parameters for Office 2013 SP1.

A general rule of thumb when using supersedence is that you must have the correct uninstall information specified for the application that will be superseded!

 

Update! I had problems deploying Office as “available”. (“Required” was working ok though). I always got the message “Past due – will be updated”  in Software Center (see Fig 5). This on the other hand made Office upgrade itself without user interaction, which was not acceptable for a deployment that was made available (NOT required).

Office2016_deployment_software_center_past_due-will_be_updated

Fig 5. Past due – will be updated.

After some googling I found out it was related to the supersedence settings. Don’t know if you can call this a bug, but at least it was working better if I followed this advice:

“Regarding the issue where you have set the application to AVAILABLE in the deployment, however the application uninstalls and upgrades without user interaction, I have found a work around.

The cause of the problem seems to be when you are deploying an application to a collection the option “automatically upgrade any superseded versions of this application” is CHECKED and GREYED out. If you deploy the application BEFORE you have added the supersedence, this will NOT be greyed out and you will be able to leave it unchecked. Then add the supersedence rules.

Hope this helps

Kevin”

Source: https://social.technet.microsoft.com/Forums/en-US/1abcc581-1ee8-4929-8a2f-71c8843a257c/application-supersedence-not-working-as-i-want-and-expect?forum=configmanagerapps

I mentioned the word better because even now it wasn’t working 100% correct. I had to click “Install” in Software Center about 3-4 times (for all the dependent applications). This wasn’t acceptable, as the software (and all its dependencies) should install with just ONE click. Well, I found the solution to this dilemma myself – just leave one checkbox unticked. (See Fig 6).

Office2016_deployment_supersecence_do_not_allow_to_see_what_supersedes

Fig 6. Supersedence checkbox.

With all this done, the deployment was running smoothly with just one click (“Install”) in Software Center.

 

 

Customizing Office Proofing Tools Kit 2016

This is actually the exact same procedure as for Proofing Tools 2013. I’ll copy/paste the information from my previous blog post:

We are using a Proofing Tools “CD” which include all of the proofing tool languages. Proofing Tools doesn’t/can’t change the UI language btw, only check the spelling. With this CD, there’s no need to separately download each proofing tool language. After some googling I stumbled upon http://www.msfn.org/board/topic/149212-office-2010-proofing-toolkit-silent-installation/ which seemed useful. Once again I’ll share my configuration so you don’t have to scratch your own head. First off, there’s NO “setup.exe /admin” on this cd/iso. You have to manually specify the languages (proofing) you need. The file you need to edit is located on the extracted iso, in my case \Office_2016_Proofing_Tools\proofkit.ww\config.xml. My file looks like this:

<Configuration Product=”Proofkit”>

   <Display Level=”none” CompletionNotice=”no” SuppressModal=”yes” AcceptEula=”yes” />
  
   <COMPANYNAME Value=”Abo Akademi” />
      
   <OptionState Id=”ProofingTools_1053″ State=”local” Children=”force” />
   <OptionState Id=”ProofingTools_1030″ State=”local” Children=”force” />
   <OptionState Id=”ProofingTools_1035″ State=”local” Children=”force” />
   <OptionState Id=”ProofingTools_1036″ State=”local” Children=”force” />
   <OptionState Id=”ProofingTools_1031″ State=”local” Children=”force” />
   <OptionState Id=”ProofingTools_1032″ State=”local” Children=”force” />
   <OptionState Id=”ProofingTools_1040″ State=”local” Children=”force” />
   <OptionState Id=”ProofingTools_1044″ State=”local” Children=”force” />
   <OptionState Id=”ProofingTools_2068″ State=”local” Children=”force” />
   <OptionState Id=”ProofingTools_1045″ State=”local” Children=”force” />
   <OptionState Id=”ProofingTools_1049″ State=”local” Children=”force” />
   <OptionState Id=”ProofingTools_1048″ State=”local” Children=”force” />
          
   <Setting Id=”SETUP_REBOOT” Value=”Never” />
  
</Configuration>

This bypasses all prompts in the setup process and installs 12 proofing languages. I’m not going to list the languages here (OptionState Id values), as there’s a table is available at: http://technet.microsoft.com/en-us/library/cc179219(v=office.15).aspx . That’s it for the configuration – now ready for deployment.

Source: http://technet.microsoft.com/en-us/library/ee942200(v=office.15).aspx plus all the forgotten ones…

 

 

Deploying Office Proofing Tools Kit 2016/Removing Proofing Tools Kit 2013/2010

Again, this information is already available in my previous blog post about deploying Office Proofing Tools 2013 SP1, so please have a look there before you continue. The difference in the 2016 version is that I will use different dependencies so that Office and the language packs will be installed before proofing tools is installed. I’ll also use Supersedence the same way I did with Office 2016 above.

 

Checking parameters for Proofing Tools Kit 2013 SP1 uninstallation:

First off, I’ll copy/paste information about the installation:

Edit “programs” tab. The installation command should now include our custom.xml instead of the MSI-command. The command I used was: setup.exe /config \\sccm2012r2\Software\Office_2013_Proofing_Tools_with_Service_Pack_1\proofkit.ww\config.xml.  ( /config .\proofkit.ww\config.xml is an easier/better syntax, btw)

Ok – now you just have to add the uninstall information with a custom UNintallation xml-file. This is also the same procedure as with the Office 2016 deployment. Anyway, I created a custom2.xml file in the same location as mentioned above. It includes basically the same information as the Office 2013 SP1 uninstallation xml-file:

<Configuration Product=”Proofkit“>
   <Display Level=”none” CompletionNotice=”no” SuppressModal=”yes” AcceptEula=”yes” />
</Configuration>

…and for the uninstall program string I’m using: setup.exe /uninstall Proofkit /config .\proofkit.ww\config2.xml

There you have it. Both the install and the uninstall information are now specified. You can now go ahead and make the same Supersedence rules as with the Office 2016 deployment:

Office2016_proofkit_deployment_supersecence

Fig 7. Office 2016 Proofing Tools Kit – Supersedence.

Only thing that isn’t fully visible in the screenshot above is Application: Microsoft Office Proofing Tools 2013 SP1 – multilanguage.

 

You can now do the same thing with Office 2010 (proofing tools) if you want to uninstall/remove that version prior to installing proofing tools 2016. You’ll then add another supersedence rule so that BOTH Office 2010 proofing tools AND Office 2013 proofing tools will be superseded (both should then be in the list in Fig 7).

(I also specified the uninstallation information for Office 2016 (proofing tools) already, so I can (hopefully) use the same procedure with future versions of Microsoft Office).

 

 

Deploying Office 2016 language packs/Removing Office 2013/2010 language packs

Some people are also using language packs with Office so I had to figure out a way of uninstalling/replacing these with the 2016 versions. Luckily, Microsoft is using quite the same syntax as with proofing tools, so the task was actually quite simple. You start with the same procedure – checking for a valid config.xml file for installation and uninstallation. The difference here is that you don’t need any specific codes for the language(s), as one language pack only installs one specific language. Another nice thing is that you can use the SAME xml file for both the installation and the uninstallation. The custom.xml for the Swedish language looks like this for example:

<Configuration Product=”OMUI.sv-se“>
<Display Level=”none” CompletionNotice=”no” SuppressModal=”yes” AcceptEula=”yes” />
</Configuration>

That’s the only thing you need to add/edit to make it silent. The paths for the files are a bit different than with Proofing tools though. The xml file is in .\omui.sv-se (or omui.xx.xx for your own language). The MSI-file used for deployment (or actually only for getting the product code) is in the same directory. The installation and uninstallation strings are also a bit different. Let me show you some screenshots and whatnot from SCCM;

First off you create a new application and make it think it’s going to use a MSI file for installation. You do it like this only to get the detection method/MSI product code.

office2016_lang_pack_create_new_application_sccm

Fig 8. Create Application Wizard.

Use the path:

\\yoursccmserver\yoursoftwarestash\Microsoft Office 2016 Multilang Pack Swedish\OMUI.sv-se (or similar for another language) and select the file OMUI.msi

Then just next, next, next through the wizard.

 

After this, you edit the Deployment Type. First off, go to the Content location. This path will be wrong (as the msi file is located in the OMUI.sv-se -directory). Please REMOVE “OMUI.sv-se” from the content location path. That’s it for content.

office2016_lang_pack_content_sccm

Fig 9. Office 2016 Swedish language pack content location.

 

Then you move over to the “Programs” tab. Here’s where the magic happens. Remove all the text/strings from installation program and uninstallation program. Replace the text with the one from Fig 10 below.

office2016_lang_pack_programs_sccm

Fig 10. Programs tab. Same xml is used for both installation and uninstallation (even though it got cut off in the screenshot).

In case you want to copy/paste, the strings are:

Installation program: setup.exe /config .\OMUI.sv-se\config.xml
Uninstall program: setup.exe /uninstall OMUI.sv-se /config .\OMUI.sv-se\config.xml

 

Sources:

http://www.itninja.com/question/how-to-install-office-language-pack-2010-unattended
https://technet.microsoft.com/en-us/library/cc179145.aspx
http://www.techygeekshome.co.uk/2012/11/office-2010-language-pack-deployment-in.html

 

You can now do the same thing with Office 2010 language packs if you want to uninstall/remove that version prior to installing the 2016 language packs. You’ll then add another supersedence rule so that BOTH Office 2010 language pack AND Office 2013 language pack will be superseded.

 

 

Dependencies/Finalization

There you have it. You’ve created separate SCCM applications for Office 2016, Office 2016 Proofing tools and Office 2016 language packs. That’s very nice and all, but you probably don’t like deploying all three applications separately, now do you? Well, this is where dependencies comes into play.

In my final deployment I ONLY deploy Office 2016 Proofing Tools. Office 2016 (main office application) is a dependency of Proofing tools, and so are the language packs. See Fig 11 for details.

NOTE! Create THREE SEPARATE dependency groups, otherwise there will be an “OR” statement instead of “AND”. I learned this the hard way when the language packs wouldn’t install. See the right and the wrong way to create the dependencies below:   

office2016_dependency_new_sccm

Fig 11. Office 2016 Proofing Tools dependencies, the CORRECT way.

 

office2016_dependency_old_sccm

Fig 12. Office 2016 Proofing Tools dependencies, the WRONG way.

 

Update! As there is a bug with the Skype for Business shortcut icon, the shortcut will also be deployed as a dependency.

  • First, create a new directory for your application (script) on your sccm server. Call it “Office2016-Skype for Business-shortcut” for example.
  • Copy the Skype for Business 2016-custom shortcut (created in the Customizing Office 2016 part) to this directory.
  • Create two new PowerShell script files in this directory;
    • Name the scripts Office2016-Skype for business-shortcut.ps1 and Office2016-Skype for business-shortcut-uninstall.ps1 for example.
      • Contents of Office2016-Skype for business-shortcut.ps1:

copy “Skype for Business 2016.lnk” “C:\Users\Public\Desktop\Skype for Business 2016.lnk”
copy “Skype for Business 2016.lnk” “C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office 2016\Skype for Business 2016.lnk”

      • Contents of Office2016-Skype for business-shortcut-uninstall.ps1:

del “C:\Users\Public\Desktop\Skype for Business 2016.lnk”
del “C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office 2016\Skype for Business 2016.lnk”

 

Create a new application using the following information:

  • Create Application
  • Manually specify the application information
  • Name: whatever you like
  • Deployment Types:
    • Type: Script Installer
    • Manually specify the deployment type information
    • Name: whatever you like
    • Content location: wherever you store your applications, in a subdirectory called “Office2016-Skype for Business-shortcut” for example
    • Installation program: powershell.exe -executionpolicy Bypass -file “Office2016-Skype for business-shortcut.ps1”
    • Uninstallation program: powershell.exe -executionpolicy Bypass –file “Office2016-Skype for business-shortcut-uninstall.ps1”
    • Detection method: Setting type: File System: C:\Users\Public\Desktop\Skype for Business 2016.lnk AND C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Microsoft Office 2016\Skype for Business 2016.lnk exist.
    • Install for system, whether or not a user is logged on, hidden.

With all this done, create yet another dependency group. Add this newly created application to this dependency group. You then have a total of FOUR dependencies.

Source: https://tjindarr.wordpress.com/2012/05/04/application-dependencies-in-sccm-2012/

 

 

Summarization

Let’s sum it up:

  • Actual deployment “object” is Office 2016 proofing tools, which in turn use dependencies (main office application + language packs).
  • Office 2016 supersedes Office 2013.
  • Office 2016/2013 removes/uninstalls Office 2010 via OCT (no supersedence).
  • Proofing tools packages use supersedence to update themselves to the newest versions (2010 –> 2016,  2013->2016).
  • Language pack packages use supersedence to update themselves to the newest versions (2010 –> 2016,  2013->2016).
  • Office 2016 is a dependency of Proofing tools 2016, and so are the language packs (and the Skype for Business shortcut).
  • A shortcut for Skype for Business is created in the Start menu and on the desktop. (It is NOT created via OCT as it creates a faulty one).

 

And some screenshots:

office2016_software_center_install_status

Fig 13. Downloading all of the needed packages/applications.

The number of downloaded components depend on which Office-components SCCM detects on the client. (Is Office already installed and are only the language packs needed, for example). I’ve now changed the application catalogue name of the “main” application to something more convenient than “Microsoft Office Proofing Tools 2016 – multilanguage”. Currently I’m using “Office 2016 with proofing tools + swe & fi language packs”.

 

office2016_software_center_install_status2

Fig 14. Updating components. One done, seven to go.

 

office2016_programs_and_features2

Fig 15. Before Office 2016 deployment. Office 2013 SP1 (with Proofing tools and two language packs). Same components are installed if using Office 2010.

 

office2016_programs_and_features

Fig 16. After successful Office 2016 deployment. Same thing, new versions 🙂

 

Success! 🙂 (Finally… after many, many, many hours of testing)

 

BTW, feel free to comment if you find this post useful.

Advertisements

Exchange Server Connector (for SCCM)

I was “given” the task of finding an easy way for the IT supporters to check whether or not a user has configured his/her mobile phone (Nokia Lumia) against our Exchange server. We’re checking this mostly because the user agreement states that every user should have an Exchange account configured. With an Exchange account configured, it’s possible (for the Exchange/SCCM Admins) to remotely wipe the phone (among other things).

The Exchange Server Connector is by no means a full blown MDM solution (for SCCM), but it can handle the basic tasks. If you want a solution with all the bells and whistles, have a look at Microsoft Intune instead. On the positive side, Exchange Server Connector is free and Intune is not. Some differences between the MDM solutions can be found here for example:

http://myitforum.com/myitforumwp/2013/05/14/three-options-for-managing-mobile-devices-using-sccm-2012-without-windows-intune/
https://technet.microsoft.com/en-us/library/gg682022.aspx
http://configmgrblog.com/2011/02/09/cep-meeting-9-summary-sccm-2012-mobile-device-management/

The above links include tables which will help you decide what mobile device management methods support the mobile device platforms you have in your environment. They can also help you decide between in Depth vs. Light Management and so on. All in all the links gives you an idea of what you can and cannot do with the Exchange Connector.

The short version is that SCCM 2012 (R2) is out-dated in terms of MDM management. You only have support for limited devices by default, check: https://technet.microsoft.com/en-us/library/gg682077.aspx#BKMK_SupConfigMobileClientReq (Mobile Devices Enrolled by Configuration Manager and Mobile Device Legacy Client). By adding the Exchange Server Connector you’ll get support for more devices (all Exchange Active Sync devices), but the configuration on these devices is limited to the same things that can be configured on the Exchange Server (“light management”). The settings are listed in the table “Choose a mobile device management solution based on management functionality” from the page https://technet.microsoft.com/en-us/library/gg682022.aspx . As you can see, you can’t install software or make a software inventory but things like Remote wipe and settings management are possible. I’ll attach a screenshot of the things you can configure:

exchange_mobile_device_access

Fig 1. Mobile device access (EAS settings)

exchange_mobile_device_mailbox_policies

Fig 2. Mobile device mailbox policies

These same settings apply to SCCM once you have the connector set up correctly. That said, let’s set it up!

 

Installation

First some reading for you all:

http://blogs.technet.com/b/system_center_in_action/archive/2011/09/02/configuration-manager-2012-exchange-connector-implementation-in-microsoft-it.aspx
http://configmgrblog.com/2011/09/16/exchange-connector-in-configuration-manager-2012-revealed/
http://configmgrblog.com/2012/01/04/managing-mobile-devices-in-configuration-manager-2012-via-exchange-online-1/

I used tips from the guides but overall it was an easy task. Here are my steps:

ex_server_connector_sccm_accounts

Fig 3. Accounts in SCCM

  • Started SCCM, then navigated to Administration –> Overview –> Hierarchy Configuration –> Exchange Server Connectors

ex_server_connector1

Fig 4. Exchange Server Connector.

  • Added a new connector with the default values. Properties from the newly created connector below:

ex_server_connector2

Fig 5. Properties, General

Note: There are problems with the URL if using load balancers. I had to change the URL to one of our CAS servers (and not pointing to the single namespace/autodiscover URL in DNS). Check the problems and gotchas-chapter below for more details.

 

ex_server_connector3

Fig 6. Properties, Account

 

ex_server_connector4

Fig 7. Properties, Discovery

 

ex_server_connector5

Fig 8. Properties, Settings

If you change a setting here, that setting will be changed from Configured by Exchange Server to Configured by Configuration Manager from now on. In other words, you are giving the SCCM server authority to handle these settings instead of Exchange. Also note the “Allow external mobile device management”: xxxxx” –option, and read the text above it. I changed mine to Allowed.

 

ex_server_connector6

Fig 9. Properties, Access Rules

 

Problems

Theoretically everything should now be set up and working. Unfortunately, that wasn’t the case for me. I immediately noticed that no devices showed up under “Devices/All Mobile Devices” in SCCM. I had configured all steps correctly, and SCCM didn’t complain. Luckily there are logs (EasDisc.log on the SCCM server) so you can have a better understanding what’s going on behind the scenes. That said, I noticed some problems in the log straight away:

ex_server_connector_error

Fig 10. EasDisc.log: the problems

Some googling led me to https://social.technet.microsoft.com/Forums/en-US/e7ca3f0c-a793-4437-8050-2de4c9d9253c/exchange-connector?forum=configmanagergeneral. Someone had a similar setup and suggested using the FQDN of one of the CAS servers instead of the NLB URL. Tried that – success! 🙂 (almost…)

ex_server_connector_error_solved

Fig 11. EasDisc.log: problem solved, everything looks good. Log also reported INFO: Total number of devices discovered 357       SMS_EXCHANGE_CONNECTOR        x.x.2015 11:57:48 which is not visible in the screenshot.

 

View from SCCM

Let’s have a look at the whole thing in action from SCCM:

ex_server_connector_sccm_view_devices

Fig 12. All Mobile Devices.

 

ex_server_connector_sccm_all_mobile_devices

Fig 13. Another view

 

Gotchas

Everything APPEARED to be working fine now. After a while I noticed it wasn’t. I configured a test-device with my own account, but it DIDN’T show up in Assets and Compliance –> Overview –> Devices –> All Mobile Devices in SCCM (Fig 11). However the list with All Mobile Devices (Fig 10) got updated (correct number of devices). Very strange.

Some head scratching and googling later I ended up at https://social.technet.microsoft.com/Forums/en-US/6a6dae36-a84c-4f7b-8fd5-7e24d905ec6f/sccm-2012-exchange-connector-to-cas-through-load-balancer?forum=configmanagergeneral

Well, well, well. Problem with load balancers. Duh. My solution: Added another connector for our second CAS. Well, that didn’t work. It was still showing the same amount of devices 😦 My test-device wouldn’t show up either. It was now unfortunately time to state that the Exchange Connector won’t work if you have more than one CAS in your environment. Too bad 😦

Update: Currently I’m using an EAS device report script on the Exchange server for collecting miscellaneous information about mobile devices. More on that in a blog post later on…

 

Search queries in SCCM

(Even though the connector didn’t work as expected, I had already made a couple of queries before noticing the problem…)

It’s always nice to get a list of devices, but in most cases you’ll want to have the list sorted in some way. I was requested to sort our list by the Windows Phone OS. I used a slightly modified query from: http://www.windows-noob.com/forums/topic/9618-unified-device-management-with-configuration-manager-2012-r2-part-4-configuring-compliance-on-ios-devices/

Query:

select SMS_R_SYSTEM.ResourceID,SMS_R_SYSTEM.ResourceType,SMS_R_SYSTEM.Name,SMS_R_SYSTEM.SMSUniqueIdentifier,SMS_R_SYSTEM.ResourceDomainORWorkgroup,SMS_R_SYSTEM.Client from SMS_R_System where SMS_R_System.OperatingSystemNameandVersion like “%Windows Phone%

Using this query, I got all Windows Phones listed:

ex_server_connector_sccm_wp8_query

Fig 14. Query for Windows Phones

Instead of using Reporting, I find it much easier to just mark the whole list and copy/paste it into Excel (or another document). Some sort of “export to .csv” right-click plugin for SCCM would be awesome though.

Deploying Office 2013 SP1 and Office Proofing Tools 2013 SP1 with SCCM 2012 R2

UPDATE: New blog post about Deploying Office 2016 available!

Link: Deploying Office 2016 and Office Proofing Tools Kit 2016 / Office 2016 language packs with SCCM 2012 R2

One of my tasks last month was to make Microsoft Office application packages in SCCM 2012 R2 which should be available in the whole University. The applications in question were Office 2013 SP1 and Office Proofing Tools 2013 SP1. This may sound a bit boring as it’s a very “mainstream” deployment. This was my first thought also, but I ran into a couple of problems I thought I’d share. I started out by reading a couple of basic guides and then customized according to my/our needs. None of the guides were fully working without tweaking however. Here are my steps:

Customizing Office 2013 SP1

  • Got a copy of Office 2013 with Service Pack 1 and extracted the iso. Our version is “Professional Plus” with Volume Licensing.
  • Fired up a command prompt and navigated to the extracted Office directory.
  • From here I ran “setup.exe /admin”  to launch the Office Customization Tool.
  • Customized the OCT settings according to our needs:
    • Setup/Organization Name
    • Setup/Licensing and user interface/Use KMS client key
    • Setup/Licensing and user interface/I accept the terms in the License Agreement, No tick in Competition notice, Tick for Suppress modal and No cancel.
    • Setup/Remove previous installations/Remove the following earlier versions of Microsoft Office Programs/Remove all
    • Setup/Modify Setup Properties:
      • AUTO_ACTIVATE, value 1
      • SETUP_REBOOT, value Never
    • Features/Modify user settings:
    • Features/Set feature installation states:

                    <Configuration Product=”ProPlus”>

                <Display Level=”none” CompletionNotice=”no” SuppressModal=”yes” AcceptEula=”yes” />
   
                <OptionState Id=”LyncCoreFiles” State=”local” Children=”force” />
                <OptionState Id=”GrooveFiles2″ State=”local” Children=”force” />
                <OptionState Id=”ExcelAddInPowerMapFiles” State=”local” Children=”force” />
                <OptionState Id=”ExcelAddInPowerPivotFiles” State=”local” Children=”force” />

                 </Configuration>

      • With this file edited (and saved) and the .MSP-file from OCT saved in \Office_2013_extracted\updates , I was ready to deploy.

Sources:

http://www.ronnipedersen.com/2012/11/how-to-deploying-microsoft-office-2013-using-configmgr-2012/
http://technet.microsoft.com/en-us/library/ee460874(v=office.15).aspx

and probably many forgotten ones…

 

Deploying Office 2013 SP1

The deployment part was quite straight forward after the configuration part was done. I basically followed a (very good) guide from http://www.ronnipedersen.com/2012/11/how-to-deploying-microsoft-office-2013-using-configmgr-2012/ with some minor changes for our environment. Nothing worth mentioning here though.

Remember to install all Office updates after the deployment!

 

 

Customizing Office Proofing Tools 2013 SP1

We are using a Proofing Tools “CD” which include all of the proofing tool languages. Proofing Tools doesn’t/can’t change the UI language btw, only check the spelling. With this CD, there’s no need to separately download each proofing tool language. After some googling I stumbled upon http://www.msfn.org/board/topic/149212-office-2010-proofing-toolkit-silent-installation/ which seemed useful. Once again I’ll share my configuration so you don’t have to scratch your own head. First off, there’s NO “setup.exe /admin” on this cd/iso. You have to manually specify the languages (proofing) you need. The file you need to edit is located on the extracted iso, in my case \Office_2013_Proofing_Tools_with_Service_Pack_1\proofkit.ww\config.xml. My file looks like this:

<Configuration Product=”Proofkit”>

    <Display Level=”none” CompletionNotice=”no” SuppressModal=”yes” AcceptEula=”yes” />
   
    <COMPANYNAME Value=”Abo Akademi” />
       
    <OptionState Id=”ProofingTools_1053″ State=”local” Children=”force” />
    <OptionState Id=”ProofingTools_1030″ State=”local” Children=”force” />
    <OptionState Id=”ProofingTools_1035″ State=”local” Children=”force” />
    <OptionState Id=”ProofingTools_1036″ State=”local” Children=”force” />
    <OptionState Id=”ProofingTools_1031″ State=”local” Children=”force” />
    <OptionState Id=”ProofingTools_1032″ State=”local” Children=”force” />
    <OptionState Id=”ProofingTools_1040″ State=”local” Children=”force” />
    <OptionState Id=”ProofingTools_1044″ State=”local” Children=”force” />
    <OptionState Id=”ProofingTools_2068″ State=”local” Children=”force” />
    <OptionState Id=”ProofingTools_1045″ State=”local” Children=”force” />
    <OptionState Id=”ProofingTools_1049″ State=”local” Children=”force” />
    <OptionState Id=”ProofingTools_1048″ State=”local” Children=”force” />
           
    <Setting Id=”SETUP_REBOOT” Value=”Never” />
   
</Configuration>

 

This bypasses all prompts in the setup process and installs 12 proofing languages. I’m not going to list the languages here (OptionState Id values), as a table is available at: http://technet.microsoft.com/en-us/library/cc179219(v=office.15).aspx . That’s it for the configuration – now ready for deployment.

Source: http://technet.microsoft.com/en-us/library/ee942200(v=office.15).aspx plus all the forgotten ones…

 

Deploying Office Proofing Tools 2013 SP1

Internet is full of articles about deploying Office, but not so much about deploying the Proofing tools iso/CD. Most of the guides about deploying Proofing Tools with SCCM were about installing a specific proofing tool language, which you had to download separately. This method is fully working, but wasn’t what I was looking for. I got some ideas from http://www.scconfigmgr.com/2013/10/31/deploying-proofing-tools-for-office-2013-with-configmgr-2012/ for example, but this one was also only installing one language. The solution was to deploy using the custom.xml from above. Steps:

In SCCM:

  • New Application, fill in the details according to your needs.
  • Deployment Type: MSI (so you get the MSI product code). This will be changed. Select the MSI from \\yoursccmserver\Software\Office_2013_Proofing_Tools_with_Service_Pack_1\proofkit.ww and finish the deployment type guide.
  • The MSI-file itself can’t deploy custom stuff so we need to change the installation to use our custom.xml (Fig 1)

          proof_tools_sccm_1

          Fig 1. Remove the “\proofkit.ww” directory from the content location path.

  • Edit “programs” tab. The installation command should now include our custom.xml instead of the MSI-command. The command I used was: setup.exe /config \\sccm2012r2\Software\Office_2013_Proofing_Tools_with_Service_Pack_1\proofkit.ww\config.xml (Fig 2).

          proof_tools_sccm_2

          Fig 2. Programs/Installation program

  • I also use a dependency so that Proofing Tools can’t/won’t be installed if Office isn’t detected. On the Dependencies tab, select “Add”. Call the group whatever you want and add Office 2013 SP1 as a dependency (Fig 3).

          proof_tools_sccm_3

          Fig 3. Application Dependency.

  • I choose not to “auto install” Office with the proofing tools (Fig 4), as we sometimes just need to install proofing tools without office.

         proof_tools_sccm_4

         Fig 4. More Dependency-properties.

  • The rest of the information should be fine. I use install for system, whether or not a user is logged on, hidden.

 

Source: https://social.technet.microsoft.com/Forums/office/en-US/45ed8688-e7e4-415f-b26d-d3ae7bd9bc83/instaling-the-proofing-tools-kit-via-sccm

 

As a final note, do NOT use spaces in the directory name of proofing tools on the SCCM server. The custom.xml file will NOT be read correctly. I learned this the hard way after reading many office setup logs. (The logs are located in c:\windows\temp on the client during/after installation btw). I used the directory name “Office_2013_Proofing_Tools_with_Service_Pack_1” on our SCCM server.

Happy deploying! 🙂

Arduino and Rodin Deployment in SCCM 2012

I’ve been mostly focusing on MDT and other stuff so I haven’t posted that much about SCCM. Now it’s time to change that! 🙂 I’ll describe how I installed (and updated) Rodin and Arduino in our computer classroom. These aren’t perhaps the applications everyone use, but as we are an IT Department many “special cases” will arrive in our/my direction. Anyways, on to the installation. (This is btw not very well documented anywhere on Google 🙂 ) I may also add that the screenshots are from a virtual environment, NOT from our production server. Always test your stuff before breaking the production environment, OK?

I started by creating three applications (Fig 1), two for Rodin and one for Arduino. With Rodin I did a test-upgrade using supersedence (therefore two applications). With Arduino I just did an installation (the silent uninstallation does not work properly). There are probably many ways of doing this, and I’m not saying I’m doing it the “right” way. That said, it’s working.

sccm_applications

Fig 1. Arduino and Rodin Applications

 

Arduino

Deployment Type is the interesting part.

  • Create an application and manually specify the application information.
    • Name and manufacturer etc. etc. according to your needs.
    • Deployment Type: Script installer. Here are some parameters from the script installer:

arduino_content

Fig 2. Content

arduino_programs

Fig 3. Programs.

I googled and couldn’t find a silent installation switch for Arduino. I then googled some more and found a very useful little program called Universal Silent Switch Finder, http://www.portablefreeware.com/?id=2520. This helped me find the silent installation switch for Arduino (which was simply /S). I also did some research about the uninstallation switch, but came to the conclusion that it can’t be properly silently uninstalled even though I found the switch for it (also /S). This has to do with the installer itself, which in this case is Nullsoft Scriptable Install System (NSIS). Not going into any details here, just trust me. Anyways, not a big problem as this software isn’t going to be updated in our computer classroom anyway…

arduino_detection rule

Fig 4. Detection Method/Rule

arduino_user_experience

Fig 5. User experience

With these settings in place, you can successfully start deploying your application. I will not go through the application deployment process as it’s covered everywhere on the Internet. Only thing I can mention is that I use Action: Install and Purpose: Required. I won’t display the application in Software Center either.

 

Rodin

Deployment Type and Supersedence are the interesting parts. Rodin 1.2 and Rodin 1.3 are created basically in the same way, except 1.3 uses Supersedence.

  • Create an application and manually specify the application information.
    • Name and manufacturer etc. etc. according to your needs.
    • Deployment Type: Script installer. Here are some parameters from the script installer:

rodin_content

Fig 5. Content.

rodin_programs

Fig 6. Programs.

I have two subdirectories inside the main “rodin” directory; rodin_1.2 and rodin_1.3 (Fig 7). The directory also contain custom bat-files which “installs” and “uninstalls” Rodin. There are no installers or uninstallers available for Rodin (or Eclipse for that matter), Rodin is just an extracted zip file. The install bat-file copies the whole directory to a desired location and the uninstall bat-file on the other hand removes the directory. The bat-file also creates a shortcut on the Desktop for all users.

rodin_dir_screenshot

Fig 7. Custom bat files.

Contents of the install_rodin12.bat (same for 1.3 except dir name changes):

::Rodin Install Script

PUSHD %~dp0

xcopy “%~dp0rodin_1.2\*.*” “%PROGRAMFILES%\rodin_1.2\*.*” /I /Y /S & copy “%~dp0rodin_1.2\Rodin.lnk” “C:\Users\Public\Desktop”

POPD

exit /b 0

::Installation Complete

Source: http://www.experts-exchange.com/Programming/Languages/Scripting/Shell/Batch/Q_28187518.html

 

Contents of the uninstall_rodin12.bat (same for 1.3 except dir name changes):

rmdir /s /q “%PROGRAMFILES%\rodin_1.2” & del “C:\Users\Public\Desktop\Rodin.lnk”

Source: http://www.techsupportforum.com/forums/f10/batch-file-to-delete-folder-227649.html

 

The uninstallation information provided in Rodin 1.2 is then used before installing a newer version (1.3).

 

Next step is Detection Method:

rodin_detection_rule

Fig 8. Detection Method

For User Experience I will again choose to install for system, whether or not a user is logged on and visibility: hidden. That’s it for Rodin 1.2. The more interesting part is Rodin 1.3. The same steps are used as for 1.2, except Supersedence is defined. See Fig 9. The bat files defined for installation and uninstallation also has to match this current version.

rodin_supersedence

Fig 9. Supersedence.

 

Supersedence basically replaces the old application with the new one, using the uninstall information provided from the old application and the install information from the new application. And yes, it actually works. Old rodin_1.2 directory is removed and replaced by a new rodin_1.3 one.

Building a small Windows Server 2008 R2 cluster

Note: This document was written in Word back in February 2012. I’m just posting it now when I’ve entered the blogging area Smile

 

I had some old servers and some spare computers so I decided to build a test cluster with both physical and virtual servers. My main goal was to test out Microsoft’s Hyper-V virtualization solution as I’ve been working with VMware ESXi until now. I also wanted to try out System Center Configuration Manager 2007 as it is a very useful piece of software.

 

The following configurations were used:

 

Hardware:

 

Rack servers

 

primergy1: Domain Controller, DNS, DHCP

 

·         Fujitsu Siemens Primergy RX300 S2

·         2 x Intel Xeon 3.20GHz CPUs

·         4GB RAM

·         Dual NIC

·         6 x 146GB SCSI HDDs in hw raid-5

·         Windows Server 2008 R2 Enterprise SP1

 

 

primergy2: Storage Server (iSCSI)

 

·         Fujitsu Siemens Primergy RX300 S2

·         2 x Intel Xeon 3.20GHz CPUs

·         4GB RAM

·         Dual NIC

·         6 x 146GB SCSI HDDs in hw raid-5

·         Windows Storage Server 2008 R2 Enterprise SP1

 

 

primergy3: System Center Virtual Machine Manager 2008 R2

 

·         Fujitsu Siemens Primergy RX200 S2

·         2 x Intel Xeon 3.20GHz CPUs

·         4GB RAM

·         Dual NIC

·         2 x 146GB SCSI HDDs in hw raid-1

·         Windows Server 2008 R2 Enterprise SP1

 

Hyper-V servers

 

hyperv1:

·         Intel Core 2 Duo 2.33GHz

·         8GB RAM

·         Dual NIC

·         250GB SATA HDD

·         300GB mounted iSCSI Clustered Disk space from primergy2

·         Windows Server 2008 R2 Enterprise SP1

 

VM1: System Center Configuration Manager 2007 r3 (sccm)

Windows Server 2008 R2 Enterprise SP1 as OS

 

VM2: Windows 7 64 bit (win7client1)

 

VM3: Windows Server 2008 R2 Enterprise (failovertest, running from iSCSI clustered disk)

 

 

hyperv2:

·         Intel Core 2 Duo 2.13GHz

·         4GB RAM

·         Dual NIC

·         300GB SATA HDD

·         300GB mounted iSCSI Clustered Disk  space from primergy2

·         Windows Server 2008 R2 Enterprise SP1

 

VM1: System Center Operations Manager 2007 R2 (scom)

Windows Server 2008 R2 Enterprise SP1 as OS

 

 


 

Software:

 

Windows Server 2008 R2 Enterprise SP1

Windows Storage Server 2008 R2 Enterprise SP1

Windows 7 SP1 64 bit

 

Microsoft Hyper-V with failover clustering

System Center Configuration Manager 2007 R3

System Center Virtual Machine Manager 2008 R2

System Center Operations Manager 2007 R2

Microsoft SQL Server 2008 R2 Enterprise

Microsoft SQL Server 2005 Express

Microsoft iSCSI Software Target

 

 

image

Fig 1. The cluster

 

 

image

Fig 2. Cluster network diagram

Fig 1 above shows you a picture of the actual cluster and fig 2 shows a picture of the network diagram showing the actual connections between different servers.

 

 

Primergy 1  (2, 3 later)

The project started with OS installation on the three Fujitsu Siemens rack servers. These servers are not able to handle virtualization so they can only run one (Windows) OS per server, Windows 2008 R2 Enterprise in my case. These servers were designed back in the days when Windows 2008 wasn’t even in beta stage, and the installer had problems detecting the onboard SCSI card. Luckily I was able to download some drivers (available only for Windows Server 2003 and older) that worked and I got the servers up and running quite fast. I then run Windows update on all of them to ensure they were up to date even if it was only for test lab usage.

 

Now it was time for some cabling and configuration of the network. I hooked up all the three servers to a gigabit switch for internal communication. I started configuring primergy1 as it would become the Domain Controller. I enabled Active Directory Domain Services, DNS Server and DHCP Server roles.  The servers were configured with the following static configurations:

 

Network interface 1 (internal network):

Primergy1:                         Primergy2:                         Primergy3:

IP: 10.10.1.201                    10.10.1.202                         10.10.1.203

Subnet: 255.255.255.0        255.255.255.0                     255.255.255.0

DNS: 10.10.1.201                10.10.1.201                         10.10.1.201

 

I had previously changed the server names so now I just joined primergy2 and primergy3 to the domain. My domain is called jgs.test. I didn’t install anything on primergy2 and primergy3 just yet. I’ll get back to those servers later on.

I wanted to create only an internal domain network so I wouldn’t mess around with other (external) networks. When the internal network was configured I added an extra network cable to primergy3 for external access with RDP. Primergy3 is used to administer the whole cluster. I use RDP from that server to access all of the other nodes/servers/machines on the internal network. Configuration for second NIC on the primergy servers:

 

Network interface 2 (external network):

Primergy1:                         Primergy2:                         Primergy3:

Not connected                    Not connected                    DHCP

Set to obtain 192.168.17.203 from an external dhcp server

 

 

Hyperv1, 2

Now it was time for Hyper-V server installations. I started by installing Windows 2008 R2 Enterprise on both servers. After the installation I enabled the Hyper-V role (and the failover feature which I will try later on). I hooked up both servers to the gigabit switch with the other servers for internal communication. The servers were configured with the following static configurations:

 

Network interface 1 (internal network):

Hyperv1:                            Hyperv2:                           

IP: 10.10.1.205                    10.10.1.204

Subnet: 255.255.255.0        255.255.255.0

DNS: 10.10.1.201                10.10.1.201

 

Network interface 2 (external network):

Hyperv1:                            Hyperv2:                           

DHCP                                  DHCP

192.168.17.205 from          192.168.17.204 from

an external dhcp server     an external dhcp server

 

Now I joined the servers to the domain. After this it was time to configure networking in the Hyper-V manager on both servers. The configurations are almost identical on both servers so I’ll only write about hyperv1. I know that you should use dedicated physical network adapters for different tasks in the cluster, but as this is only a test scenario and not a production environment, I’ll settle for two adapters per host.

I started Hyper-V Manager and went to Virtual Network Manager. This is the place for all networking options in Hyper-V. You have to create virtual networks for the virtual machines. The network(s) can be external, internal or private. I chose external as I wanted to use the network cards for external communication. I built one virtual network for internal usage (10.10.x.x, domain) and one for external usage (192.168.x.x). Both were set as external in Virtual Network Manager though. In the beginning of each virtual machine installation I chose the external network as default. I chose this option because I want all of the new installations to be able to access the internet at first. This is mostly for updates and activation. After updates and activation, I switch over from external to internal network.

Now it’s time for the actual virtual machines to be installed. This is quite straight forward, at least in my configuration, as I have all of the virtual machines stored locally on disk. (I have now expanded my configuration and tried failover configuration with shared storage. I’ll write more about that later on).

Right click on the server name in Hyper-V Manager and choose new virtual machine. Follow the guide and install either from disk image (.iso) or from physical cd/dvd-rom. All options are rather self explanatory. Remember to choose the right network settings and you are good to go. Below is a screenshot of Hyper-V Manager:

 

clip_image002

Fig 3. Hyper-V Manager

 

Virtual Machines

 

System Center Configuration Manager 2007 r3 (sccm, on hyperv1)

I installed a new virtual machine on hyperv1 called sccm. I installed Windows Server 2008 R2 Enterprise as the base in this machine as this was required for sccm. I then followed guides for both sccm installation and configuration. The installation guide I followed is called Install SCCM 2007 on Windows Server 2008 R2 – Step by Step and can be found at: http://www.petenetlive.com/KB/Article/0000297.htm. Thanks to the author for the guides! I’ll try to recap the guides in a couple of steps.

 

1.      Create sql and sccm domain admin accounts in Active Directory on the Domain Controller (primergy1).

 

2.      Install IIS server role on the sccm server. Add a couple of IIS Role Services and Server Features.

 

3.      Go to Server Manager and configure WebDAV. Lots of permission options.

 

4.      Install SQL Server 2008 R2. Tick Database Engine Services. Tick Management Tools (Basic and Complete).

 

5.      Use the sql admin/sccm admin account created earlier for service accounts.

 

6.      Prepare Active Directory for sccm -> Extend Active Directory Schema on the Domain Controller. From the sccm install media > SMSSETUP > BIN > 1386 > extadsch.exe.

 

7.      Create some Active Directory objects go to a domain controller > Start > Administrative tools > ADSI Edit > Action > connect to. Lots of options, but most important is to allow your sccm-server (sccm) and sccm-admin Full Control.

 

8.      Install SCCM. Follow the guide. Apply sccm updates.

 

9.      That’s it. Now it’s time to configure sscm. I followed yet another guide from the same website. It’s called SCCM 2007 Initial Setup and Configuration. It can be found at: http://www.petenetlive.com/KB/Article/0000300.htm

 

10.  Just followed the guide. Note to self: worked pretty well except for some permission problems in sccm (the sccm client wouldn’t install on client computers). This was due to missing permissions in System Center Configuration Manager – Site Database – Central Site – Site Settings – Client Installation Method – Client Push Installation – Properties. Added a domain administrator account with more rights than the sccm-admin account and everything worked fine.

There was also a permission error on the Domain Controller. In Active Directory Users and Computers – System – System Management – Properties – Security, make sure that the computer “sccm” has Full Control.

BIG thanks to by friend Mats Hellman for these tips (and all other tips).

 

I now have a working sccm environment. I‘ve (push) installed sccm clients to all the servers and computers. My next step is to create installation packets for software installations. After that I’ll probably look at whole operating system installations via PXE. Below you have a screenshot of sccm in action:

 

clip_image002[4]

 

Fig 4. System Center Configuration Manager 2007

 

 

Windows 7 64-bit (win7client1, on hyperv1)

I installed a new virtual machine on hyperv1 called win7client1. I installed Windows 7 64-bit as operating system. I joined the machine to the domain and disabled the firewall so that the sccm client could be installed without problems. I pushed the sccm client from the sccm server to this client. That’s it for this machine (for now).

 

Windows Server 2008 R2 Enterprise (failovertest, on hyperv1)

This virtual machine was installed to test the failover cluster configuration within Hyper-V. More about that later on.

 

System Center Operations Manager 2007 R2 (scom, on hyperv2)

This virtual machine gets installed after primergy2 and primergy3. I’ll get back to this one later in the document.

 

 

Primergy 2

As I said before, the project started with OS installation on the three Fujitsu Siemens rack servers, including Primery2&3. Windows Server 2008 R2 Enterprise SP1 was already installed on this server and all I had to do was to install the iSCSI component. There’s a very good guide for this called How to setup iSCSI on Windows Server 2008, available from:

http://technet.microsoft.com/en-us/edge/Video/ff710316

 

I’ll try to recap my steps:

 

1.      Start Microsoft iSCSI Software Target from Administrative Tools

2.      Create two new ISCSI Targets called iscsi-target1 and iscsi-target2. I made two targets because you can’t share the same target on the (hyper-v) servers if they aren’t configured as a failover cluster. I haven’t looked into this just yet, so I’m fine with having a separate iSCSI target for each server.

3.      Give the IP-address/host for the initiator, IQN Identifier (the computer that will connect to this ISCSI target).

4.      Create a virtual disk for iSCSI target. One for each target in my case.

5.      Go to the server/computer that will “mount” the iSCSI drive. Go to administrative tools and start iSCSI Initiator.

6.      Go to the discovery-tab and enter IP-address for the iSCSI target server. In my case 10.10.1.202. It should now discover the iSCSI target. Others steps are in the guide.

7.      Format the new drive. It can now be used as a normal hard drive attached to the computer.

Note: I had “offline” problems on one of the hyper-v servers. It got fixed by following the steps on: How to change default SAN disk status from offline to online

http://social.technet.microsoft.com/Forums/en-US/winserverfiles/thread/c14bdde3-6359-463d-9932-5fe7ec72505e

8.      I now have an iSCSI disk on both hyper-v servers. I’m going to install my next virtual machine on this drive instead of local storage just for the fun of it.

9.      Later on I created new targets for use with failover clustering.

 

Below you have a picture of the Microsoft iSCSI Software Target main window.

 

clip_image004

Fig 5. Microsoft iSCSI Software Target

 

 

Primergy 3

It was now a suitable time to install System Center Virtual Machine Manager 2008 R2 because it is dependent on the Hyper-V servers. Quote from Microsoft’s own site:

System Center Virtual Machine Manager 2008 R2 helps enable centralized management of physical and virtual IT infrastructure, increased server utilization, and dynamic resource optimization across multiple virtualization platforms. It includes end-to-end capabilities such as planning, deploying, managing, and optimizing the virtual infrastructure.

 

Nothing complicated about this installation. Windows Server 2008 R2 Enterprise SP1 was already installed on this server and now I just installed System Center Virtual Machine Manager 2008 R2 (SCVMM).  SCVMM requires sql so I installed the bundled Microsoft SQL Server 2005 Express Edition. Later on you enter the servers you want to administer, in my case hyperv1 and hyperv2. From here on, you can add or remove virtual machines from scvmm instead from the local hyper-v servers. Small installation guide if needed:

http://blogs.technet.com/b/scvmm/archive/2009/01/05/scvmm-2008-installation-step-by-step.aspx

 

Below is a screenshot from System Center Virtual Machine Manager 2008 R2 displaying connections to hyperv1 and hyperv2:

 

clip_image006

Fig 6. System Center Virtual Machine Manager 2008 R2

 

 

System Center Operations Manager 2007 R2, continued (scom, on hyperv2)

Last but definitely not least we have System Center Operations Manager 2007 R2. I saved this one for last because it’s more or less dependent on all other machines. It is “just” a (health) monitoring tool for all my virtual and physical servers/machines. In my initial configuration I had this one as a fourth physical server but it turned out that the server had some hardware problems L

 

I installed a new virtual machine on hyperv2 called scom. I installed Windows Server 2008 R2 Enterprise as the base operating system in this machine as it was required for sccm. I then joined it to the domain and installed SQL Server 2008 R2 as a SQL server was required for scom. At the time scom 2007 was released, there wasn’t support for SQL Server 2008 R2. No problem though, I just had to do some small tweaks before the scom installation. A good guide for this, Installing SCOM 2007 R2 on SQL 2008 R2, is available at:

http://systemcenterdynamics.wordpress.com/2011/01/12/installing-scom-2007-r2-on-sql-2008-r2/

After doing all the tweaks, the installation went just fine. After that I just fired up the application and did some required configuration settings. You can do/monitor A LOT with scom, but the initial configuration was more than enough for my little cluster test. Below is a screenshot of System Center Operations Manager 2007 R2:

 

clip_image008

 

Fig 7. System Center Operations Manager 2007 R2

 

 

 

 

Hyper-V Failover Clustering

 

Lastly I decided to try out Failover Clustering with Hyper-V. I went to Server Manager and enabled the Failover Cluster feature. I then followed a guide called Creating Hyper-V Failover Cluster (Part 1), available from:

http://blog.frankovic.net/2010/04/creating-hyper-v-failover-cluster-part-1/

I had already done the preparation work like setting up Windows 2008 Storage Server for iSCSI. I followed the guide and created two iSCSI Targets called “Storage” and “Quorum”. I added the disk resources to hyperv1 and hyperv2 (with help from the guide). With this part done, it was now time to create the actual failover cluster. Firstly I started the Failover Cluster Manager and validated my configuration which passed the test.

I then started Hyper-V console and created a new virtual machine. I didn’t start it just yet. I then minimized Hyper-V console and maximized Failover Cluster Manager. I right clicked Services and applications and selected Configure a Service or Application. I chose virtual machine from the bottom of the list and clicked next. I selected my newly created machine and clicked next. This virtual machine is now configured as highly available. I restored Hyper-V console and started up my virtual machine. It now installed Windows Server 2008 R2 as a new highly available virtual machine. That’s it for installation.

My cluster is now able to migrate the virtual machine “failovertest” from one node to another.

 

 

clip_image010

 

Fig 8. Failover Cluster Manager

 

 

 

Final words…

 

That’s it for now. This has been a really fun project and I’ve learned a lot on the way. Hyper-V turned out to be really easy to use and a fair competitor to VMware. System Center Virtual Machine Manager 2008 R2 supports both Hyper-V and VMware hosts so you can manage everything from one platform which is a very nice solution.

 

I will look more into System Center Configuration Manager 2007 (sccm), as it is an interesting and very useful product.

 

Big thanks to Mats Hellman for helping me out with problems on the way and for giving me ideas on what kind of infrastructure to build for this small scale test environment.

 

 

 

Sources

 

Mentioned in the text.