Welcome to MSDN Blogs Sign in | Join | Help

David Zazzo

Microsoft Consulting Services
Enabling OCS Enterprise Voice using WMI and C# or PowerShell

One of the OCS projects I’m working on is building out a provisioning system for both Exchange UM and OCS voice for their upcoming OCS voice pilot. 

If you’ve ever dealt with OCS automation you know its all WMI-based.  WMI isn’t the most friendly way of doing this stuff, and if you’re a scripter or a programmer, it certainly requires some brain wrapping to understand how it all works.  Worse yet, there’s not a lot of documentation (that I was able to find – perhaps I didn’t look in the right place) on how to manage OCS users programmatically using any language, let alone C# and .NET.

I’ve mostly finished up the OCS module, and wanted to share the C# and PowerShell code that will help you programmatically enable your users for OCS voice.  This code segment is certainly part of a larger application, but you’ll be able to get the jist of it.  You’ll need to make sure that you retrieve the LDAP distinguishedName values for your specified Location Profile and Voice Policy and assign those to targetLocationProfileDN and targetVoicePolicyDN respectively.  You could use System.DirectoryServices to look it up on the fly, or use a configuration file and specify it there and just bring that in.

C# Example:

ManagementObject userOCSAccount = null;

          string targetLocationProfileDN = "CN={6D7A2437-N0TA-R3AL-GU1D-F7B464597478},CN=Location Profiles,CN=RTC Service,CN=Services,CN=Configuration,DC=contoso,DC=com";
          string targetVoicePolicyDN = "CN={A78D1ACE-N0TA-R3AL-GU1D-FEA023942FEC},CN=Policies,CN=RTC Service,CN=Services,CN=Configuration,DC=contoso,DC=com";

          //  Build the WMI query that we'll use to look up the user's information
          SelectQuery userWMIQuery = new SelectQuery( "SELECT * FROM MSFT_SIPESUserSetting WHERE PrimaryURI=’sip:someone@contoso.com’" );

            using( ManagementObjectSearcher wmiSearcher = new ManagementObjectSearcher( userWMIQuery ) )
            {
                foreach( ManagementObject searchResults in wmiSearcher.Get() )
                {
                    userOCSAccount = searchResults;
                }
            }

            userOCSAccount[ "LineURI" ] = "tel:+14257064020";
            userOCSAccount[ "LocationProfile" ] = targetLocationProfileDN;
            userOCSAccount[ "UCPolicy" ] = targetVoicePolicyDN;
            userOCSAccount[ "UCEnabled" ] = false; 

            //  Let’s save the changes back to OCS
            userOCSAccount.Put();
            userOCSAccount.Dispose();

PowerShell Example:

$targetLocationProfileDN = “CN={6D7A2437-N0TA-R3AL-GU1D-F7B464597478},CN=Location Profiles,CN=RTC Service,CN=Services,CN=Configuration,DC=contoso,DC=com”

$targetVoicePolicyDN = “CN={A78D1ACE-N0TA-R3AL-GU1D-FEA023942FEC},CN=Policies,CN=RTC Service,CN=Services,CN=Configuration,DC=contoso,DC=com”

$userOCSAccount = Get-WmiObject –Query “SELECT * FROM MSFT_SIPESUserSetting WHERE PrimaryURI=’sip:someone@contoso.com’”
if( $userOCSAccount –ne $null )
{
      $userOCSAccount.LineURI = “tel:+14257064020”
      $userOCSAccount.LocationProfile = $targetLocationProfileDN
      $userOCSAccount.UCPolicy = $targetVoicePolicyDN
      $userOCSAccount.UCEnabled = $true

      $userOCSAccount.Put()
}

If you’re diving into the world of OCS automation either through scripting, PowerShell, or .NET, I hope these snippets get you pointed in the right direction.  I’ll have more code snippets as I go, and I’ll post them here.  Good luck!

Shaking off the dust…

I haven’t posted recently – I know.  Between my current customer and some of the other things I’ve been doing, it’s been hard to find time to write.

That said – working on some things in the background that I’ll start talking about in due time… in the meantime, check out the TechNet 2009 Summer Scripting Games over at Microsoft TechNet.  Some prizes can be won, and if you don’t win, it’s a lot of fun to participate and both flex your mad scripting skillz but also see what others do and gain some insight to different approaches for common issues.

Of course, the shameless plug – I was asked this year to be a guest commentator of the scripting games, so check out my contribution here.

How I Use Hyper-V in my Consulting Role

As the title suggests, I work in Microsoft Consulting Services as a field guy.  This usually means that I work out of a backpack – have trusty laptop, will work anywhere.  Most anywhere, that is.

Doing messaging and infrastructure projects, I often have a need for a test environment that I can use, abuse, and abuse again.  My customers generally have test environments available, but more often than not, they’re not what you might consider a development lab more than they are a pre-production lab – an environment that should mimic production as closely as possible to test changes and final code builds.  When you’re writing code, performance invasive configuration changes, testing out build processes, etc, you need a lab environment that you can abuse and rebuild as you please.

This is where Windows Server 2008 Hyper-V comes in.  My Microsoft standard issue laptop sports a decent dual-core processor that supports virtualization, and runs Intel’s Santa Rosa chipset, so I can scale up to 8 GB of RAM in it (which I have.)

Having the laptop that supports Hyper-V has provided me with a way to stand up a development lab for script development, build testing, etc that won’t (can’t) affect anything else in the world.

Hyper-V allows me to set up a number of virtual machines with a combination of virtual networks so I can do a lot of cluster set up, tear down, install, uninstall, etc – all without clobbering the network or an established Active Directory environment.  Being virtual also lets me roll back or very quickly set up another system if I need it.

So, in my current engagement – I am currently running 8 virtual machines: 1 domain controller, two CCR mailbox nodes, an SCR mailbox node, a client access server, a hub transport, and a pair of public folder servers.

The CCR and SCR mailbox servers each have 9 virtual disks – 1 for the system, then 8 more to simulate the LUN design that we’re going with (for testing database creation scripts).  The hub transport has a couple of additional virtual disks as well for message tracking and logging.

Networks wise, I have three of them:

  • “External” – an external network bound to the physical NIC in the ThinkPad.  This enables me to use a VM to go off-host and get to Microsoft Update or TechNet if I need to.  I have a couple of non-Exchange-lab VMs that use this NIC as well, but for my day-to-day purposes, this virtual network goes unused.
  • “Internal Network” – an internal-only network that is available to the host system as well as the VMs.  This network is the primary network that is used by the virtual machines, and is on a non-routable private IP range (10.0.0.0/8) that isn’t used by my customer (in case I fat-finger a VM and put it on the external network I mentioned above).  Since this is exposed to the host, I can map a drive to my domain controller and copy up my scripts and other bits for distribution to the VMs.
  • “CCR Cluster Network” – a private network (available only to the VMs) that is used for cluster heartbeat.  Since there won’t be “real” traffic on this network, I don’t care that I can’t get to it from the host, and helps simulate a real heartbeat/management network that might be used in production.

Hyper-V allows me to very easily change configuration settings, swap networks, rollback, set up a new machine – all things that would be very expensive, time-consuming or even impossible to do in a physical lab environment.

As an example, just this morning… “turned off” the two CCR nodes, flattened their system disks (which consists of deleting two files), recreated their system disks (copy two files), and reinstalled Windows Server 2003 on them.  Reformatted their data virtual disks just the same way – copied some template disks I keep around and had their names match the old ones.  Voila!  Two brand “new” mailbox servers that are going to be victims of my next build of the install scripts.

If you do any kind of personal development and need a test platform that can very easily adapt to your requirements and your work style, I’d strongly suggest checking out Hyper-V and see if it’ll work for you.  Particularly with the release of Microsoft Hyper-V Server, this stuff just gets easy and inexpensive to do.

Using Regular Expressions to Programmatically Determine Exchange Server Role from the Server Name

My current customer uses a strong naming convention for their Exchange Servers.  This enables them to quickly and easily determine what role and which domain a server is located in.

Their algorithm for naming goes a little like this: EXCH-<DomainID>[RoleID]-<Node#>, where:

DomainID = a two-character identifier for the domain
RoleID = a two- or three-character identifier for the server role
Node# = a two-digit server number

So, an example of this might be EXCH-RDCAS-01, for Exchange server, Redmond domain, Client Access server, #1.  Might also have EXCH-RDHT-01, or EXCH-RDUM-01.

A variant on this is mailbox clusters and cluster nodes.  Since there is more detail, the convention changes slightly: EXCH-<DomainID>-<Cluster#><C or S><Node#>, where:

DomainID = same as above
Cluster# = mailbox cluster #
C or S = CCR node or SCR target
Node# = usually a 1 or a 2

One of my primary deliverables for the current phase of their Exchange Server 2007 project is automated installation scripts.  To simplify things, I’ve been writing a single consolidated “InstallExchange.ps1” script that will automatically determine the role of the server and install/configure as appropriate.

To determine the server role, I previously used overly complex logic to parse out the name based on hyphens (-), then did a lot of System.String.Substring() calls to grab two characters from there, three from over here, is there a C in it, etc. 

I was looking at some other .NET stuff, and realized that I can use a regular expression to both validate that the name matches the convention but also have PowerShell (which is built on .NET) doing the parsing for me.

The regular expression that does the job is:

^(EXCH)-(\w{2})(\w{2,3})?-(\d+)(([C,S])(\d{1}))?$

In PowerShell, you use the –match operator to apply a regular expression against a particular string or variable.

In code, this looks like:

$ValidNameRegEx = “^(EXCH)-(\w{2})(\w{2,3})?-(\d+)(([C,S])(\d{1}))?$”

if( $MachineName –match $ValidNameRegEx )
{
      # … do stuff …
}

A great benefit from using regular expressions in PowerShell is the $matches hashtable that is automatically generated that contains the results of any groupings you specify.

In the example above, the parenthesis surround specific items that I want to call out explicitly.  The –match operation returns a $matches object that has the following array items, in order of matching:

$matches[0] : The entire string that matched
$matches[1] : The literal string “EXCH”
$matches[2] : The domain identifier (such as “RD” or “DZ”) – 2 characters max
$matches[3] : The role identifier (like “HT” or “CAS” ) – 2 or 3 characters.  Optional (if mailbox server)
$matches[4] : The server OR cluster number (Node ID/Cluster Number)
$matches[5] : Mailbox Cluster: the entire C1, C2, S1, S2 string.  Not used.
$matches[6] : Mailbox Cluster: The C or S designator for CCR or SCR.
$matches[7] : Mailbox Cluster: The cluster node number

This allows me to make my code much simpler to write and cleaner to read.  The … do stuff … section above then becomes:

$DomainID = $matches[2]

switch( $matches[3] )
{
      “HT” { $ServerRole = “HubTransport” }
      “CAS” { $ServerRole = “ClientAccess” }
      “UM” { $ServerRole = “UnifiedMessaging” }

      # … so on and so forth ….
}

Using regular expressions, I was able to remove a good chunk of string parsing code and streamline the process.  I also took a step and moved the parsing code into a separate code file that can be shared by many scripts that all need to do this operation (like disk configuration).  This is accomplished by dot sourcing… or simply calling:

. .\GetServerRole.ps1

inside of your script.  Take note of the lone period (.) in front of the script name.

If you are writing your own PowerShell scripts and need a drive-by course on regular expressions, Regular-Expressions.info has a lot of good information and a decent tutorial that can help you get started.

Upgrading to Zune 3.1 from Zune 3.0 on Windows Server 2008

Updated:  Added an image for the registry entry and clarified some details. 

As a follow up to my last post about overriding the hard block for Windows Server 2008 in the Zune 3.0 setup launcher (http://blogs.msdn.com/dzazzo/archive/2008/09/16/installing-zune-3-0-on-windows-server-2008.aspx), I wanted to make sure I reached out and provided instructions on how to upgrade to Zune 3.1 from Zune 3.0. 

If you've gone ahead and tried this, you'll realize that Zune 3.1 also has the hard block for Windows Server 2008... AND, you can't unintall Zune 3.0 because the item in Programs and Features executes ZuneSetup.exe, which ... has the hard block.  So, what to do?

The trick to "upgrade" to Zune 3.1 is to uninstall Zune 3.0 using a workaround, then install Zune 3.1 using the same workaround I previously blogged about.

Uninstalling Zune 3.0

To uninstall Zune 3.0, you won't be able to use Programs and Features.  The Remove button there executes ZuneSetup, which we know won't work.  To find the "real" uninstall string, we need to go digging into the registry. 

(Warning: Wrong action on registry may potentially damage your system. Please make sure to back up your registry before taking any action).

Open up Registry Editor, and navigate to the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall key.  Search for a GUID entry for Zune.  (A GUID looks a lot like {FF70513F-E3A7-402F-84FB-B7810A064BE2}.)  See the following picture for an example of what I'm talking about:

(If your UninstallString includes ZuneSetup.exe, then you've probably looked at the "Zune" registry key, not a  GUID registry key.  Search above for another Zune key -- hint:  compare the DisplayName value to "Zune") 

Once you find a GUID entry for Zune, look at the UninstallString.  It should look like:

MsiExec.exe /X{FF70513F-E3A7-402F-84FB-B7810A064BE2}.

Copy that command to your clipboard, drop down to a command prompt, and run it.  You should see Zune 3.0 start to uninstall itself from your machine.  Once it's complete, you can then turn around and use the previous workaround to install the Zune 3.1 software on your Server 2008 system.

I'll also update the existing post, but I would recommend keeping the extracted Zune 3.1 binaries around - if you kept the Zune 3.0 binaries, then you would be able to easily run "MsiExec.exe /X Zune-x64.msi" instead of digging around for a GUID in the registry.

And, as always:

This absolutely not supported or endorsed by Microsoft.  If you use this workaround, get Zune installed on Windows Server 2008, and then it doesn't work, make sure you can repro your problem on Windows Vista before calling for support.

Also, don't install Zune on a production server.  That should be an obvious one. (Note that this doesn't apply to Zune specifically - don't install any media playback or anything unnecessary on a server system.)

Welcome to the Social!

Installing Zune 3.0 on Windows Server 2008

UPDATE:  If you are looking to upgrade Zune 3.0 to Zune 3.1 on Windows Server 2008 and used this or a similar workaround in the past, check this updated blog post out on how to do that.

The Zune team released version 3.0 of the software and firmware for the devices today - and it touting a lot of great improvements.  One of the enhancements I'm excited about is Channels and being able to use my Zune Pass to sync up content automatically.

I run Hyper-V on my ThinkPad T61p, and so I run Windows Server 2008.  I've been using the Zune 2.5 software without a problem on my ThinkPad, so went and proceeded to download the 3.0 software and get in installed.  Then, I ran into a problem:

zune-cant-install 
So, Zune setup detected that I was running Windows Server 2008 and blocked install.  Asking around the internal mailing lists, no one had come up with a workaround, so I set out to find out, and I did.

Here's how you do it:

Before I begin, it is important for me to note that this is absolutely not supported or endorsed by Microsoft.  If you use this workaround, get Zune installed on Windows Server 2008, and then it doesn't work, make sure you can repro your problem on Windows Vista before calling for support.

Also, don't install Zune on a production server.  That should be an obvious one. (Note that this doesn't apply to Zune specifically - don't install any media playback or anything unnecessary on a server system.)

First, uninstall the existing version (if any) of the Zune software.  Go to Control Panel, Programs and Features, find Zune, and uninstall it.

Next, Download the Zune setup package for version 3.0 for your architecture:

32-bit: http://go.microsoft.com/?linkid=7313338

64-bit: http://go.microsoft.com/?linkid=7313339

Save it to a folder on your computer (don't choose "Run" or "Open").  Open a command prompt, and navigate to the folder where you saved it.

Run "zunesetuppkg-<x86 or x64>.exe /x" to expand the files to a directory of your choosing.  You'll have a folder structure that looks like the following:

Directory of C:\Users\davidzazzo\Downloads\zunesetup30

09/16/2008  07:53 AM    <DIR>          .
09/16/2008  07:53 AM    <DIR>          ..
09/16/2008  07:53 AM    <DIR>          en-US
09/16/2008  07:53 AM    <DIR>          es-ES
09/16/2008  07:53 AM    <DIR>          fr-FR
09/16/2008  07:53 AM    <DIR>          packages
09/12/2008  06:49 PM           897,440 ZuneSetup.exe

"ZuneSetup.exe" is the setup wrapper that'll refuse to install Zune on your Windows Server 2008 system, so we'll skip that. 

Change into the "packages" directory you see there, and you'll see a couple of MSI files:

Directory of C:\Users\davidzazzo\Downloads\zunesetup30\packages

09/16/2008  07:53 AM    <DIR>          .
09/16/2008  07:53 AM    <DIR>          ..
08/27/2008  04:18 PM             7,630 muauth.cab
09/12/2008  06:56 PM           112,128 Zune-es.msi
09/12/2008  06:59 PM           113,152 Zune-fr.msi
09/12/2008  07:02 PM        32,441,856 Zune-x64.msi

The MSI file that we want to install is Zune-x64.msi (or the appropriate file for your architecture - 32-bit or 64-bit). 

Run "msiexec /i Zune-x64.msi" to install the Zune 3.0 software.  You may or may not get a install confirmation, but you'll definitely see the desktop icon appear once it's all good to go.  After that, open up Zune from the Start Menu and you're good to go!

(You can now safely remove the temporary directory where you expanded the initial zunesetuppkg-xxx.exe.)

Happy Listening.

Exchange 2007 - Unlimited isn't really unlimited

While researching a problem with message size limits at a customer site the other day, I stumbled across a very interesting situation with a setting of "unlimited" for the organization-wide message size limits.

To configure organization-wide limits, you can use the Set-TransportConfig cmdlet to set the MaxReceiveSize and MaxSendSize, which controls the maximum message size that users can receive and send, respectively.

In my case, my customer wasn't ready to set any size limits (still working out policy and user communication issues).. so we set them to "unlimited":

Set-TransportConfig -MaxSendSize:unlimited -MaxReceiveSize:unlimited

So, that was all fine and dandy - except that we were still unable to send a message larger than 5 MB through OWA and through the clients. 

After doing a little more internal research - stumbled across an interesting throught.  Apparently, the term "unlimited" is misleading.  As it was written in the notes of a PSS case I found, "unlimited" means that the user can send an unlimited amount of the 5 MB default size limit, not that the size limit itself is unlimited.

Setting the MaxReceiveSize and MaxSendSize to 150 MB fixed our problems, and enabled us to send large attachments via e-mail.

Virtualized Communications - Part two

I've been somewhat dark on writing as I was just going through an internal boot camp for new hires in Worldwide Services called Microsoft Services University.  Two week intensive course.  Whew!

My new Dell system arrived a couple of weeks ago.  The one I talked about in my last post.

Anyway - there's been a couple of changes to the configuration since I last wrote about it.  I've decided to scrap the Asterisk PBX virtual machine.  I did that for a couple of reasons - I was running out of time to muck around with the sipX (or the SIP Express Router) component I'd need to do the SIP/UDP -> SIP/TCP tunneling, and it wouldn't copy over correctly from Virtual Server 2007 to Hyper-V Beta 1, and not being a Linux guy, I had no idea how to reinstall the network drivers so it'd work.  I had reached the end of the line for my Asterisk "fun."

I spent a little cash and bought myself an AudioCodes MP114 gateway device.  It's an approved Microsoft UC device - and essentially, you plug it into your wall (or in my case, the VoIP adapter), plug it into your network, and you can optionally plug a land-line telephone into it as well.  It acts as the gateway between the central office (again, in my case, it's a VoIP provider) and the network.

It arrived a couple of weeks ago, and is still sitting on my desk unconfigured.  I haven't had a chance to play with it and move it downstairs to where my VoIP adapter lives.  (I suppose I could move my VoIP adapter upstairs.  Hmm.)  Might be something I play with a little more this week before I leave for Charlotte, NC.

On the new computer, I've gotten Windows Server 2008 installed along with Hyper-V.  I've gotten one VM configured and built with WS2008, and am about to take an image of it so I can easily deploy new VMs (so I don't have to keep reinstalling Windows over and over and over again - just copy the VHD, mount it into a new VM, and rock and roll.)

I'm not very far with my configuration yet.  I do have high hopes for it all, though.  I just hope that I can cram all of this stuff onto a single box.

Oh ... and Windows Home Server so far won't install on a Hyper-V virtual machine.  When I find time, I'll track that down as well, figure out what gives.

Domain/Forest Functional Levels

I'm taking an accelerated class next week for Windows Server 2008 and Active Directory in Charlotte, NC -- part of the class itself is a pretty in-depth self-study component.  Covers everything from the marketing and positioning that we're doing along with the technical details.  Whitepapers, PowerPoint slide decks, WebCasts (both public and private).

One of the links that I stumbled across while going through the AD materials was this document outlining what each of the Domain and Forest Functionality Levels gives you.  Previously, I know knew at a topical level what each level turned on - but this is pretty good information.

You can find it up on Microsoft TechNet:

Appendix of Functional Level Features
http://technet2.microsoft.com/windowsserver2008/en/library/34678199-98f1-465f-9156-c600f723b31f1033.mspx

Cheat sheet: what's in a SID?

On the internal Directory Services mailing list, John Sanz (a Premier Field Engineer) posted this handy dissection of a user's SID.  The original question was whether or not someone could determine whether or not a particular SID was created on an NT 4.0 domain -- and while you can't easily tell, if you have a reference SID, you could check the SIDs against each other to determine which domain it originated from.

With John's permission, I've re-posted it (and web-ified it) here for my/your reference:

The formula:  "S"-R-I-S-S-S…

S:            Identifies this is a SID

R:            Revision level

I:             Identifier Authority  (see http://msdn2.microsoft.com/en-us/library/aa379649.aspx for values)

S:            First subauthority

S:            Second subauthority (typically the domain RID)

S:            Third subauthority (typically the RID of the object within it’s domain)

 

Example:

S-1-5-21-1234567890-0987654321-4258828080-70640209

"S" - Identifies this string of characters as a SID

R = 1
Revision level of 1

I = 5
Identifier Authority is "SECURITY_NT_AUTHORITY"

S = 21
First Subauthority is "SECURITY_NT_NON_UNIQUE"

S = 1234567890-0987654321-4258828080
This is the RID of the domain

S = 7064020
This is the RID of the group/user

(Any resemblance to any actual SIDs is unintended and coincidental in nature.  I'll be interested to see a domain RID that matches the Microsoft Corporate Campus main telephone number (425-882-8080).)

Thanks John!

 

(Edited to remove the table that was getting eaten up by the blog style sheet.)

Virtualized Communications - part one

As part of my Unified Communications technical readiness (and my general fascination with OCS and Exchange 2007 UM), I've been working on building out a virtual environment at home that uses my VoIP phone number, and eventually farms it out to OCS and Exchange UM.

The pieces I need:

  • A PBX.  I've chosen to go with the Linux-based Asterisk PBX on this one, namely because I'm too cheap (ha!) to shell out the cash for a real Nortel CS1000 PBX.  Can't imagine why.
  • A domain controller
  • A system running Exchange 2007 with all four roles (Mailbox, Hub Transport, Client Access, UM)
  • A system running OCS 2007's front-end role
  • A system running OCS 2007's mediation server (for voice) - could be the same box as the Exchange server.
  • A system running Windows Home Server
    (Okay, yes, WHS isn't required in any of this, but it looks cool and I want to try writing some home automation software for it.  The bits that came with my existing computer controller sucks out loud.  And doesn't work with Vista UAC.  And doesn't run as a service, so I have to be logged on for it to turn my lights on and off.)

Hmm.  Not particularly interested in buying 5 systems, power them, find room for them in my garage, network them, etc.  So, with the launch of Windows Server 2008, I decided that I'd make 'em all virtual.

I've been working on the virtual machine for Asterisk (and the required SIP gateway to get SIP from UDP to the TCP flavor that Exchange/OCS like), and have that nearly complete.  I can get SIP traffic from the VoIP provider, and it correctly passes it off to my analog telephone adapter (ATA) which makes the house ring.  Cool.   But I've got 5 systems that still need to be set up and virtualized.

To avoid overloading my already overloaded personal home PC, I went to Dell's web site and picked up a Dell Inspiron Desktop 530, and configured it as such:

  • Intel Core 2 Quad Processor, Q6600, 8MB L2 cache, 2.4GHz
  • 4GB Dual Channel DDR2 667MHz
  • (1) 500GB SATA drive, 7200rpm
  • (... the other usual stuff, CD/DVD, networking, no modem, no floppy)

Configuration price tag was $1,168.  There were some discounts I got, check with your local Dell rep to see if you get any discounts too, so it came to just above $1k after tax and shipping to my house.

Looking forward to it showing up.  I've got the RTM bits for Windows Server 2008 sitting around, waiting for it to ship and arrive.  The thing I'm most looking forward to is consolidating the four servers I have in my garage now into one, maybe two, and having the rest of the world not know its virtual.

I'll post a follow up once it does arrive and I start playing with it.  I'm really excited to fire up WS2008 on it, though, and take it out for a spin.  Stay tuned.

it's techready6 time

So, this week, it's TechReady6, an internal "conference" designed for folks within Microsoft Services.  Staffers from all over the place come out to Seattle for this -- TAMs, Consultants, folks from DPE (still haven't found out what that stands for), PDRMs, Practice Managers, etc.

Folks also come out from all across the globe - saw several attendees from France, the UK, Israel, Canada, etc.  It was pretty cool to see.

Technical content ranges - most of the sessions are in the 200-300 range, though there are a handful of 400 level sessions.  Anthony Witecki and I saw Mark Russinovich this afternoon - he spoke on the new core (and when I say core, I mean waaaaaay deep down core - no fluffy stuff like BitLocker, UAC, or the client-facing stuff that hit the streets with Vista) advances in Windows Server 2008.  Stuff like _____, _____, and the way-too-cool ________________.  Make sure you grab a copy of Windows Server 2008 and start playing with it.  MSDN, TechNet, go buy the thing when it launches on the 27th - whatever you need to do.  It's cool.  Get in early.

TechReady is also trying to go green this year - that was a big splash this morning.  Bamboo plates (rather than paper or poly), rather than bottled water, they gave us nice Nalgene water bottles.  The badge holders (conference badge, not our Microsoft ID badge) are recyclable, as are the conference satchels (they're not that spiffy - I would've preferred a nice T-shirt, or a nice backpack -  Brian and James got nice backpacks last year when they went to Tech-Ed.  Their blog is very good -- but, for the meantime, it's SSL protected using an internal certificate - so, ignore the cert warning - it's good stuff - it's even snowing on their blog.)

In other news...

You may have heard the announcements last week that Windows Server 2008 and Windows Vista SP1 went RTM.  I haven't had a chance to play with Windows Server 2008 yet, but I'm installing Vista SP1 as I write this.  Looking forward to seeing

[... break in the action ...]

Vista SP1 took over my computer while I was in the middle of writing that sentence.  Now I have to play with it and see what its all about.

More TechReady6 tomorrow.  Catch you on the flip side.

It's Alive!

So, I've set up my MSDN blog.  This should be obvious since you've stumbled across this initial posting.  Thanks for coming. 

A little bit of background on me:  I've recently joined the ranks here at Microsoft Consulting Services.  I'm an infrastructure consultant with an emphasis on messaging and collaboration - in other words, I care about Active Directory, Exchange 2003/2007, Office Communications Server, and SharePoint.  My expertise lies in Exchange and AD, though, I'm currently interested in the unified communications space - so, Exchange and OCS.

I'm certain that over the next few weeks and months, I may post tidbits and other blurbs here as I come across them.  I can't guarantee anything about the frequency of the posts - it might be busy, it might be awfully quiet around here -- but I hope that anything I ramble about is useful to you in one way or another.

Page view tracker