Friday, February 25, 2011

Language Pack Error when Attempting to Install Exchange 2010 Service Pack 1 Upgrade

While upgrading to Exchange 2010 Service Pack 1 you may receive the following error during the readiness check:

Language Prerequisites

Language packs are installed on this server and must be upgraded with the Exchange binaries. Please specify a language bundle with the upgrade operation.




Download the language pack from the Microsoft website instead of using the one on the DVD:

http://www.microsoft.com/downloads/en/details.aspx?FamilyID=56C2AF38-A080-4CE1-8518-E63EE87F11C5

Run Exchange 2010 setup again. Click Upgrade all languages from the language bundle.



Set the path to the language bundle you downloaded from the Microsoft website.



Hit Finish



Now when setup runs it will pass...

Thursday, February 24, 2011

Wednesday, February 23, 2011

Migrating from Exchange 2003 to Exchange 2010

When upgrading to Exchange 2010 the first thing you must check is that your Exchange 2003 organisation is in Native mode. By default all Exchange 2003 installations are in mixed mode.

Exchange 2003 mixed mode allows 2003 to work with legacy Exchange 2000 servers.

Native mode does not allow Exchange 2000 servers and provides enhanced functionality. To understand the improvements in Exchange 2003 native mode please see the following article:

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

If you have any Exchange 2000 servers you must remove them before being able to upgrade to Native mode.

To upgrade Exchange 2003 to native mode open system manager, right click the organisation (mines Test Lab) and click properties.



Click Change Mode to change to Native Mode.



Now you must prepare the legacy Exchange 2003 permissions. This ensures the Exchange 2003 Recipient Update Service functions correctly after you update the Active Directory schema for Exchange Server 2010. For more information on this please see:

http://technet.microsoft.com/en-us/library/aa997914.aspx

To do this run the following command of the Exchange 2010 media:

setup.com /PrepareLegacyExchangePermissions

Note you will get an error if you haven't upgraded Exchange 2003 to native mode:



Lastly prepare the schema and domain for Exchange 2010. You can do this by running the following command:

setup.com /PrepareAD

Congratulations you can now migrate to Exchange 2010

Monday, February 21, 2011

Microsoft Word 2010 Shading Fill Bug

I found today what appears to be a bug with the Shading tool in Microsoft Word 2010 when dealing with tables. The build of Microsoft Word I'm using is 14.0.5123.5000.

I'm running Windows 7 SP1 Enterprise x64. My installation of Office 2010 is 32bit.

My word document I'm working on is in docx format.

The problem comes around selecting an existing colour from a table.

Here i have my cursor in a light blue table:



To get the RGB color code I go to "Shading" --> "More Colors".



However its coming up with my current color as black (see bottom right). It comes up as black not light blue!



If I click OK it will make my cell black.



Now I undo my change (CTRL + Z).



Now I go back to "Shading" --> "More Colors"



My light blue color is now coming up correctly.



If I close my word document and re-open it, the problem does not re-occur.

If I log off my session and log back in, the problem re-occurs.

I reported this bug to Microsoft on the following forum thread:
http://social.technet.microsoft.com/Forums/en-US/word/thread/2f95341a-e0af-4a7b-b6dd-8d4fca54d939

Thursday, February 17, 2011

Eventid 4002, MSExchangeAvailability

I had a user experiencing Eventid 4002 from source MSExchangeAvailability under the application logs in event viewer. In the description field for the error the following was logged:

Process 9696: ProxyWebRequest CrossSite from S-1-1-0 to https://mail.example.com/ews/Exchange.asmx failed. Caller SIDs: NetworkCredentials. The exception returned is Microsoft.Exchange.InfoWorker.Common.Availability.ProxyWebRequestProcessingException: System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 10.70.5.21:443

at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)

at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)

--- End of inner exception stack trace ---

at System.Web.Services.Protocols.WebClientAsyncResult.WaitForResponse()

at System.Web.Services.Protocols.WebClientProtocol.EndSend(IAsyncResult asyncResult, Object& internalAsyncState, Stream& responseStream)

at System.Web.Services.Protocols.SoapHttpClientProtocol.EndInvoke(IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.Service.EndGetUserAvailability(IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.FreeBusyApplication.EndProxyWebRequest(ProxyWebRequest proxyWebRequest, QueryList queryList, Service service, IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.ProxyWebRequest.EndInvoke(IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.AsyncWebRequest.EndInvokeWithErrorHandling():. The request information is ProxyWebRequest type = CrossSite, url = https://mail.example.com/ews/Exchange.asmx

Mailbox list = SMTP:Werner.Zelisko@brnet.de, Parameters: windowStart = 2/1/2011 12:00:00 AM, windowEnd = 4/1/2011 12:00:00 AM, MergedFBInterval = 30, RequestedView = FreeBusy

. ---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond 10.70.5.21:443

at System.Net.Sockets.Socket.EndConnect(IAsyncResult asyncResult)

at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Int32 timeout, Exception& exception)

--- End of inner exception stack trace ---

at System.Web.Services.Protocols.WebClientAsyncResult.WaitForResponse()

at System.Web.Services.Protocols.WebClientProtocol.EndSend(IAsyncResult asyncResult, Object& internalAsyncState, Stream& responseStream)

at System.Web.Services.Protocols.SoapHttpClientProtocol.EndInvoke(IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.Proxy.Service.EndGetUserAvailability(IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.FreeBusyApplication.EndProxyWebRequest(ProxyWebRequest proxyWebRequest, QueryList queryList, Service service, IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.ProxyWebRequest.EndInvoke(IAsyncResult asyncResult)

at Microsoft.Exchange.InfoWorker.Common.Availability.AsyncWebRequest.EndInvokeWithErrorHandling()


The user had set the Internal and External URL for his WebServiceVirtualDirectory to a hostname of a CAS server that was a member of an array. When a CAS server is a member of an array the virtual directories need to point at the hostname of the array, not the hostname of the individual servers!

Please refer to the following technet article:
http://technet.microsoft.com/en-us/library/aa997237.aspx

This technet article says:

If you have a set of load balanced Client Access servers, you don't have to specify the name of each server when you run this command. You only need to use the name of one of the servers in the set of load balanced servers.


Changing the WebServiceVirtualDirectory to the name of the load balanced array resolved the issue.

Wednesday, February 16, 2011

HyperV Advances closer to VMware

Microsoft has just completed the RTM of Windows Server 2008 R2 SP1 and Windows 7 SP1 which will be available for download on the 22nd of Feb.

In this post I want to talk about some major enhancements to Hyper V server.

The Windows Server 2008 R2 SP1 hyper visor offers two new features - Dynamic Memory and RemoteFX.

Dynamic Memory takes Windows Server’s Hyper-V feature to a whole new level. Dynamic Memory lets you increase virtual machine density with the resources you already have—without sacrificing performance or scalability. In Microsoft's lab environment, Windows 7 SP1 as the guest operating system in a Virtual Desktop Infrastructure (VDI) scenario yeilded 40% increased density from Windows Server 2008 R2 RTM to SP1. This was achieved by enabling Dynamic Memory.

You get immediate benefit from the moment you turn on the virtual machine. There’s no waiting for memory management algorithms to work. Nor do you have to tweak the hypervisor with custom settings for specific workloads to maximize density. It’s an awesome out-of-box experience for all your virtualization workloads.

RemoteFX is a "first to market" technology that lets lets you virtualize the Graphical Processing Unit (GPU) on the server side and deliver next-generation rich media and 3D user experiences for VDI - yes they beat VMware at this.

For more info on RemoteFX please see:

http://blogs.technet.com/b/virtualization/archive/2010/03/18/explaining-microsoft-remotefx.aspx

Resource Has Declined Your Meeting Because it Is Recurring

There is an issue during an EX2003 to 2010 migration. When an Exchange 2003 resource mailbox is migrated and then converted to an Exchange 2010 resource, clients get this error.

Error Message: "Resource Has Declined Your Meeting Because it Is Recurring"

This error occurs for Outlook 2003, 2007 and 2010.

When creating a new resource mailbox on 2010 servers there are no issues on Outlook 2003 / 2007 or 2010 clients - only migrated mailboxes have the problem.

This issue occurs if the Auto Accept agent is enabled on the Exchange 2003 resource mailbox. This needs to be unregistered before you move the Exchange 2003 resource mailbox to Exchange 2010.

Wednesday, February 9, 2011

FX:{813c1b01-6624-4922-9c6c-03c315646584} - SBS 2008

I just finished an SBS 2008 install - everything working perfectly. The last item was to setup Dial-in VPN server. Fired up RASS, activated it and performed the required configuration (something I have done many times!). When the wizard finished and RRAS was enabling itself, the service "Routing and Remote Access" hung.

I rebooted the server - when it came back up the following services kept crashing:
• Application Experience
• IKE and AuthIP IPsec Keying Modules
• IP Helper
• Secondary Logon
• Server
• Shell Hardware Detection
• System Event Notification Service
• Task Scheduler
• User Profile Service
• Windows Management Instrumentation
• Background Intelligent Transfer Service
• Network Policy Server
• Routing and Remote Access
• TPM Base Service
• Windows Update

When I started Routing and Remote Access I got the following message.



Everytime this came up all services would crash. If I did not start this service, all services above would still crash approximately every 3 minutes.

I also experianced the following errors.

FX:{813c1b01-6624-4922-9c6c-03c315646584}

Could not find a part of the path
'C:\Windows\system32\config\systemprofile\AppData\Local\Temp\6kehjclx.tmp'.




System.IO.DirectoryNotFoundException

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
at System.CodeDom.Compiler.TempFileCollection.EnsureTempNameCreated()
at System.CodeDom.Compiler.TempFileCollection.AddExtension(String fileExtension, Boolean keepFile)
at Microsoft.CSharp.CSharpCodeGenerator.FromSourceBatch(CompilerParameters options, String[] sources)
at Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromSourceBatch(CompilerParameters options, String[] sources)
at System.CodeDom.Compiler.CodeDomProvider.CompileAssemblyFromSource(CompilerParameters options, String[] sources)
at System.Xml.Serialization.Compiler.Compile(Assembly parent, String ns, XmlSerializerCompilerParameters xmlParameters, Evidence evidence)
at System.Xml.Serialization.TempAssembly.GenerateAssembly(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, Evidence evidence, XmlSerializerCompilerParameters parameters, Assembly assembly, Hashtable assemblies)
at System.Xml.Serialization.TempAssembly..ctor(XmlMapping[] xmlMappings, Type[] types, String defaultNamespace, String location, Evidence evidence)
at System.Xml.Serialization.XmlSerializer.GenerateTempAssembly(XmlMapping xmlMapping, Type type, String defaultNamespace)
at System.Xml.Serialization.XmlSerializer..ctor(Type type, String defaultNamespace)
at Microsoft.Storage.Management.SnapIn.StorageRootScopeNode.LoadCustomData(Byte[] snapInData)
at Microsoft.ManagementConsole.SnapIn.ProcessRequest(Request request)
at Microsoft.ManagementConsole.Internal.SnapInClient.Microsoft.ManagementConsole.Internal.IMessageClient.ProcessRequest(Request request)
at Microsoft.ManagementConsole.Internal.IMessageClient.ProcessRequest(Request request)
at Microsoft.ManagementConsole.Executive.RequestStatus.BeginRequest(IMessageClient messageClient, RequestInfo requestInfo)
at Microsoft.ManagementConsole.Executive.SnapInRequestOperation.ProcessRequest()
at Microsoft.ManagementConsole.Executive.Operation.OnThreadTransfer(SimpleOperationCallback callback)




Log Name: Application
Source: Microsoft-Windows-PerfNet
Date: 2/10/2011 1:02:29 PM
Event ID: 2005
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: JCC-SBS.jcc.local
Description:
Unable to read performance data for the Server service. The first four bytes (DWORD) of the Data section contains the status code, the second four bytes contains the IOSB.Status and the next four bytes contains the IOSB.Information.




Log Name: Application
Source: Application Error
Date: 2/10/2011 12:50:55 PM
Event ID: 1000
Task Category: (100)
Level: Error
Keywords: Classic
User: N/A
Computer: JCC-SBS.jcc.local
Description:
Faulting application svchost.exe_RemoteAccess, version 6.0.6001.18000, time stamp 0x47919291, faulting module mprdim.dll, version 6.0.6001.18000, time stamp 0x4791ad32, exception code 0xc0000005, fault offset 0x000000000000e352, process id 0x1aa4, application start time 0x01cbc8d2297dcc0c.




I also had this weird system folder appearing in Computer.



Resolution

I started off by completely removing routing and remote access and all network policy server components - however this did not help the situation.





I did some reading around and found out this issue can be caused by many things. Here are some links to problems other people have been experiancing:

http://social.technet.microsoft.com/Forums/en-US/winserverManagement/thread/78767fb7-9b83-4087-8bb2-1b4718ee4d3a
http://social.technet.microsoft.com/Forums/en/itprovistaapps/thread/3928aa45-497c-4f2a-93fb-faaa7946d973
http://social.technet.microsoft.com/Forums/en-US/winservermanager/thread/07feb5ce-a757-45f8-972e-43c343d946fb
http://social.technet.microsoft.com/Forums/en-US/winservermanager/thread/6e77f9d0-e86d-4a35-abed-504cf217fc96

I happened to have the same problem as Jared Heinrichs:

http://jaredheinrichs.com/mmc-error-18ea3f92-d6aa-41d9-a205-2023400c8fbb.html

I navigated to the following directory:

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG



I renamed the "machine.config" file to "machine.config.bad". I then made a copy of the "machine.config.default" file and renamed it to "machine.config".



After rebooting the SBS 2008 server it came up fine with all services started!

However now when users log into Outlook Web Access they get the following error due to the machine.config being restored!

Outlook Web Access encountered an unexpected error and was unable to handle your request.

--------------------------------------------------------------------------------


Request
Url: https://mail.company.com:443/owa/default.aspx
User host address: 203.173.30.210

Exception
Exception type: System.Configuration.ConfigurationErrorsException
Exception message: The 'system.serviceModel/serviceHostingEnvironment' configuration section cannot be created. The machine.config file is missing information. Verify that this configuration section is properly registered and that you have correctly spelled the section name. For Windows Communication Foundation sections, run ServiceModelReg.exe -i to fix this error.

Call stack

System.ServiceModel.Configuration.ConfigurationHelpers.UnsafeGetAssociatedSection(ContextInformation evalContext, String sectionPath)
System.ServiceModel.Configuration.ServiceHostingEnvironmentSection.UnsafeGetSection()
System.ServiceModel.ServiceHostingEnvironment.HostingManager.LoadConfigParameters()
System.ServiceModel.ServiceHostingEnvironment.HostingManager..ctor()
System.ServiceModel.ServiceHostingEnvironment.EnsureInitialized()
System.ServiceModel.PartialTrustHelpers.PartialTrustInvoke(ContextCallback callback, Object state)
System.ServiceModel.Activation.HttpModule.ProcessRequest(Object sender, EventArgs e)
System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)




To resolve this problem with OWA the following command was run:

C:\Windows\Microsoft.NET\Framework\v3.0\Windows Communication Foundation>ServiceModelReg.exe -i



Followed by an IISReset



OWA is now working!

SBS Server hangs at "Applying Computer Settings" after Disabling IPv6

I disabled IPv6 on an SBS 2008 server to resolve an issue with the Exchange 2007 NSPI RPC endpoint. Please see:

http://clintboessen.blogspot.com/2010/07/error-occurred-while-testing-nspi-rpc.html

After disabling IPv6 the server would hang at "Applying Computer Settings" for approximately 1 hour before finally booting.

If you ever disable IPv6 on an SBS2008 server you need to perform the following registry change!

1. Open Registry Editor and then the registry subkey: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\

2. Double-click DisabledComponents entry. Create this entry if required.

3. In Create the new entry DWORD (32-bit) Value.

4. Type DisabledComponents, and then press ENTER.

5. Double-click to open DisabledComponents. Enter the value as "ffffffff" and then click OK.


This should do the trick. You will now be able to disable IPv6 and still boot into SBS2008.

Additional reading:

http://blogs.technet.com/b/sbs/archive/2008/10/24/issues-after-disabling-ipv6-on-your-nic-on-sbs-2008.aspx

Tuesday, February 8, 2011

ifmember.exe doesnt work Windows Vista/2008/7

ifmember.exe no longer works on Windows Vista, 2008 or Windows 7. ifmember.exe was a handy tool for checking a users group membership in bat scripts.

In previous versions of windows ifmember.exe was used like this:

ifmember.exe "MYOB Users"
if not errorlevel = 1
net use m: \\JCC-SBS\MYOB (
)


What about Windows Vista, 2008 and Windows 7? Is there an alternative for ifmember.exe? The answer is yes! I use this:

net user /domain %username% | find "MYOB Users"
if not errorlevel = 1 (
net use m: \\JCC-SBS\MYOB
)

Windows 7 Syncs 1 hour behind to 2008 SBS Server

I just setup a new SBS site. All windows 7 workstations were configured to use NT5DS (authoritative time). They were successfully syncing against the Windows Server 2008 SBS server.

Problem: Each time the workstations synced against the SBS server the time went back by 1 hour. You can force a sync using w32tm /resync.

This is because the SBS server is not syncing against an Atomic clock! Configure the SBS server to sync it's time against something (I use pool.ntp.org). Run the following commands on the SBS server!

w32tm /config /manualpeerlist:pool.ntp.org,0x8 /syncfromflags:MANUAL
net stop w32time
net start w32time
w32tm /resync


Then go to the Windows 7 workstations and run w32tm /resync. The time should be correct.

Note: Workstations will automatically sync.