Exchange Server 2010: Mobile Messaging

April 30th, 2010

When Exchange Server 2007 was released, mobile messaging was at best in its adolescence. Most mobile messaging users at that time were signed up with the BlackBerry service as the only viable option for enterprise level mobile messaging (34 million subscribers). Today, as we see so much with modern technology, people seem to be unable to live without getting their e-mail on their phone. So let’s see what Exchange Server 2010 now brings to the table.

One of the things that I like the most is that Exchange now is able to automatically synchronize with mobile devices over the cellular signal. Of course this is expected for messages, but Exchange also syncs up calendar items and contacts to make sure that users always has the most up to date information. Taking this even further, Exchange Server 2010 also gives users access to unified messaging features, allowing them to access their work voice mail from the mail application, and use speech-to-text voice mail preview the voice mail messages. Using Exchange ActiveSync over the air, you can also now see free/busy information in real time when checking a contact’s calendar availability allowing you to schedule meetings on the fly.

The mobile client also now is able to search the user’s entire mailbox for specific messages. This is cool because the typical user will only want to store their most recent few hundred messages at most on the device (so don’t run out of storage space). With Exchange ActiveSync, the search is sent from the mobile device to the server, where the search is performed, and then the results are returned to the phone.

Now to take advantage of all the new mobile messaging features, the users must be using a device running Windows Mobile 6.1 or later. All the features are automatically available to the users without any additional installation or configuration once Exchange 2010 is deployed in the organization.

Using Windows PowerShell as an IT Pro – Part 17

April 22nd, 2010

In my last post I looked at some Comparison Operators. Now I will examine some more Comparison Operators.

Greater than and Less than operators

The greater than operator (-gt) returns a value of TRUE or the matches when one or more of the input values is greater than the specified pattern. The less than operator (-lt) returns a value of TRUE or the matches when one or more of the input values is less than the specified pattern. When the ‘or equals to’ operators (-ge, -le) are used, they also compare to see if the value is equal to the specified pattern.

The following examples show the effects of these operators.

8 -gt 7

CompOper05

8 -ge 8

CompOper06

"c" -lt "a"

CompOper07

"a" -le "c"

CompOper08

1, 2, 3 -le 2

CompOper09

Containment Operators

The containment operators (-contains and -notcontains) are similar to the equality operators. However, the containment operators always return a Boolean value, even when the input is a collection.

Also, unlike the equality operators, the containment operators return a value as soon as they detect the first match. The equality operators evaluate all input and then return all the matches in the collection. In a very large collection, the -contains operator returns results quicker than the equal to operator. The following examples show the effect of the -contains operator.

1, 2, 3 -contains 2

CompOper10

"PowerShell" -contains "Shell"

CompOper11

"Windows", "PowerShell" -notcontains "Shell"

CompOper12

In my next post we will finish looking at Comparison Operators.

Using Windows PowerShell as an IT Pro – Part 16

April 16th, 2010

In my last post I looked at Assignment Operators. Now I will examine Comparison Operators.

Comparison operators let you specify conditions for comparing values and finding values that match specified patterns. To use a comparison operator, specify the values that you want to compare together with an operator that separates these values.

By default, all comparison operators are case-insensitive. To make a comparison operator case-sensitive, precede the operator name with a "c". For example, the case-sensitive version of "-eq" is "-ceq". To make the case-insensitivity explicit, precede the operator with an "i". For example, the explicitly case-insensitive version of "-eq" is "ieq".

All comparison operators except the containment operators (-contains, -notcontains) and type operators (-is, -isnot) return a Boolean value when the input to the operator (the value on the left side of the operator) is a single value (a scalar). When the input is a collection of values, the containment operators and the type operators return any matching values. If there are no matches in a collection, these operators do not return anything. The containment operators and type operators always return a Boolean value.

Windows PowerShell supports the following comparison operators.

Operator

Description

-eq

Equal to. Includes an identical value.

-ne

Not equal to. Includes a different value.

-gt

Greater-than.

-ge

Greater-than or equal to.

-lt

Less-than.

-le

Less-than or equal to.

-like

Match using the wildcard character (*).

-notlike

Does not match using the wildcard character (*).

-match

Matches a string using regular expressions. When the input is scalar, it populates the $Matches automatic variable.

-notmatch

Does not match a string. Uses regular expressions. When the input is scalar, it populates the $Matches automatic variable.

-contains

Containment operator. Includes an identical value that is not part of a value. Always returns a Boolean value.

-notcontains

Containment operator. Does not include an identical value. Always returns Boolean.

-replace

Replace operator. Changes the specified elements of a value.

Equality Operators

The equality operators (-eq, -ne) return a value of TRUE or matches when one or more of the input values is identical to the specified pattern. The entire pattern must match an entire value.

The following examples show the effect of the equal to operator:

"a" -eq "A"

CompOper01

"a" -ceq "A"

CompOper02

1, 2, 3 -eq 2

CompOper03

"Power" -ne "Shell"

CompOper04

In my next post we will examine more Comparison Operators.

Exchange 2010 Server Roles

April 12th, 2010

Exchange server roles were introduced three years ago with Exchange Server 2007 as a way to group specific Exchange management tasks together often on separate dedicated servers. Think of Exchange Server roles as similar to the Windows Server server roles, you CAN run all the roles on the same server, but generally it is not a good idea in anything other than the smallest deployments. For example, if you download the Hyper-V Evaluation VHD for Exchange 2010 testing, that server has all the roles installed on a single virtual machine.

The server role groups a set of features and components which perform specific functions in the messaging infrastructure. By using server roles you are able to reduce the attack surface of the Exchange Server and allows you to deploy and customize Exchange to fit your business goals and needs.  The Exchange Server 2010 server roles are as follows:

  • Mailbox Server: This is the host server for all mailbox and public folder databases. Address lists and offline address books are also generated and maintained on the Mailbox server. The server indexes all the databases and provides the ability to search across multiple mailboxes and Public folders. The Mailbox server also enforces messaging records management and retention policies for the organization.
  • Client Access Server: The CAS is basically the communication gateway between the messaging client and the mailbox. The server hosts the client protocols for mail access including POP3, IMAP4, HTTPS, Outlook Anywhere, the Availability service, and the Auto-discover service.
  • Unified Messaging Server: Unified Messaging basically refers to the marriage between e-mail and the telephone system. This allows you to access your voice mail through your email client, and allows you to access your e-mail through your telephone (system can read your email to you). Users can also receive faxes through this integration.
  • Hub Transport Server: The Hub Transport server is the router for the Exchange organization. This handles all mail flow inside the organization, applies transport rules, applies journaling policies, and delivers messages to the recipient.
  • Edge Transport Server: This server is your protective layer between the internal messaging environment and the outside world. Anti-spam and Antivirus scanning take place on the Edge Transport server. As such, this server is typically placed on a perimeter network with a firewall on either side of it, meaning a firewall between the Internet and the perimeter and a firewall between the perimeter and the company network.

Using Windows PowerShell as an IT Pro – Part 15

April 8th, 2010

In my last post I reviewed Arithmetic Operators. Now I will explore Assignment Operators.

Assignment operators assign one or more values to a variable and perform numeric operations on the values before the assignment. Windows PowerShell supports the following assignment operators.

Operator Description
= Sets the value of a variable to the specified value.
+= Increases the value of a variable by the specified value, or appends the specified value to the existing value.
-= Decreases the value of a variable by the specified value.
*= Multiplies the value of a variable by the specified value, or appends the specified value to the existing value.
/= Divides the value of a variable by the specified value.
%= Divides the value of a variable by the specified value and then assigns the remainder (modulus) to the variable.
++ Increases the value of a variable, assignable property, or array element by 1.
Decreases the value of a variable, assignable property, or array element by 1.

The assignment operator (=) assigns values to variables. If the variable already has a value, the assignment operator (=) replaces the value without warning. Since the assignment operator has been mentioned multiple times in this training, no additional details are included here.

The assignment by addition, subtraction, multiplication, and division operators all work more or less the same way. For numeric types it takes the first part of the operator (+, -, *, /) and performs the appropriate calculation and then it assigns the result. For strings, it appends the specified value to the existing value. The assignment by subtraction and division operators do not work with strings. Let’s take a closer look at several of these operators.

The assignment by addition operator (+=) either increments the value of a variable or appends the specified value to the existing value. The action depends on whether the variable has a numeric or string type and whether the variable contains a single value (a scalar) or multiple values (a collection). First, it adds, and then it assigns.

$a = 5

$a += 2

$a

Operator06

When the value of the variable is a string, the value on the right side of the operator is appended to the string.

$a = "String"

$a += ” Appended”

$a

Operator07

The assignment by subtraction operator (-=) decrements the value of a variable by the value that is specified on the right side of the operator. This operator cannot be used with string variables and it cannot be used to remove an element from a collection. First, it subtracts, and then it assigns.

$a = 5

$a -= 2

$a

Operator08

The increment operator (++) increases the value of a variable by 1. When you use the increment operator in a simple statement, no value is returned.

$a = 6

++$a

$a

Operator09

The decrement operator (–) decreases the value of a variable by 1. As with the increment operator, no value is returned when you use the operator in a simple statement. Use parentheses to return a value.

$a = 6

(–$a)

Operator10

In my next post we will examine Comparison Operators.

Exchange 2010 Deployment Assistant

April 1st, 2010

As I’ve been working through some of the new Exchange 2010 material recently, I came across the Exchange 2010 Deployment Assistant. This tool is also called ExDeploy, which if you remember working with Exchange 2003 is the same name as the Deployment Tool from that version. So this is not exactly a new idea, but let’s take a look at what they put together for Exchange 2010.

The Exchange 2010 Deployment Assistant is a web based tool that basically gathers information about your environment and uses that information to create a customized checklist detailing the procedures that will help to simplify your Exchange 2010 deployment.

To access the Exchange 2010 Deployment Assistant, go to the following web site:
http://technet.microsoft.com/en-us/exdeploy2010/default.asp

On the home page, you will choose one of four options:

  • Upgrade from Exchange 2003
  • Upgrade from Exchange 2007
  • Upgrade from Exchange 2003 & 2007
  • New installation of Exchange 2010

Just to see how detailed the checklist is, let’s explore the Upgrade from Exchange 2003 & 2007 option. On the first page, we are asked three questions:

  1. Are you running a disjointed namespace?
  2. Are you planning to deploy an Exchange 2010 Edge Transport server role?
  3. Are you planning to deploy an Exchange 2010 Unified Messaging server role?

Now the Assistant doesn’t expect you to be an expert at all things Exchange (though a little knowledge goes a long way) so each question can be expanded to show a full explanation of why the topic is important during the Exchange deployment. So for these questions, I’m answering No, Yes, No.

Surprisingly, the Deployment Assistant is able to create a checklist based on just the answers to these three questions. The checklist include the following steps along with detained explanations on what to do along the way:

  • Confirm prequisties steps are done (stuff like making sure all the installation minimum requirments are satisfied on the existing Exchange Servers and in Active Directory).
  • Install the Client Access server role (insert the disk, run through the installation wizard).
  • Add digital certificates on the Client Access server (to secure external access to Exchange, including an exportable private key in X.509 format).
  • Enable Outlook Anywhare (allowing remote users to access their mail without them needing to VPN into the network).
  • Configure OAB and Web Services virtual directories (allowing Outlook Anywhere clients to discover and automatically connect to Exchange 2010).
  • Configure settings on virtual directories (used for Autodiscover, ActiveSync, OWA, Exchange Control Panel, PowerShell, Exchange Web Services, and public folders).
  • Install the Hub Transport server role (responsible for mail flow).
  • Configure a legacy host name (to allow coexistance with Exchange 2003 and 2007).
  • Install the Mailbox server role (host for mailbox and public folder databases).
  • Change the OAB generation server (for creating and updating the OAB).
  • Install the Edge Transport server role (anti-spam and antivirus filtering, and applies messaging and security policies).
  • Subscribe the Edge Transport server (enables internet mail flow).
  • Move mailboxes from Exchange 2003 or Exchange 2007 to Exchange 2010 (self explanatory, but be aware that users cannot send or receive email while the mailbox is being moved so this should only be performed when would otherwise be sleeping).
  • Post-installation tasks (just a list of items to check on each server such as making sure that the servers have been activated with a valid product key).

And that is the complete upgrade path. Seems pretty easy. What I like about this checklists is that it can be used directly because it only lists the step needed for your specific environment. When working through many of the Deployment whitepapers, you need to determine whether many of the steps are relevant to your situation. Using the Exchange Server Deployment Assisstant reduces or removes this problem.

Intel’s New i7 Processor for Business

March 31st, 2010

I just purchased a new laptop for my son who is graduating this spring. The laptop uses the new Intel i5 chip, the i7 chip version was nearly $500 more. He absolutely loves the laptop and has commented several times on how fast it runs, especially compared with the old Centrino laptop he has used up to now.

This got me thinking about possibly purchasing one of the new i7 desktops for development. Wondering what the difference is between the i5 and i7, I went straight to the Intel website to find out.

According to Intel the new features that set the i7 apart from the i5 (and other processors) include faster clock speeds, 4 cores capable of running 8 threads simultaneously (6 and 12 respectively on the i7 Extreme), and intelligent Intel Turbo Boost technology. All of this combines to make the i7 a premier candidate for 3D gamers and multimedia applications. That’s great for the gamers, who tend to tax processors more than most businesses by the way. But, how do these features translate to our world of business and development work?

Four cores double the processing capabilities and provide extra speed for multi-threaded applications. If you use a computer with the i7 for virtualization, it means you can run more virtual machines before the system becomes noticeably taxed. In my case, it is typical to have several virtual machines running to simulate a network environment for development. Added to this are the additional resources required to run Microsoft Word, Microsoft PowerPoint, and/or Camtasia. I have frequently struggled to eke out that last little bit of performance with all of these running.

This brings me to the Intel Turbo Boost Technology. The i5 and i7 processors include this intelligent speed boosting technology. These processors constantly monitor resource usage and dynamically increase the processor speed when needed. The converse is also true. The processor decreases speed when the demands on it are light. When the speed decreases, power consumption also decreases. So, when we are running multiple virtual machines or several instances of SQL Server 2008, the processor can boost itself to a higher speed if all of the applications require processing time, and conserve energy when only one or two of them are running.

Hyper-Threading enables each processor core to act like two cores by running up to two threads when necessary. The technology ensures that at each thread runs during the pause, or down times for the other thread to maximize each clock cycle.

One last feature that impresses me is Application Targeted Accelerators. Application Targeted Accelerators are special fixed-function additions to the processor that handle specific duties outside of the mainstream core processing. The applications that will benefit the most include graphics, video encoding and processing, 3-D imaging, gaming (really?), string and text processing, CRC checking, lexing, regular expression evaluation, virus scanning and intrusion detection.

Another significant feature is the enhanced vPro technologies. I think I will save that for a future blog.

Oracle to SQL: Part 2

March 31st, 2010

In my previous post, we looked at the first steps to accessing Oracle data in SQL Server: creating a Replication Administrative Schema User, and then granting the Replication Administrative Schema user SELECT permissions on the tables you want to migrate to SQL Server.

Next, you need to install the Oracle client networking software and the Oracle OLE DB provider on the SQL Server Distributor, so that the Distributor can make connections to the Oracle Publisher. You should install the most recent version of the Oracle client software. You may choose to install different options depending on your needs, but these are the steps that I followed when I installed the software.

I chose the Administrator option to ensure all the components I needed were installed. The Oracle Universal Installer will guide you through the rest of the steps to install the client software. I also installed the networking software which didn’t start automatically after I installed the client software. You can start this wizard by navigating to Start | All Programs | Oracle – OraClient11g_home1 | Configuration and Migration Tools | Net Configuration Assistant.

When I opened the Oracle Net Configuration Assistant, I chose the Local Net Service Name configuration option.

To access an Oracle database across the network you use a net service name. The net service name is usually the global database name. On the Net Service Name Configuration, Service Name page, you need to enter this name. I selected the option to use TCP to communicate with the database over the network. On the Net Service Configuration, TCP/IP Protocol page, you need to enter the name of your Oracle server, and you can change the port number if you want, but I kept the default.

On the Net Service Name Configuration, Test page, you should perform a test. When I performed this test, I got an error. To get around the error, I had to change the login to the Replication Administrative Schema user I created. Then, the test succeeded.

For the rest of the wizard, I accepted the defaults, and then restarted the computer.

After completing the wizard, there are a few more steps to migrate Oracle data to the SQL Server, which I will talk about in my next post.

Oracle to SQL: Part 1

March 31st, 2010

I started working on a simple migration of Oracle data to SQL Server and had a hard time finding a single document explaining the entire process. Having almost no experience with Oracle, any steps that involved Oracle took me a long time to complete. So here are the steps that I followed.

First, you need to run a script to create a Replication Administrative Schema User. There is a script that is provided when you install SQL Server 2008. It is located at <drive>:\\Program Files\Microsoft SQL Server\<InstanceName>\MSSQL\Install\oracleadmin.sql. You need to copy this script to the Oracle server. In this example, I copied the script to the root of the C drive. Then you need to run the script using sqlplus. Here are the steps to run it using sqlplus on a Windows Server 2008 R2 server with Oracle installed.

  1. Open a Command Prompt.
  2. Type sqlplus.
  3. Logon with an account with DBA privileges on the Oracle server.
  4. Run the script by typing @ and then the path to the script in quotes. For my example this would be @”c:\oracleadmin.sql”.
  5. You will be prompted for a name and password for the new user. Also, you will be prompted for the default tablespace.

Next, you need to give the Replication Administrative Schema User you just created SELECT permissions on the tables you want to access in SQL Server.

You can grant the SELECT permissions in the Database Control console.

  1. On the Oracle server, you need to login to the Database Control with a user that has DBA permissions.
  2. Click on the Server tab. Under Security, click Users.
  3. Select the user you created, and then click Edit.
  4. Click on the Object Privileges tab. In the Select Object Type list, select Table, and then click Add.
  5. Under Select Table Objects, click the flashlight icon.
  6. In the Schema list, select a schema.
  7. Click Go.
  8. Select the tables you want to be able to access in SQL Server.
  9. Under Available Privileges, click SELECT, and then click Move.
  10. Click OK, and then click Apply.

The next steps are performed on the SQL Server machine. I will discuss these steps in my next post.

Exchange 2010: OWA

March 31st, 2010

Outlook Web Access has gone through many improvements over the years, starting as a very basic web interface and has been building up to a thin client replica of the Microsoft Outlook client. With Exchange Server 2010, OWA appears to be a fully mature edition.

OWA now lets you group messages by conversation, grouping all messages that originated from a single message and all the resulting replies. This is not a big deal if you are just going back and forth between one other person in the organization, but if you are receiving feedback from 10 or 100 people in your organization, you’ll can easily keep those messages together.

To help protect people from sending damaging or embarrassing messages, Exchange Administrators can configure Mail Tips. This feature is implemented similar to how Outlook Rules work and can provide users with a warning when an email is being sent to an external recipient, to a large distribution group, or to someone who is currently Out of Office.

User can now perform more powerful searches from Outlook Web Access, similar to what is available in the full Outlook client. You can search by recipient, whether attachments were included, and many other common search criteria. You can also set your favorite searches so that you can reuse them with a single click of the mouse.

Presence information is now integrated into Outlook Web Access allowing you to immediately know whether a person is available, busy, or not available using a green, yellow, red color coding. Depending on how important your message is and the recipient’s status, you can decide to Instant Message the person, another feature that is integrated directly into OWA when the Microsoft Office Communications Server is also implemented.

Finally, one of my favorite features now is the SMS Sync feature. By using Exchange ActiveSync, you can configure the server to automatically send out SMS text messages to your cell phone. This feature is also configured using rules, so whenever you get an email from a particular client, you can have a notification sent directly to your phone.