Wednesday, October 25, 2006

Consolidating security event

Finally, a decent solution seems to appear in SCOM (System Center Operations Manager - got to learn those acronyms) for this.

I learnt it here.

Tuesday, October 10, 2006

Live Meeting Console fix for Vista

I'm regularly using Live Meeting and due to problems with stability on Vista / Office 2007 I always dual boot in to my XP for presentations etc. (Actually the only time I use XP since I switched to Vista during my summer vacation).

Microsoft has now released an update that fixes some of the problems with Vista / Office 2007. Find it here

Wednesday, September 27, 2006

PowerShell RC2 Released

Finally, the RC2 release is here. I havn'nt tried it yet but plan to do so soon - very soon.

You'll find it for XP x86 here.

Tuesday, September 19, 2006

How to plan for and deploy certificates in Live Communications Server 2005 Service Pack 1

One of my contacts at Microsoft, Shawn Mahan, who is an expert in PIC issues and many other LCS subjects is presenting a webcast on the use of certificates in LCS on Thursday, September 21, 2006 10:00 AM Pacific Time.

This Support WebCast discusses the purpose of certificates in Microsoft Office Live Communications Server 2005 and describes how to appropriately deploy certificates for common scenarios. These scenarios include Remote Access, multiple pools, Director or Access Proxy arrays, Microsoft Office Communicator Web Access, and public instant-messaging (IM) connectivity (PIC).

The use of certificates is often confusing to newcomers to LCS and Shawn is IMHO a very skilled Escalation Engineer, so if you are interested in the subject go watch his presentation here.

Monday, September 18, 2006

LCS 2005 Supportability Guide

Microsoft has released a new Supportability guide for Live Communications Server 2005.

This document identifies supported configurations for Microsoft® Office Live Communications Server 2005, Live Communications Server 2005with Service Pack 1 (SP1), and Microsoft Office Communicator Web Access.

It includes all sorts of info, coexisting LCS with other applications, Certificates required, SQL versions support (Now including SQL 2005 SP1), topologies, clients supported and you name it. You can find it here.

Thursday, September 14, 2006

Office 2007 Beta 2 Technical Refresh has been released

Besides some (hopefully) useful updates, it also now supports Vista RC1

The update should be located here according to the Office Preview site and the mail I recieved from the Beta team and indeed all the other Office products and the now separate download for "Save as PDF / XPS" can be found here, but if you want the Office 2007 System TR you need to look here. Notice the following warning before installing

IMPORTANT: Please read the update documentation, referenced in the "To install this download" section on this page, BEFORE applying this Beta 2 Technical Refresh update. The documents list several steps that you must complete prior to installation to ensure a successful update. This is NOT a single click update.

Friday, September 08, 2006

CSTA and Reverse number lookup in Office Communicator

If you haven't worked with CSTA / 3PCC (Third Party Call Control) in Office Communicator, then Paul Robichaux has a nice write-up on how Office Communicator translates incoming phonenumbers to contact information (Retrieved from the AD or WAB) and also includes some information on normalization of phone numbers (That usually is a big deal

It also includes a nice little tip on how to forcibly update the locally downloaded Address Book (If you are using this). See more at his post.

Using LCS 2005 with multiple domains

Over at the new UCG blog there's a post on how to support multiple domains in LCS.

It will tell you how to use autoconfiguration of Office Communicator (Using DNS not Group Policies) in a multi-domain environment and it shows you how to enable Enhanced Federation for your primary domain, while allowing for Direct Federation for "secondary" domains in your company using Subject Alternate Names in your certificates.

Read more at Configuring LCS 2005 w/ SP1 for Multiple Domains.

I'm currently investigating where/if we can buy commercial certificates for the Access Proxies that support Subject Alternate Names and whose Root CA's are part of the standard Windows Server 2003 list of Trusted Root CA's. I chatted with a customer representative at Verisign and the answer was a firm no, but after some discussion she told me that they would get back with further info. The last time I looked I couldn't find anyone, but I've been told that some Microsoft customers have been able to do so - I will be back with further info.

Thursday, September 07, 2006

Adding entries to visionapp Remote Desktop with PowerShell

Now that you have visionapp Remote Desktop as I wrote about, how do you populate it easy with all the servers you want? Easy! The configuration is stored as XML as one long string in the registry value hkcu\software\visionapp\vRD\Configuration. And as the registry and xml is native to PowerShell the choice was easy.

So here is my PowerShell scripts adding a test folder and a test connection -


# The registry key

$regkey = get-item 'HKCU:\software\visionapp\vRD'

# read the configuration value
$config = $regkey | get-itemproperty -name configuration

# save it to a file in %temp% - just in case (you can also use backup from the app)
$savedConfig = join-path $env:temp vRd.saved
$config.configuration > $savedConfig

# convert string to xml - cool huh!
$config = [xml] $config.configuration

# show part of the xml file
$config.vRDConfigurationFile
# and drill down into the ConnectionsFolder
$config.vRDConfigurationFile.ConnectionsFolder

# Create a Folder xml element
$newfolder = $config.CreateElement("Folder")

# Set its name
$newfolder.SetAttribute("Name","Test folder")

# and add it as a child to the ConnectionsFolder
$config.vRDConfigurationFile.ConnectionsFolder.AppendChild($newfolder)

# show the added folder
$config.vRDConfigurationFile.ConnectionsFolder

# Add some attributes - note that you can do this before or after
# adding the xml element - $newfolder is a pointer to the live value
$newfolder.SetAttribute("Description","Testing dude!")
$newfolder.SetAttribute("Sorted","false")
# Link folder to a credentials GUID (I checked this beforehand)
$newfolder.SetAttribute("Credentials","785dd5ed-c75a-48e1-bb31-0b47e1e75fc3")

# Create a Connection xml element with some attributes
$newconnection = $config.CreateElement("Connection")
$newconnection.SetAttribute("Name","server.test.com")
$newconnection.SetAttribute("ServerName","server.test.com")

# Add it to the new folder
$newfolder.appendChild($newconnection)

# dump folder as XML
$latest=$config.vRDConfigurationFile.ConnectionsFolder.folder.count-1
$config.vRDConfigurationFile.ConnectionsFolder.folder[$latest].get_OuterXML()

# we have to do this several times, so a small function is easier
function addElement($xml,[string] $elementName, $elementText) {
$e=$xml.CreateElement($elementName)
$e.set_innerText($elementText)
return $e
}

# these values must be child elements - not attributes - to the connection element

# note the double-parenthesis - the inner is used to call the addElement function
# and return the value to the appendChild method
$newconnection.appendChild((addElement $config "SmartCard" "false"))
$newconnection.appendChild((addElement $config "ResolutionX" "1024"))
$newconnection.appendChild((addElement $config "ResolutionY" "768"))
$newconnection.appendChild((addElement $config "AutoSize" "true"))
$newconnection.appendChild((addElement $config "Description" "Test server"))
$newconnection.appendChild((addElement $config "Printer" "false"))
# Take credentials from parent folder
$newconnection.appendChild((addElement $config "InheritCredentials" "true"))
$newconnection.appendChild((addElement $config "Credentials" "00000000-0000-0000-0000-000000000000"))
$newconnection.appendChild((addElement $config "SeparateWindow" "false"))
$newconnection.appendChild((addElement $config "Console" "false"))
$newconnection.appendChild((addElement $config "Serial" "false"))
$newconnection.appendChild((addElement $config "LocalDrives" "false"))
$newconnection.appendChild((addElement $config "Audio" "false"))
$newconnection.appendChild((addElement $config "Port" "3389"))

# dump again
$latest=$config.vRDConfigurationFile.ConnectionsFolder.folder.count-1
$config.vRDConfigurationFile.ConnectionsFolder.folder[$latest].get_OuterXML()

# update configuration in registry

$regkey | set-itemproperty -name configuration -value $config.get_innerxml()

# folder and connection added!



PowerShell rocks! - did I mention that earlier...

A much better Remote Desktops

Remote Desktops - note the ending s - is a tool for collecting multiple Remote Desktop sessions in one console. I have used it a lot, but it has many drawbacks -
  • You cannot see whether you already have connected to a server or not
  • You have to change cached credentials for every entry
  • It sometime crashes - especially after resume from hibernation (you learn the good old advice: When you have do so much work that you do not want to do it again, you save your data)
  • And perhaps most annoying - you cannot sort/move/reorganize the entries

I have tried to figure out, how to either reorganize the entries or generate a new console based on data held in Excel - but failed so far pursuing this path.

One of my customers pointed me to an alternative: visionapp Remote Desktop from the German company visionapp. I have used it for a while now - and all the drawbacks are gone.

Thank you very much visionapp!

Wednesday, September 06, 2006

LCS and Windows Server 2003 R2 known issue

As you might know Live Communications Server 2005 SP1 is now supported on Windows Server 2003 R2 and SQL Server 2005 SP1. Besides SQL 2005 SP1 it is also a requirement that you install the hotfix documented in KB911996 (Note the quirky installation procedure and that uninstall equals reinstall of LCS!!).

This time I was scripting the complete installation of LCS using LcsCmd and LCServer.msi (It's way easier to document, than "screenshooting" the GUI installation) and I also had a clustered SQL 2005 installation as a Backend Server.

After the installation I wanted to launch the LCS MMC on the Enterprise Edition front-end server, but it only presented me a window with the orange "Live Communications Server 2005" logo on top and a text in the middle "Live Communications Server 2005" - but no navigation pane.

I suspected it was either the scripted installation or SQL 2005 SP1 that was causing the problem, so this was where my trobleshooting efforts went. Two hours and a keyboard later I tried to open the MMC snap-in and manully add the Live Communications Server snap-in and voila, the navigation pane was back ;-)

I later chatted with one of my few contacts at Microsoft that really know LCS (You know who you are - and I'll keep my promise ;-) and was told that this was a "known issue", which they are investigating (Which is fine with me - since that means that my clustered SQL installation and installation scripts work as expected).

Interested in Network Bandwidth Usage of Audio/Video in Office Communicator !?

Then you should look at the NetMeeting Resource kit as the technologies used by Office Communicator 2005 are thosed offered by NetMeeting (Mainly H.323 and T.120). Chapter 4 also looks at the Firewall configuration and ports used by OC.

Friday, August 25, 2006

FYI - Vista Build 5536 / Pre-RC1 for x86 has been released - updated

I was looking at connect.microsoft.com for a x64 version of 5472 for my Acer (Knowing that RC1 is just around the corner, but I had some time to play while upgrading an Exchange cluster), but I just noticed that 5536 (RC1) is available for download (So far only for x86, I guess I will wait for the x64 version before proceeding with my Acer). UPDATE - No x64 edition of 5536 will be released according to connect.microsoft.com.

I have been using 5472 as my primary OS since it was released and I guess with RC1 that I will make the shift from dualboot to "single-boot" on my primary laptop (Dell Latitude D820) - with an XP installed on a Virtual PC / Virtual Server image.

IE7 RC1

I just noticed that RC1 of Internet Explorer 7 was released to the web -

  1. Technology Overview: Internet Explorer 7 RC1
  2. Internet Explorer 7 RC1 (ia64)
  3. Internet Explorer 7 RC1 (x64)
  4. Internet Explorer 7 RC1 (Windows Server 2003 SP1)
  5. Internet Explorer 7 RC1 (Windows XP SP2)

I "of course" use Vista as my primary OS by now, so I will have to wait for the soon-to-be released RC1 of Windows Vista.

You can check Paul Thurrot's review of RC1 here

Thursday, August 24, 2006

Would you like to integrate Asterisk with LCS ?

Then voipen has created a tutorial on how to do this -

This is a tutorial on how to setup calling to/from MS LCS 2005 using SER and Asterisk. In this case LCS is acting as the IM/Presence/VoIP server, SER converts protocols TCP2UDP and Asterisk is a SIP to ISDN gateway. This setup allows for outbound calls from Microsoft Office Communicator – OC to a normal telephone and inbound calls from a normal telephone to Microsoft Office Communicator - OC. This also allows you to access services provided by Asterisk such as Meetme Conferencing. You can also use Windows Messenger 5.1 instead of OC client.

You can find the tutorial here.

Thursday, August 17, 2006

Look & feel of msgoodies

We are playing a bit with the template used for msgoodies as we are preparing to move to a "Stretched" template and hopefully soon the updated version of Blogger (Check beta.blogger.com or msgoodiestest.blogger.com, that better will serve larger postings and postings including code samples. it shouldn't affect our RSS readers, but our web readers probably need some "patience" with the look & feel of msgoodies.

Sorry for the inconvenience !

Friday, August 04, 2006

APOD Viewer v1

I love APOD - Astronomy Picture of the Day - as I'm privately quite interested in the universe and all that stuff. But I do not visit APOD daily, so once in a while I browse the site.

But, wouldn't it be nice to have a slideshow with the pictures?

Surprise! PowerShell to the rescue.

This script really show the power of PowerShell. It has a web client, caculates dates and controls Internet Explorer. Give it a shot. If you make any clever changes, please post those as comments. I have a big wishlist myself, but this got me going.



function apod {
param([int] $days=1) # show latest picture by default
$baseurl="http://antwrp.gsfc.nasa.gov/apod/"

# create IE COM object
$ie = new-object -com internetexplorer.application

# create .net object
$webclient = new-object system.net.webclient

# date manipulation
$date=[datetime]::now
$date.AddDays(1) # start tomorrow as the loops starts by subtracting a day

$ie.fullscreen=$true
$ie.visible=$true
# You may have to press the window in the taskbar to make it appear


# An easy way to do a for loop - could have used for, but as said this is easier
1..$days | % {

# back one day
$date=$date.AddDays(-1)

# construct url
$url=$baseurl+"ap" + $date.tostring("yyMMdd") + ".html"
$url

# get HTML page
$html = $webclient.downloadstring($url)
$html.length

# Pick up the link the picture has - links to the high resolution version
# I want to display
# This is not idiot proff coding - but, hey, scripts are easy to change

$html -match '<a href="([^"]*)">\W*<img'
$matches.count
# get the value matching the pattern in parenthesis
$img=$matches[1]
$img

# show high resolution picture
$ie.navigate($baseurl+$img)

# wait for IE to load picture
while ($ie.busy) {sleep -s 1;"busy"}

# give me 10 seconds to enjoy the picture
sleep -s 10

}

# shutdown IE
$ie.quit()

$ie=$null

# wish list: load pictures overlapping (but keep presentation interval)
# wish list: include some kind of fancy transition
# wish list: pick out the explanation and present it in some way
# add our own...

}

An easier way to learn/use PowerShell

When I write PowerShell stuff, I end up typing a lot on the keyboard - and using command recall a lot. When you start doing complex things, that gets quite boring. An alternative is to have a work PS1 file, editing it with notepad (or another tool) and only recall the line, that executes the PS1 file. In this way you 'only' have to ctrl-s, alt-tab, up arrow, return to execute the changes and the alt-tab back to make the next change.As I hate repeating the same actions over and over again - that is the reason I love making computers do just that - why not use PowerShell to help me? This is also an opportunity to use PowerShell for a real thing.

To do just that, I made these two functions -

function workpad {
$global:workpad = "$env:temp\workpad.ps1"
"Start workpad - execute with '. $workpad'"
notepad $workpad
}

function execute-workpad {
param([boolean]$executeFirst=$false) if ($executeFirst) {
$oldLastWriteTime=[datetime]"2000-01-01"
}
else {
$oldLastWriteTime=$(get-childitem $workpad).lastwritetime
"Waiting for change.."
}

while ($true) {
$lastWriteTime=$(get-childitem $workpad).lastwritetime
if ($lastWriteTime -eq $oldLastWriteTime) {
start-sleep -s 1
}
else {
"File changed - executing"
""
. $workpad
""
"Waiting for change.."
$oldLastWriteTime=$lastWriteTime
}
}
}
So now it is just a matter of starting the editor with workpad (and it takes you off where you left) and use execute-workpad to have the changes to the file executed automatically whenever you press ctrl-s. To break execute-workpad use ctrl-c or ctrl-break. I would have liked a version where you could use the window interactively at the same time, but I have not found a similar function to cmd's start/b (yet, I hope). Start /b is like & in the korn shell. Any feedback on this would be welcome - but keep in mind that the execution of the interactive commands must be done in the same context as the workpad script executes in, so variables can be used directly.

PowerShell'ed

During the last couple of months I've spent quite some time on getting the grips on PowerShell (PS). As written earlier, PowerShell will be important, but expect it to take some time and effort to get it 'in the fingers'.

When you first look at it, you may ask yourself - hey - what's the big news in the examples you see? Most things can easily be done with other well-known tools. What so funny about - say - creating 10 folders -
PS> 1..10 % { md folder$_ }
when I could do it with
CMD> for /l %i in (1,1,10) do md folder%i

And what is the big advantage in starting a service with
PS> start-service bits
when I could do it with
CMD> net start bits

Of course, restart is nicer
PS> restart-service bits
But this does the job as well
CMD> net stop bits & net start bits

But as you start try to do REAL stuff you realize the potential. How about keeping the logs for the last 10 days, named with the date? That is not easy at all with CMD and I often created an self-contained script to do the job -
CMD> set script=%temp%\x.vbs
CMD> echo script line 1 > %script%
CMD> echo script line 2 >> %script%
CMD> cscript %script%
With PS you can do it right away with code like -
PS> $logbase="$env:temp\my.log"
PS> $fivedaysold=$logbase+[system.datetime]::now.adddays(-5).tostring("yyyyMMdd")
PS> $fivedaysold
D:\DOCUME~1\user\LOCALS~1\Temp\my.log20060730

So, if you want to learn PS, do not just use it once in a while. Expect that you will spent much time on learning it - but stop using CMD as much as possible and realize that you can combine all your tricks and (programming) skills by combining command line stuff with COM, WMI and .Net stuff - right from the command line. In this way, you will learn along the way.

Be powershelled yourself!

Friday, July 28, 2006

New Office Communicator 2005 hotfix

Microsoft has released a new hotfix for Office Communicator 2005 as described in KB921348. It contains the following fixes -
  • Advanced VoIP calling features are unavailable in Office Communicator 2005
  • Internet Explorer unexpectedly closes when you refresh a Web page
  • A telephone number may contain a clock icon instead of the number zero in Communicator 2005
  • Error message when you try to shut down Windows: "End Program-WMS Idle"
  • You experience poor video quality in Communicator 2005 running through a multipoint control unit
  • Communicator 2005 responds to invitations to conversations with a "Busy" reply
  • Communicator 2005 stops responding during a video conversation with Communicator 2007

I guess it must be cumulative and include the updates from the February 10th hotfix(KB903928) as it also updates Communicator.exe, now updated to build 183 (From 121).