Category Archives: Windows

Changing the default locale for virtual machine templates in Virtual Machine Manager 2012 R2

Microsoft System Center Virtual Machine Manager 2012 R2 or 2012 SP1 does not allow you to set the locale via the user interface (gui). There are currently 2 workarounds for this. One uses powershell to alter the template itself. And one uses a unattended.xml which you add to the template using the user interface (gui).

The powershell method

1. Launch the VMM Console.
2. Click on the Settings option.
3. Click on PowerShell and execute the commands below on the respective Template.

$template = Get-SCVMtemplate | where {$_.Name  -eq "Template_Name"} 
$settings = $template.UnattendSettings;
$settings.add("oobeSystem/Microsoft-Windows-International-Core/UserLocale","cy-GB");
$settings.add("oobeSystem/Microsoft-Windows-International-Core/SystemLocale","cy-GB");
$settings.add("oobeSystem/Microsoft-Windows-International-Core/UILanguage","cy-GB");
$settings.add("oobeSystem/Microsoft-Windows-International-Core/InputLocale","0452:00000452");
Set-SCVMTemplate -VMTemplate $template -UnattendSettings $settings

NOTE: For the steps above, the regional settings (e.g. cy-GB) will vary based on the language being used. 

Look up the values you need from the two following locations

http://technet.microsoft.com/en-us/library/cc766503%28v=ws.10%29.aspx
http://technet.microsoft.com/en-us/library/cc766191%28v=ws.10%29.aspx

The unattended.xml method

Create an unattend.xml with the specific locale settings required. Below is a sample unattand.xml set to en-us but you can replace the en-us entries with the language code of your choice.

<?xml version="1.0" encoding="utf-8"?>
<unattend xmlns="urn:schemas-microsoft-com:unattend">
    <settings pass="oobeSystem">
        <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <InputLocale>en-us</InputLocale>
            <SystemLocale>en-us</SystemLocale>
            <UILanguage>en-us</UILanguage>
            <UILanguageFallback>en-us</UILanguageFallback>
            <UserLocale>en-us</UserLocale>
        </component>
    </settings>
    <cpi:offlineImage cpi:source="wim:c:/install.wim#Windows Server 2012 SERVERDATACENTER" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>

References

http://support.microsoft.com/kb/2709539

// CrashMAG

Fix host network issues with VMWare Workstation or Virtual Box using bridged networking

If you’ve ever experienced temporary loss of connectivity or other weird issues when you run virtual machines in VMWare Workstation and/or Virtual Box then you’re in for a treat. The issue is to my knowledge specific to Intel network cards. I’m not sure how relevant it is but I was running Windows 7 SP1 64-bit with the most recent drivers at the time when I started noticing the issue.

This is about two modes that you can set via the registry for your network card to fix the issue. What you need to use depends on your network card.

Allow tagged frames to be passed to your packet capture software by going into the registry and either add a registry dword and value or change the value of the registry key. The registry change required is determined by the driver in use

Registry Key          Adapter Driver
MonitorModeEnabled    e1g, e1e, e1y
MonitorMode           e1q, e1k, e1c, e1d, ixe, ixn, ixt

To solve my issue with my Intel PRO/1000 PT Dual Port Server card I added the DWORD key “MonitorMode” to the following registry path

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}\0007

with a value of “2” to fix my issue. Note: Due to my dual port adapter I had two entries for my 1 physical network card.

Anyways, head on over to the Intel support article for a detailed description on how to correct this issue for yourself.

Good luck!

// CrashMAG

Testing SMTP, POP3 and IMAP protocol access

This article assumes you have access to telnet and openssl. The example tests have been run against a Microsoft Exchange 2010 server. The IP and hostname have been obfuscated. The commands needed to perform these protocol access tests will be the same on both Linux and Windows.

Testing SMTP

Test using plain text

Execute the following command to initiate a plain text connection over port 25.

telnet smtp.server.com 25

Example output

The following is the typical output you’ll see as a response from a SMTP server. In this case being Microsoft Exchange 2010.

Trying 74.161.5.111...
Connected to smtp.server.com.
Escape character is '^]'.
220 smtp.server.com Microsoft ESMTP MAIL Service ready at Thu, 3 May 2012 13:06:21 +0200

Test using an encrypted connection

Execute the following command to initiate an encrypted connection over port 25.

openssl s_client -starttls smtp -crlf -connect smtp.server.com:25

Parameters

Beneath you’ll see the documentation for the parameters used in the above example.

-starttls protocol
send the protocol-specific message(s) to switch to TLS for communication.  protocol is a keyword for the intended protocol.  Currently, the only supported keywords are "smtp", "pop3", "imap", and "ftp".
-crlf
this option translated a line feed from the terminal into CR+LF as required by some servers.

Example output

There’s little to see here mainly because I had to exclude the certificate verification information to anonymize the test server.

<certificate verification output>
250 CHUNKING

Tip: You may run the usual SMTP commands directly from the command prompt after you initiated the encrypted connection.

Testing IMAP

Test using plain text

Execute the following command to initiate a plain text connection over the standard IMAP port 143.

telnet imap.server.com 143

Example output

The following is the typical output you’ll see as a response from an IMAP server. In this case being Microsoft Exchange 2010.

Trying 74.161.5.111...
Connected to imap.server.com.
Escape character is '^]'.
* OK The Microsoft Exchange IMAP4 service is ready.

Test using an encrypted connection

openssl s_client -connect imap.server.com:993

Example output

<certificate verification output>
* OK The Microsoft Exchange IMAP4 service is ready.

Testing POP3

Test using plain text

telnet pop.server.com 110

Example output

The following is the typical output you’ll see as a response from a POP server. In this case being Microsoft Exchange 2010.

Trying 74.161.5.111...
Connected to pop.server.com.
Escape character is '^]'.
+OK The Microsoft Exchange POP3 service is ready.

Test using an encrypted connection

openssl s_client -connect pop.server.com:995

Example output

<certificate verification output>
+OK The Microsoft Exchange POP3 service is ready.

References

SMTP – Simple Mail Transfer Protocol
IMAP – INTERNET MESSAGE ACCESS PROTOCOL
POP 3 – Post Office Protocol – Version 3
The OpenSSL Project

// CrashMAG

Creating a bootable USB to install Windows 7 or Windows Server 2008 R2

This will quickly run through the steps necessary to create a bootable USB to install Windows 7 or Windows 2008 R2. Most likely adaptable for Windows Vista & Windows Server 2008 as well.

Required to proceed

  • USB Flash Drive (4.5GB+).
  • Windows 7 or Windows 2008 R2 installation medium.
  • Computer already running Windows 7 or Windows 2008 R2.

Step 1 – Formatting and creating a boot partition on the USB flash drive

  • Plug in your USB Flash Drive.
  • Open a command prompt as administrator (Right click on Start > All Programs > Accessories > Command Prompt and select “Run as administrator”.
  • Find the drive number of your USB Drive by typing the following into the Command Prompt window, “diskpart”.
  • DISKPART> list disk

    The number of your USB drive will listed. You’ll need this for the next step. I’ll assume that the USB flash drive is disk 1. Format the drive by typing the next instructions into the same window. Replace the number “1” with the number of your disk below.

    DISKPART> select disk 1
    DISKPART> clean
    DISKPART> create partition primary
    DISKPART> select partition 1
    DISKPART> active
    DISKPART> format FS=NTFS QUICK
    DISKPART> assign
    DISKPART> exit
    

    Your drive is now formatted and marked bootable.

    Step 2 – Copy the files from the Windows 7/Windows 2008 R2 ISO over to the USB stick

    Start up cmd.exe again or use Windows Explorer to perform the same action. I prefer robocopy for this. Drive D is the mounted ISO image. Drive E is the bootable USB stick.

    robocopy D:\ E:\ /MIR

    Parameter reference

    /MIR :: MIRror a directory tree (equivalent to /E plus /PURGE).

    Step 3 – Make the USB flash drive bootable

    • Insert your Windows 7 or Windows 2008 R2 DVD into your drive.
    • Open a command prompt as administrator (Start > All Programs > Accessories > Command Prompt and select “Run as administrator”.
    • Change your directory to the DVD’s boot directory where bootsect.exe is located.
    E:
    cd E:\boot
    

    Use bootsect to set the USB as a bootable NTFS drive. I’m assuming that your USB flash drive has been labeled disk E:\ by your computer.

    bootsect.exe /nt60 e:

    You can now close the command prompt window.

    Step 4 – Use the USB flash drive to install your chosen operating system

    Now you can either enter the BIOS commonly by pressing “F2” on boot and choose “USB HDD” as your first boot medium. Or press “F12” and select the USB flash drive interactively.

    At this point you can run through the installation as you ordinarily would.

    // CrashMAG

Windows Server Backup Notifications

This will describe what you will need to do to get your Windows Server to email you alerts when Windows Server Backup either succeeds or fails.

The article contains 2 sections, one for creating a task to notify you on failures. And one for notifying you on success. It does require access to an SMTP server.

Notify on failure

  1. Open Task Scheduler
  2. Create a task
  3. Tick the “Run whether the used is logged on or not” option
  4. Go to the trigger tab, press “New”, choose “On an event”, select “Custom” and then “New Event Filter”
  5. Select “By log”, then navigate to “Applications and services logs”, then “Microsoft, then “Windows” then find “WindowsBackup” and tick it
  6. Use the following Event ID’s
    5,8,9,17-22,49,50,52,100,517,518,521,527,528,544,545,546,561,564,612
  7. Save your changes and navigate to the actions tab of the task
  8. Press “New” and select “Action: Send an email”. Fill out the details to you liking and save

If you want to test your email notifications, be sure to check the “Allow task to be run on demand” option under the Settings tab.

Notify on success

  1. Open Task Scheduler
  2. Create a task
  3. Tick the “Run whether the used is logged on or not” option
  4. Go to the trigger tab, press “New”, choose “On an event”, select “Custom” and then “New Event Filter”
  5. Select “By log”, then navigate to “Applications and services logs”, then “Microsoft, then “Windows” then find “WindowsBackup” and tick it
  6. Use the following Event ID’s
    4
  7. Save your changes and navigate to the actions tab of the task
  8. Press “New” and select “Action: Send an email”. Fill out the details to you liking and save

If you want to test your email notifications, be sure to check the “Allow task to be run on demand” option under the Settings tab.

Refrence

TechNet listing of Event ID’s

// CrashMAG

Windows Server Backup Powershell Script

This is a small Powershell script that will use the command line version of Windows Server Backup (wbadmin). It has the ability to email you upon failure or success. It will also include the log as an attachment to the script.

The variables that needs to be edited should be obvious.

I’ve found parts of this script while googling, but I’ve added a small logic that will create the backup location if it does not exist already.

#—————————————–Start script—————————————————-

function SendEmail($To, $From, $Subject, $Body, $attachment, $smtpServer) 
{ 
        Send-MailMessage -To $To -Subject $Subject -From $From -Body $Body -Attachment $attachment -SmtpServer $smtpServer 
} 
$emailto=”email@address.com” 
$emailfrom=”email@address.com” 
$day=(get-date -f dd-MM-yyyy)
$hname="HOSTNAME"
$backuplocation="\\BACKUP-SERVER\SHARE\$hname\$day\" 
$backuplog="$backuplocation"+(get-date -f dd-MM-yyyy)+"-backup-$hname.log" 
$emailserver="EMAIL-SERVER" 

function Out-FileForce {
PARAM($backuplocation)
PROCESS
{
    if(Test-Path $backuplocation)
    {
        Out-File -inputObject $_ -append -filepath $backuplocation
    }
    else
    {
        new-item -force -path $backuplocation -value $_ -type file
    }
}
}

Write-Output ("———————– Backup started on – $(Get-Date –f o) ————————-") | Out-FileForce "$backuplog" 
$Error.Clear() 
wbadmin start backup -backupTarget:$backuplocation -include:c: -systemstate -allcritical -vsscopy -quiet | Out-FileForce "$backuplog" 
if(!$?) 
    { 
        Write-Output ("———————– An error has occurred! Check it please!. – $(Get-Date –f o) ————————-") | Out-File "$backuplog" -Append 
        SendEmail -To "$emailto" -From "$emailfrom" -Subject "backup failed" -Body "The backup has failed! Please check attached log." -attachment "$backuplog" -smtpServer "$emailserver" 
        break 
        
    }

Write-Output ("———————– Everything is OK! – $(Get-Date –f o) ————————-") | Out-File "$backuplog" -Append 
SendEmail -To "$emailto" -From "$emailfrom" -Subject "backup $hname ok" -Body "The backup has succeeded!" -attachment "$backuplog" -smtpServer "$emailserver" .

#——————————————–End script——————————————————

// CrashMAG

Configuring Windows 7 support for UTC BIOS time

Windows 7 does not natively support UTC time. Which makes it a problem if you’re also running either Linux or OSX on the same machine. Either way having your BIOS keep time using UTC is the proper way.

  • Universal Time can be unambiguously converted into a local time. The opposite is not true, that is a local time cannot reliably be converted back into Universal time. This is due to the Summer Time or Daylight Savings Time offset periods implemented in many countries. At the end of that offset period, local-time clocks have to be turned back by usually one hour, therefore a 60 minute period on the local-time scale is repeated.
  • Daylight Savings Time makes it necessary to readjust the RTC twice per year. However, there exists currently no convention to label in the CMOS RAM, whether that adjustment has already been performed or not. As a result, the operating systems can get confused and will apply the correction multiple times. One possible fix is to record somewhere on the hard disk, whether the DST change has already been performed this year or not. However this fails for users who have a requirement to run several operating system versions in different hard disk partitions on the same computer, where the same RTC is shared by several operating systems that can be booted alternatively but do not have access to each others configuration files. A similar problem occurs when the operating system is booted from some exchangeable storage medium or a PC-in-PC emulator is used.

To enable UTC support please do the following.

Copy the following into a text document using notepad and save it as utc.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation] “RealTimeIsUniversal”=dword:00000001

Run it, reboot and you’re done.

Or do the following

  • Start the Registry Editor (regedit)
  • Traverse the following path, HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
  • Create a dword named RealTimeIsUniversal and set the value to 1
  • Restart your computer

// CrashMAG