Thursday, April 30, 2009

Windows 7 RC publicly available on MSDN/TechNet

So Windows 7 RC should be available at TechNet and MSDN on Subscriber Downloads beginning from 6:00 AM Pacific Time or 15:00 CET time. The only problem right now seems to be that both Subscribers Download sites are down currently (But luckily is running, so I have it fully downloaded in a few moments ;-)

Anyway – here’s the news for you. I have been running Windows 7 for quite a while now and it the perfect mix of speed from Windows XP and features (and more) from Windows Vista ;-)

Are there types of files or folders that I cannot share or synchronize with Live Mesh?

Yes – read here.

I normally use Jungledisk for cloud-based storage but in certain scenarios Live Mesh is better: Sharing with others and when I have to synchronize files from a place where I do not want to use my JungleDisk encryption keys. JungleDisk encrypts data before they leave the computer.

BTW, I tested Live Mesh with an EFS-encrypted file. As it can read the file, it simply meshes the file up – so beware that you do not compromise security – and remember that Microsoft can read your data.

JungleDisk will not copy the file, but that may simply be a side effect, as JungleDisk runs as a service and thus does not have access to my EFS-decryption keys.

Get-Packet, a Packet Sniffer for PowerShell

This guy, Robbie Foust, wrote just that – I’m deeply impressed. Read more/get it here.

PS. Remember that Netmon 3.3 was recently released. Get that here.

How to upgrade from Windows 7 pre RC builds to RC

While waiting for the RC build, I just wanted to provide you with a little trick. By default only upgrades from Vista to Windows 7 RC is supported (So Microsoft get as much feedback as possible on the Vista upgrade scenario).

If you don’t have the time/incentive to wait for the downgrade to Vista and then an upgrade to the RC build (in my case I have three Vista machines and two Windows 7 machine that I will upgrade, so Microsoft will still get their feedback) then you can use this little trick -

Here’s what you can do to bypass the check for pre-release upgrade IF YOU REALLY REALLY NEED TO:

  1. Download the ISO as you did previously and burn the ISO to a DVD. (See later comment)
  2. Copy the whole image to a storage location you wish to run the upgrade from (a bootable flash drive or a directory on any partition on the machine running the pre-release build).
  3. Browse to the sources directory.
  4. Open the file cversion.ini in a text editor like Notepad.
  5. Modify the MinClient build number to a value lower than the down-level build. For example, change 7100 to 7000 (pictured below).
  6. Save the file in place with the same name.
  7. Run setup like you would normally from this modified copy of the image and the version check will be bypassed.


These same steps will be required as we transition from the RC milestone to the RTM milestone.

The above is a snippet from from the Engineering Windows 7 blog post called Delivering a quality upgrade experience.

And of course in Step 1/2 you could just mount the ISO image using Daemon Tools version 4.30.4 (or higher) that supports Windows 7 and extract it to your preferred location.

Wednesday, April 29, 2009

Office 2007 Service Pack 2 released

It's finally out.

Get it here :

Lots of fixes - and Outlook in particular is much more responsive. Outlook-specific fixes and improvements detailed here:

Happy downloading!

Sunday, April 26, 2009

OCS 2007 R2 Edge Certificate Wizard gotcha

During a recent customer deployment of OCS 2007 R2, we came across a small issue that might be relevant for some of you.

We were using the OCS 2007 R2 Edge Server setup wizard to request certificates for the external interfaces. This particular customer uses GoDaddy for their certificates. We created an offline request and pasted the CSR into GoDaddy's request interface - and were promptly told that the CSR was not valid.

What we discovered was this: The customer's OCS R2 Edge server was running Windows Server 2008. When we created the certificate request using the setup wizard, the -----BEGIN CERTIFICATE REQUEST----- header and -----END CERTIFICATE REQUEST----- trailers were not inserted into the file. This was what threw the error when we pasted the CSR into GoDaddy's interface.

To solve this and be able to get our certificate from GoDaddy, we simply pasted correctly formatted header and trailer lines into the CSR, which was then accepted as a proper CSR file.

If OCS R2 Edge is deployed on Windows Server 2003 R2, the certificate request header and trailer is inserted into the request file generated by the setup wizard, so the issue looks to be specific to deployments on Windows Server 2008.

It is worth noting that if you use IIS on Windows Server 2008 to create an SSL certificate request, the -----BEGIN CERTIFICATE REQUEST----- and -----END CERTIFICATE REQUEST----- lines are included in the generated CSR file - so "normal" IIS certificate requests created on Windows Server 2008 are not affected.

Friday, April 24, 2009

How to install Exchange 2010 and Exchange 2010 UM

If you want to play with Exchange 2010 UM, then here are two links on two different blogs that will help you -

How to Install Exchange Server 2010 Beta

How to Install Exchange Server 2010 Unified Messaging Beta

Happy installing ;-)

Friday, April 17, 2009

Regex – Still a Lot to Learn…

I though I was pretty good with Regex’s  - but just realized that even if I use it a lot – there are still a lot of things to learn. And Regex (I’m using the .Net version) is very powerfull.

The other day, I was searching for some useful regex’s, as I wanted to test for invalid email domain – e.g. the positive ones should be matched and the rest should be trapped. During this search, I stumbled across RegexBuddy and I decided to spent the €30 to buy it. And that had really sped up my learning! After getting the grips for the interface, it is very useful. First of all, no more repetitious string –replace pattern from PowerShell. Now everything is shown in color – live – and you can trace things down and even build the thing using graphical bricks.

So what have I learned so far?

Replacing each space in the start of a string/line – e.g. replace leading spaces with   – is easy (now) -

$line -replace '(?<=(^ *)) ','&nbsp;'


Splitting a distinguished name – taking escaped characters into account – also simple -

# PowerShell V1
# PowerShell V2 CTP3
$dn -split '(?<!\\),'

And how about writing a CSV with another delimiter than comma in PowerShell V1. I did a Convert-TsvToCsv earlier and have also written Export-Tsv (not published). But it can be done so easy with a regex that I’m almost ashamed over all the work I have done -

function Export-DelimitedFile($file,$delimiter=";") {
$work=Join-Path $env:temp ($ + $pid + ".temp")
$input | Export-Csv $work
(type $work) -replace '("[^"\r\n]*")?,(?![^",\r\n]*"$)',"`$1$delimiter" | out-file $file

Have so much regex fun!

Wednesday, April 15, 2009

Making PowerTab 0.99 Beta 2 work on PowerShell V2 (CTP3)

Being very fond of PowerTab, it has been a loss that it did not work for PowerShell V2. But it turns out to be very simple to fix the problem. It fails as the parameter signature for $host.ui.rawui.NewBufferCellArray seems to have changed in V2.

Fixing the problem is a matter of changing two lines in <PowerTabDir>\TabExpansion.ps1. The old line is commented out -

#      $message = $host.ui.rawui.NewBufferCellArray(@('[Tab]'),'Yellow','Blue')
$message = $host.ui.rawui.NewBufferCellArray(@('[Tab]'),[consolecolor]::Yellow,[consolecolor]::blue)


#      $message = $host.ui.rawui.NewBufferCellArray(@('[Err]'),'Yellow','Red')
$message = $host.ui.rawui.NewBufferCellArray(@('[Tab]'),[consolecolor]::Yellow,[consolecolor]::red)

Have fun!


PS: It does not work in ISE

Friday, April 10, 2009

Want to dial 1-800-flowers or 1-866-MSONLIN from OC ?

Many don’t realize that this is possible from Office Communicator (RTM or R2) – allthough I have showed it to the students at most of my boot camps.

OC according to my testing supports what is called E.161 mapping of characters to numbers (also known as ANSI T1.703-1995/1999, and ISO/IEC 9995-8:1994 or most probably similar to what you see on your mobile phone), so if you write e.g. +1800flowers in your OC client it will look like this -


The only rule is that you have to start with  a number, otherwise the client will think that you are trying to lookup a person in the Address Book.

As you may know Microsoft supports RFC3966 and here is what the RFC says about this (Thx to Dennis Klama for this pointer) -

5.1.2.  Alphabetic Characters Corresponding to Digits

   In some countries, it is common to write phone numbers with alphabetic characters corresponding to certain numbers on the telephone keypad.  The URI format does not support this notation, as the mapping from alphabetic characters to digits is not completely uniform internationally, although there are standards [E.161][T1.703]   addressing this issue.

What happens in OC, is that the character/number mapping is taking place client side and therefore the actual URI only consists of numbers.

Furthermore, my testing shows that OC supports the International standard for character to number mapping, but you should be aware that different countries in the past have had different regional implementations of the mapping. Furthermore the use of vanity numbers is unusual in Europe.

For your reference I have created a table mapping of characters/numbers that OC and E.161 uses

abc def ghi jkl mno pqrs tuv wxyz
2 3 4 5 6 7 8 9

Automated Maintenance of Directory Service Restore Mode Password

With Windows Server 2008 SP2 or SP1/RTM with hotfix KB961320 you can make administration of the DSRM password completely automatic. The approach is this: You create an unprivileged account in Active Directory, set the password and using a scheduled task you execute the new sync from domain account xxxx command.

This nice approach is documented in the Directory Services blog. Read the complete story here.

Thursday, April 09, 2009

MVP for yet another year ;-)

Dear Dennis Thomsen,

Congratulations! We are pleased to present you with the 2009 Microsoft® MVP Award! This award is given to exceptional technical community leaders who actively share their high quality, real world expertise with others.

At Microsoft, we believe that technical communities enhance people’s lives and the industry’s success because independent experts, like you, help others extract greater value from products and technologies through the free and objective exchange of knowledge. As a Microsoft MVP, you are part of a highly select group of experts that represent technology’s best and brightest who share a deep commitment to community and a willingness to help others.
On behalf of everyone at Microsoft, thank you for your contributions to technical communities.

Thank you to Microsoft for the award, I really appreciate working with Microsoft and getting access to the information and resources that the MVP award opens up for.

More information about the ability to NAT the R2 A/V Edge Service (So no public IP is needed)

Stumbled over this excellent article with good information on how to setup the R2 A/V Edge, firewall for SNAT’and DNAT etc. It includes nices captures of the SIP traffic / candidates so it’s well worth the read. Read the post from Rick Varvel here - Configuring R2 A/V Edge Service for NAT.

Connectivity information in OC 2007 R2

My colleague, Claus-Ole, just pointed me to a neat trick that I didn’t know of. In OC you can, like in Microsoft Outlook 2007, press Ctrl key while right-clicking the OC Icon and voila up comes a menu item called “Configuration information” -

Configuration Information

Where you get a lot of information on your connection type, autoconfiguration ABS download etc. Read more about this neat little feature at the source Office Communicator Configuration Information.

Tuesday, April 07, 2009

PowerShell, Getting the Value Out of a ScriptBlock

When you are doing a little advanced scripting and passing scriptblocks around, one of the problems I encountered was how to execute the scriptblock in a pipeline and get the value out of it. Say you want the user to be able to enter a scriptblock and compare your data to the value returned from it – how is that done?

Executing a scriptblock is easy using the &-operator

$sb={"Hello World!"}


You can also use the invoke method -


If you want to have a filtering scriptblock e.g. comparing a value with a scriptblock (not its value), I found it easy and logical to use where(-object) -

$sb={$ –like ‘note*’}
dir $env:windir | where $sb
# or
if (dir $env:windir | where $sb) {"Slipped through filter, go on"}

But what if you want to execute it, feeding in values from the pipeline to get new values? (Often you would only send in one value at a time). The answer is foreach(-object) -

dir $env:windir note* | foreach $sb

When can this be useful? In numerous places, I would say. What if you have some getter script, with these arguments -

Get-XXX –dateproperty <property>
–value <value|scriptblock>
filter <scriptblock>


If this case the code is something like (pseudo code) -

get-object | where &$filter| foreach {
if ($value –is [scriptblock]) {
$compareto=$_ | foreach $value
else {
if ($_.$dateproperty –gt $value) {


The user can then either stick it a value or calculate a value using the scriptblock – and that based on the data from the object itself and before the comparison is made -

# Getting files accessed after January 1st
get-xxx–dateproperty lastAccessTime –value ([datetime] "2009-01-01")
# Getting files accessed 90 days after it was modified
get-xxx–dateproperty lastaccesstime –value {$_.lastwritetime.adddays(90)}

The latter example was not possible without parsing a scriptblock.

SharePoint Designer 2007 is now free

Get it here.

What is REST?

Came across the acronym while I saw an Azure presentation. REST is Representational State Transfer but I’m not going to explain it in detail as I found this page, which explains it well. A 5 minute read.