30 August 2012

Change Exchange 2010 Receive Connector certificate

If you have IMAP clients, then you want to make sure that the connection is encrypted. By default IMAP uses TCP port 143 and SMTP for sending uses TCP port 25. For encrypted traffic the usual port assignments are TCP port 993 for IMAPS and 587 for SMTPS.

To make the access to Exchange via IMAP clients easier you probably use a nice common name like mail.company.com. For that name you have a 3rd party certificate (or a certificate from a local CA). This certificate must be installed on a local store on every Client Access Server. This can be done via IIS configuration window:

image

Just select the server name from the left and double-click Server Certificates icon. From there you can request or import a certificate:

image

If you have Active Directory Certificate Services, you can use Create Domain Certificate.

For enabling this certificate for different services you need to use Enable-Exchangecertificate cmdlet. To see available certificates for Exchange to use, use Get-Exchangecertificate cmdlet.

Enable-ExchangeCertificate uniqueid -Services pop
Enable-ExchangeCertificate uniqueid -Services smtp
Enable-ExchangeCertificate uniqueid -Services imap
Enable-ExchangeCertificate uniqueid -Services http

Uniqueid is the thumbprint that can be seen in Get-Exchangecertificate output.

For POP and IMAP to get working with new certificate, you must restart corresponding services. For SMTP to get working, you must change the FQDN on affecting receive connector:

image

The FQDN must be the same as the common name on the certificate.

23 August 2012

Getting to know which Hyper-V guest is using disk using PowerShell script

Best way to investigate disk usage on hyper-v host is to look at all guests and figure out, which one is exhausting the system. The only way to get those readings is using perfmon (Performance Monitor) Hyper-V specific counters. Simple Task Manager or Resource Monitor doesn’t give that detail.

I got even further and scripted this. First take a look at the script:

$date = Get-Date
"importing AD module"
import-module activedirectory
"Getting computer list from AD"
$servers = Get-ADComputer -LDAPFilter "(operatingsystem=*server*)" | sort name
$servers |  measure
$i=1
write-host "Getting Hyper-V Disk Activity information..."
$info = $servers | foreach {
    $computername = $_.name
    write-host ($i++) $computername
 
    $readcounter = "\\" + $computername + "\Hyper-V Virtual Storage Device(*)\Read Bytes/sec"
    (get-counter -Counter $readcounter).countersamples | foreach {
        $obj = new-object psobject
        $obj | add-member noteproperty Host ($computername)
        $obj | add-member noteproperty Access ("Read")
        $obj | add-member noteproperty VHD ($_.InstanceName)
        $obj | add-member noteproperty MBps ([Math]::Round($_.CookedValue/1024/1024,2))
        $obj
        }
    
    $writecounter = "\\" + $computername + "\Hyper-V Virtual Storage Device(*)\Write Bytes/sec"
    (get-counter -Counter $writecounter).countersamples | foreach {
        $obj = new-object psobject
        $obj | add-member noteproperty Host ($computername)
        $obj | add-member noteproperty Access ("Write")
        $obj | add-member noteproperty VHD ($_.InstanceName)
        $obj | add-member noteproperty MBps ([Math]::Round($_.CookedValue/1024/1024,2))
        $obj
        }
        
    }
    
$filename2 = "c:\serverinfo\HVdiskactivity {0}.{1:d2}.{2:d2} {3:d2}.{4:d2}.csv" -f $date.year,$date.month,$date.day,$date.hour,$date.minute
# $info | Export-Csv -Path $filename2 -encoding utf8
$info2 = $info | where {$_.MBps -ge 1} | sort MBps -Descending
$info3 = $info2 | ConvertTo-Html
$info4 = [string]$info3
 
if($info2){
Send-MailMessage -SmtpServer smtp.domain.com -To rauno.magi@domain.com -From rauno.magi@domain.com -Subject "Hyper-v guests having greatest VHD activity" -Body $info4 -BodyAsHtml
}

What does this script do? Let’s look at step by step:



  1. First it import’s Active Directory module and uses it to get the list of all servers, which will be recorded to variable $servers

  2. Then it uses this list of servers to query performance information on each of them using get-counter cmdlet. It would be nice to reduce the list to hyper-v server’s only, but this is cosmetical and performance issue and doesn’t affect the functionality

  3. Nice thing is creating a new empty object and populate all properties/rows with data got from new-object cmdlet.

  4. All the information gathered will be stored into $info variable, which can be optionally saved to a csv file. This command is commented out at the moment

  5. Filtered and sorted list (disk activity more than 1MB per second, biggest numbers on top) will be sent as a e-mail message attachment in the message body.

06 August 2012

Getting rid of “reboot from a previous installation” message

Sometimes you might be unable to install some software with the following message:

A reboot from a previous installation is pending. Please restart the system and rerun setup.

This example is from Exchange Management Tools installation.

image

First you should try reboot (sometimes twice) and if this doesn’t work, look at the registry hive

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager

image

The key PendingFileRenameOperations should be normally not present. If it’s there, remove it. Then you can run your setup again and this time successfully.

12 July 2012

Reclaim free space on Windows Server 2008 R2 SP1

Free space on C: drive will eventually go below your threshold. After investigating the cause with TreeSize Free tool (http://www.jam-software.com/treesize_free/), I ended up in this result (biggest folder is with the name winsxs):

image

If you are running out of other options to free space on a Windows Server 2008 R2 SP1 computer, then as a last resort you can disable SP1 uninstall feature by running the following command on the administrative command prompt:

dism /online /cleanup-image /spsuperseded

image

It will remove the files needed for Service Pack uninstall and free some gigabytes on Windows drive. In my case about 4GB.

11 July 2012

NetStumbler’s replacement for Windows 7

If you are using Windows 7 and you want to see details of wireless networks in your range you can use command line (NetStumbler doesn’t work on Vista nor 7):

netsh wlan show networks mode=bssid

or in short

netsh wl sh n b

The result is something like that (fragment of an output)

image

If you want a graphical utility, take a look at inSSIDer (http://www.metageek.net/products/inssider-wifi-scanner)

05 July 2012

Outlook/Exchange and Notes/Domino and Rich Text

If you send an e-mail with Rich Text formatting from Exchange to Domino, it appears very ugly in Lotus Notes.

Original message in Outlook:

image

As seen on Lotus Notes:

image

As you can see, the result looks ugly. It doesn’t look always ugly, it depends on several factors: Outlook contact properties, Active Directory Contact/Mail User properties and Remote Domain settings. I suggest to change only remote domains settings on Exchange 2010.

Easiest way is to do it on Exchange Shell (get all remote domains and disable Microsoft proprietary TNEF/Rich text format for sending e-mails):

Get-RemoteDomain | Set-RemoteDomain -TNEFEnabled $false

Graphical interface is also possible. Select your remote domain from Organization/Hub Transport/Remote Domains and change the following setting:

image

And yes, all your e-mails can have attachments and formatting after changing this setting. Your e-mail can have 3 formats, when you use Outlook:

  1. Plain Text
  2. Rich Text
  3. HTML

All messages containing formatting information will be converted to HTML format instead of the second option (Rich Text).

04 July 2012

DPM 2010 eject tape (or Windows 2008 eject tape)

As you probably figured out that Windows Server 2008 backup software doesn’t support tapes. So if you use Microsoft Data Protection Manager 2010 or some other tape compatible software and don’t see the place to eject tape programmatically, you are in the right place. Here comes the solution.

First of all you need a piece of software to support devio controls. I found a little one on http://www.ltr-data.se/files/devioctl.zip. This zip file contains devioctl.exe, which needs to be placed in windows directory.

To try the eject functionality, you need a test script as a .bat file containing the following line:

devioctl.exe eject \\.\Tape2147483645

The last number can be found out in DPM shell using the following command:

get-dpmlibrary -dpmservername yourdpmservernamehere | get-tapedrive | ft acc*

The result is in my case:

image

It seems, like I have two drives. In fact I have only one, the other one was the old one, which was replaced to the new drive. So I will use the line with the lowest number.

If you are wondering, what’s the deal with this strange number, you can put it to windows calculator and look at the binary representation of this number:

image

So if you look at bits 31..0, then 2147483646 is in some interpretation -1, 2147483645 means -2 etc.