SS Technology Forum

SS Technology Forum

Computer Migration - Things to Consider

Here are a few points which you can consider while doing computer migration. These points are applicable to all migrations irrespective of the migration tool (ADMT, NetIQ, Quest etc)

Active Directory User Migration

Here is a graphical representation of the high level steps involved in an Active Directory migration using ADMT

User Migration and Merging Using Quest Migration Manager

Pre-creating user account in the target domain is a common scenario these days due to single-sign-on solution, HR management procedure etc

Microsoft Right Management Service (RMS)

Rights Management Service (RMS) is an add-on to many RMS aware applications. In this article my main focus is to explain how we can utilize RMS technology with Exchange 2003 and how we can take advantage of RMS technology to increase the email security

Microsoft ISA Server

I am sure we have all either encountered or heard of this "problem" one time or another if the ISA Server is part of the Active Directory Domain. Is it a problem?

Tuesday, July 22, 2014

PowerShell TTUC #13 – Scheduled Jobs

PowerShell Tips, Tricks and Useful Commands (TTUV) #13 – Scheduled Jobs

PowerShell scripts can be run as a scheduled job using using Windows scheduler.  Create a batch file with the following syntax/commands:


Powershell.exe “c:\scripts\mytestscript.ps1”


Wednesday, April 9, 2014

PowerShell - Tips, Tricks and Useful Commands

Tip #4 –





Tip #3 – Comparison Operators

Published date - May12, 2013































.csharpcode, .csharpcode pre
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
background-color: #f4f4f4;
width: 100%;
margin: 0em;
.csharpcode .lnum { color: #606060; }



More info -


#2 Logical Operators
Published date - April 11, 2013



Logical AND


Logical OR


Logical XOR


Not equal to


Not equal to


More info -

#1 Special Characters – Published Date - April 9, 2013

PoweShell supports the following special characters:









Form feed


New line


Carriage return


Horizontal tab


Vertical tab


Stop parsing


More info -

Tuesday, March 18, 2014

Collect Computer Information From Active Directory– PowerShell Script

This PowerShell script can be used to collect computer information from Active Directory.   I am searching only Windows XP and Windows 7 machines.  You can update these values  by modifying $OS1 and $OS2 variables.

$OS1 =  "Windows 7*"
$OS2 = "Windows XP*"

This script is schedule to run everyday.  That is the reason I have include a backup file location and a file copy process.


$BKlocation = "E:\Scripts\Win7\Report_Backups"
$Verify = Test-path -PathType Container $BKlocation
If ($Verify -eq $false)
{$Verify = New-Item -ItemType Directory -Path $BKlocation }
move-item "E:\Scripts\Win7\win*.txt" $BKlocation –Force

I am currently collecting only the following information.  You can add more details based on your requirement.

$tName = $
$tOS = $ItemProp.operatingsystem
$tSP = $ItemProp.operatingsystemservicepack
$tDes = $ItemProp.description
$tLoc = $ItemProp.distinguishedname
$tBuild = $ItemProp.operatingsystemversion




In my case, I am using an input file which contains the Distinguished Name of the OU.  You don't have to use an input file, if you are searching an entire Domain.  


Thursday, March 13, 2014

Verify Service Status Remotely Using Local Account – PowerShell Script

I have modified one of my previously published script - Stop, Start, Disable Service Remotely–PowerShell Script ( to use Local account (instead of a domain account) to verify the status of the service.



Input file contains computer names in the following format:


Tuesday, March 11, 2014

Blogger and Annoying Adobe Upgrade / Flash Malware

I was getting some really annoying Adobe Flash pop-up (malware?) on my blog.  I reviewed the code many times but I could find any suspicious entries.  However, my blog was showing the following advertisement at the bottom of the page.


I didn't have  Adsense configured in the blog. Based on my troubleshooting,  I noticed that this Ad is coming from a gadget called “Sociable” and somehow this gadget was “calling” the Adobe flash and other malware programs. 



The removal of the Sociable gadget fixed the (1) unauthorized Ad (2) Adobe and other malware issues in my blog!

Monday, March 10, 2014

Converting PowerShell (PS1) to EXE / Standalone Application

As we know, there many applications available to convert a PowerShell file to a standalone executable file.  Based on my experience, PowerShell GUI Script Editor has an easy and working (yes!) option available with the latest version of the product.

You can select Compile option from Tools menu as shown in the following screenshot.  It will generate an EXE and a configuration file.


You also able to select the .NET framework. 


Another useful add-on is Compile Script into Service option.



You can download the free PowerShell GUI Editor from this location -

Tuesday, February 25, 2014

User and Mailbox Migration – Part I (Introduction)

I am creating a few blogs about user and mailbox migration.  The plan is to explain different migration scenarios which exists in real world.  So far, I have 4 scenarios (listed below).  I may include a few more later. 

We can achieve all these migrations by using a free tool or a third party migration tool.  Since, a third party migration tools can provide more options and flexibility, I am planning to use Quest Migration Manager (QMM) for AD and Exchange for these migration scenarios. 

If you are not familiar with migration process, you can read my previous blogs from the following location:

ADMT and Migration Details


QMM and Migration Details


Scenario #1 One-To-One

This is a straight forward migration.  You will be migrating resources from a source forest to a target forest  (one-to-one).


Scenario #2 One-To-Many

In this scenario, you will be migrating user account to an Account Forest and Mailboxes to a Resource Forest (one-to-many).  There mailboxes will be linked mailbox.


Scenario #3 Many-To-One

In this scenario, you will be going from a resource forest model to a single forest model (many-to-one).  AD and Exchange will be in the target forest.


Scenario #4 Many-To-Many

Here you will be moving users from source account forest to a target account forest and mailboxes from source resource forest to a target resource forest (many-to-many). 



The details and step-by-step instructions will be included future part of this blog. 

Basic Mail Routing Configuration to QMM for Exchange

Here are some of the basics Exchange configuration you need to complete before you can start migrating mailboxes using QMM.  My assumption is that you are going from Exchange2000/2003 to Exchange 2007/2010.

Source - Exchange 2003

  1. Create a RUS policy to allow the Exchange to be authoritative for the QMM EX SMTP Namespace (you can use any name space like source.qmm, source1.qmm etc).
    1. Create a new Recipient Update Policy.
    2. Name - Source.qmm or Source1.qmm
    3. Filter - Leave this blank. Anything configured here will cause the RUS policy to stamp addresses on the objects. QMM will stamp this value during the migration.
    4. Add the SMTP Address of "Source.qmm" or Source1.qmm and check the box "This Org is authoritative for this namespace"
    5. Click OK, to save the Policy.
  2. Create a new SMTP Connector as follows
    1. Name - Target.qmm or Target1.qmm (target name space for QMM internal mail routing)
    2. Assign the Exchange SMTP server that will service this connector as "SOURCE-EX01" (Source EX Server)
    3. Set the connector to forward all e-mail to a smart host (or use your current mail routing configuration)
    4. Set the Address space to "Target.qmm" or Target1.qmm with a Cost of 1
      Note 1: The cost of this connector must be lower than the internet connector. If the cost of the internet connection (*) is set to the same value as this connector, both the internet connector and the Target.qmm connector will service the Target.qmm SMTP namespace.
    5. Click ok to save the connector
      Note 2: The Routing Engine will have to be stopped and started for these changes to take effect. If not, they will take effect on the next refresh cycle (15 min default)
  3. Reconfigure the SMTP Virtual server to "Resolve to GAL: for all incoming mail and to allow the Target bridgehead to submit SMTP mail (if restricted)
    1. From the protocols node of Exchange server ->properties on the Default SMTP Virtual server, Click the Resolve to GAL check box.
    2. Verify that the SMTP Virtual server is not restricted to what IP addresses can submit mail, if it is Add the IP address on the Target bridgehead.
    3. Click ok to Save the connector.
    4. Note: The SMTP Virtual server will have to be stopped and started for this change to take effect.

Target - Exchange 2010

1. Create an Accepted Domain for the Target QMM Exchange SMTP Namespace (you can use any name space like Target.QMM, Target1.QMM etc) .

2. Create a Send Connector for the Source QMM Exchange SMTP Namespaces (Source.QMM or Source1.QMM)

3. Configure it to forward all messages to the Source Exchange bridgehead's IP Address or FQDN.

a. Set the namespace to Source.QMM or Source1.QMM with a cost of 1.

4. Create a Receive connector on Target Exchange.

    1. Click on Create new Receive connector.
    2. Define as Custom.
    3. The IP/Port it listens on will be unchanged. The same IP address that services port 25 must be used.
    4. The IP that will submit messages should be defined.
    5. Commit the changes.
    6. Edit the connector to the following security settings:
    7. Externally Secured ONLY
    8. Exchange Servers ONLY



  1. Part1 - User and Mailbox Migration (Introduction)
  2. Part2 - Scenario #1 (One-To-One)
  3. Part3 - Scenario #2 (One-To-Many)
  4. Part4 - Scenario #3 (Many-To-One)
  5. Part5 – Scenario #4 (Many-To-Many)

Monday, February 24, 2014

CUDA Compiler Error in Visual Studio 2012 Error MSB3721: The command "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\bin\nvcc.exe"

I am very new to CUDA and parallel programming.  I was getting all kinds of errors in the beginning due wrong DLL,  LIB folder, Working directory etc.  However, the following error message was little confusing and misleading:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\BuildCustomizations\CUDA 5.5.targets(592,9): error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2012 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin"  -IC:\OpenCV -IC:\OpenCV\build -IC:\OpenCV\build\include -IC:\OpenCV\build\include\opencv -IC:\OpenCV\build\x86 -IC:\OpenCV\build\x86\vc10 -IC:\OpenCV\build\x86\vc10\bin -IC:\OpenCV\build\x86\vc10\lib -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.5\include"  -G   --keep-dir Debug -maxrregcount=0  --machine 32 --compile -cudart static  -g   -DWIN32 -D_DEBUG -D_CONSOLE -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd  " -o Debug\ "D:\Santhosh\Project\Cuda1-OLD\Cuda1\"" exited with code 2.

I found a lot of recommendation on the net about changing the compute type, hardware configuration  etc for resolving this issue.  In my case, I was missing the correct folder name in the Include Directories under VC++ Directories node.  Everything started working after I added the correct include directories. 


Monday, February 17, 2014

Add Computers to a Group – PowerShell V1.0 Script

This PowerShell script can be used to add a computer to security group in Active Directory.  I have used the same logic in this Update Group Membership–PowerShell Script also.



Input file (computers.csv) contain computer names in the following format:


Friday, February 14, 2014

Windows XP to Windows 7 Migration and NetBIOS Name Resolution Issue (DNS Devolution)

I know this title is little confusing. We ran into this issue after upgrading workstations from Winnows XP to Windows 7.  All these computers were part of an Active Directory domain called  From Windows 7 machines, access to resources in the parent namespace ( was failing when you use a NetBIOS name. You have to use a Fully Qualified Domain Name (FQDN) from Windows 7 machines to access these resources. 

Following is a screenshot from a Windows XP machine.  As you can see, these machines were getting local domain ( and parent domain suffix ( 


So these computers that are members of a child namespace ( can access resources in the parent namespace ( without the need to explicitly provide the fully qualified domain name (FQDN) of the resource.  As you can see in the below screenshot, Windows 7 machine has only one entry in the DNS Suffix Search List -  So access to resources in the parent namespace ( was failing.


The new change in the DNS (DNS Devolution) cause this issue.  Even if you select Append parent suffixes of the primary DNS suffix  (as shown in the below screenshot), Windows 7 machines were not getting parent namespace ( because of the default DNS Devolution settings. 


If you are not planning to use DNS Suffix Search List, your option is to change the default DNS Devolution level using a GPO or registry settings.  You can read more information here -

In my scenario, I have to use DNS Devolution Level 2 to get both and on the DNS Suffix Search List.  I have used the following 3 settings in the GPO to resolve this issue.

Computer Configuration\Administrative Templates\Network\DNS Client



Popular Posts


Twitter Delicious Facebook Digg Stumbleupon Favorites More