Managing a Server Core fileserver

So, you want to manage that Server Core now I suppose. Well, ok but you will need to do a few things first…

As we all know, there isn’t much of an interface on a Core server, just a command shell. For some that is a bit intimidating, for others it’s a welcome sight. But at some point you will want to do something from a different computer, maybe use one of those nice GUI tools like Server Manager, Share and Storage Manager, File Server Resource Manager and any other kind of manager you can think of. It’s ok, I wanted to use them too!

Management Workstation

You will need to do a few things first, load the proper tools and set some firewall settings. For the purpose of this article I’m assuming you are running a version of Windows 7 greater than or equal to Windows 7 Professional. You will need to download and install the Remote Server Administration Tools for Windows 7, for a detailed list of what is available view KB958830. Once you have the set of tools installed that you want to use you will need to open up some ports in the firewall. The following may or may not need to be enabled depending on what you’re wanting to do.

  • Remote Administration
  • Remote Event Log Management
  • Remote Schedule Tasks Management
  • Remote Service Management
  • Remote Volume Management

Windows Server 2008 Core

I’m not going to explain all the different roles and such that are available, but I am toying with the idea of writing up a guide or something that will lead you through some basic server setups. For now, I will assume you are just needing to manage your file server, and that you have already installed the necessary roles and features to do so. If not, check out my last article to see how to do that. You will need to have PowerShell enabled prior to setting up the Server Manager stuff, but there is a nifty little command available to help us out, sconfig.

The text below has been copied from KB976839.

For a remote server that is running a Server Core installation of Windows Server 2008 R2

Method 1

  1. Log on as an administrator to the remote server by using the console or by using Remote Desktop Services.
  2. Open an elevated Command Prompt window.
  3. At the command prompt, type the following command, and then press ENTER:

    sconfig

  4. At the command prompt, type 4 to select the Configure Remote Management option, and then press ENTER.
  5. At the command prompt, type 3 to select the Allow Server Manager Remote Management option, and then press ENTER.
    Note If you have not already installed PowerShell, you are prompted to do this. Type 2 to select the option to install PowerShell. Click OK when you are prompted that the installation of PowerShell is finished. Additionally, you must restart the server before you complete step 5.
  6. Connect to the remote server by using Server Manager.
    Note You do not have to restart the remote server unless you have to install PowerShell before you complete step 5.

Windows Server Core 2008 R2 File Server

In order to work around an issue we are currently experiencing with System Center Configuration Manager and Windows 2008 R2 Failover Clustering, we need to setup a file server. I decided to set this up as a Core server, and only install the File Services that we need. I won’t walk you through the setup options, just the steps to take once you’re into the console.

Rename the computer

netdom renamecomputer %computername% /newname:{newComputerName}

shutdown /r

Join the domain

netdom join ComputerName /domain:DomainName /userd:UserName /passwordd:*

shutdown /r

Install the required roles

dism /online /enable-feature /featurename:CoreFileServer

dism /online /enable-feature /featurename:NetFx2-ServerCore

dism /online /enable-feature /featurename:FSRM-Infrastructure-Core

Configure the firewall

Netsh advfirewall firewall set rule group=”File and Printer Sharing” new enable=yes

Netsh advfirewall firewall set rule group=”Remote Volume Management” new enable=yes

Netsh advfirewall firewall set rule group=”Remote Administration” new enable=yes

I don’t know if I need to explain a whole lot here, the first two things are fairly self-explanatory. Windows 2008 has a lovely computername after installation so you really want to rename it. Fortunately the %computername% works, so you don’t need to know what it is before you rename it. In order to join the domain you will need to reboot after the rename, if you don’t you will receive an error:

Failed to access network address

That newly renamed computer doesn’t actually exist yet, seems funny I know, but just do the reboot. You will also need to reboot after joining the domain. Thankfully though, that is the end of the reboots.

You will need to install the CoreFileServer role in order to actually create and share folders on the server. I enjoy using the File Server Resource Manager, in order for that to work you will need to install the next two features, NetFx2 and FSRM, FSRM requires .NET so they need to be done in that order.

Finally in order for clients to access your file shares, and for you to be able to manage them you will need to enable the rule groups listed above.

SCCM and Windows 2008R2 Failover Clustering

So yesterday we were able to migrate our existing Windows Storage Server 2003 R2 file cluster to the Windows 2008 equivalent of the same. It has been a long time in the works as we had to wait on Dell to have a Windows Storage Server 2008 certified device. Our only hitch was forgetting to down the resource groups on the old server prior to bringing the lun’s over to the new server. Once we got that worked out, things went smoothly and once all the drives were moved, I was able to get all the shares set back up and we were back in business before lunch.

Sadly, once the move was complete our existing SCCM server started to complain.

SMS Site System Status Summarizer could not access storage object “\fsdistro_test” on site system “\fsdistro_test”. The operating system reported error 2147942467: The network name cannot be found.

While this sounds like a network issue and looks like a network issue we believe it has very little to do with networking. The server listed above can be pinged from the SCCM server and we can browse to that share. We think that what’s actually going on is that SCCM is unable to connect to any of the administrative shares on that server, which makes sense since those don’t exist on that server.

This all goes back to how Windows 2003 handled clustering, when you created a file server resource you gave it a name and IP. This worked in a fashion very similar to a CNAME in DNS. Whatever server in your cluster was currently hosting that resource would respond to the request. Which also meant that any underlying file shares would also be available from that file server resource. So let’s say you have a file server resource called FS, and your cluster server is Node1.

Under Windows 2003 Clustering the following resources would all be available when you browsed to either Node1 or FS1.

  • \node1admin$
  • \fsdistro_test
  • \node1files

Under Windows 2008 Failover clustering when you browse to Node1 you would see:

  • \node1admin$
  • \node1files

And when you browsed over to FS you would see:

  • \fsdistro_test

Windows 2008 Failover clustering does a much better job at handling those file server resources. They look and feel almost like separate file servers, but that isn’t enough for System Center. SCCM needs to be able to access the admin$ share on FS, but since that doesn’t exist the Distribution Point fails, and we are unable to push update software to our clients.

The best solution we could come up with, until hopefully someone at Microsoft can give us a better answer is to stand up a separate server. Our only issue with this is, it’s yet another server to manage, secure, and keep up to date.

Evolution and Exchange 2010

So you want Evolution to attach to Exchange natively, not unlike Outlook? The simple answer to your question is evolution-mapi. This lovely plugin allows you to connect over MAPI, to an Exchange server. I believe the supported servers start with Exchange 2003, and certainly go up to Exchange 2010 since that’s the version of Exchange we use on campus. The setup is fairly straightforward, but I have included screenshots at each step.

First things first, I’m running Ubuntu 10.10 on my laptop, the mapi plugin is not installed by default with Evolution, so you will need to get that first.

sudo apt-get install evolution-mapi

Personally, I tend to run an update and upgrade prior just to make sure I’m all caught up. Once it’s installed all you need to do is launch Evolution. If this is the first time you’ve started Evolution you will see the following screen.

20101222-evolution-1

Click forward.

20101222-evolution-2

If you already have an evolution config backed up, you can restore at this screen, otherwise click Forward.

20101222-evolution-3

Fill in your personal information, click Forward.

20101222-evolution-4

From the Server Type drop-down you will want to select Exchange MAPI, this will change the list of options available to fill out.

20101222-evolution-4a

The name of your exchange server, your username and the FQDN of your domain get filled in here. Click Authenticate to be prompted for your password, and a test connection to be made. Click Forward when you have everything filled out properly.

20101222-evolution-5

Some preferences regarding frequency of checking for mail, and what to do with mail handling, click Forward when you’re ready. You can change these after you get into the client.

20101222-evolution-6

A descriptive name for your account if you have multiple email accounts that you check with Evolution, click Forward.

20101222-evolution-7

You’re all done, once you click Apply, your preferences will be saved and once the mailbox sync’s you will have all of your mail available to you.

Windows Exit Codes and Error Codes

So historically we have rebooted the lab computers once a week. The reason for doing this originally was to clear our local profile data, and empty the temp and scratch folders. In order to do this Carson created a script, that did some checking on the computers prior to rebooting them. His script relied on WMI, which for us has not always been 100% reliable. Recently he realized that due to the number of computers we currently manage in the labs, and the time-offset he was using and our continued WMI problems, his script would never finish.

So today I decided to write one. Carson and I both figured it would be easier to just use shutdown.exe which is built into Windows for this. Our problem was that it doesn’t have a parameter to handle a list of computers. So we decided we could ask AD for a list of computers in a given OU and then pass those names to shutdown and let it do it’s magic. So that’s what I wrote, RebootComputers.vbs, a simple script that queries ActiveDirectory for computers and then using the shutdown command reboots them.

You might be asking yourself, what does this have to do with Exit Codes? Well, I wanted to have some nice error handling and the Run method of the Shell object provides a way to get the error stream. If you look at the following line of code:

intReturnCode = objShell.Run(strShutdownCMD,1,vbTrue)

The Run method has three parameters, the first parameter (strShutdownCMD) is the command we wish to run. The second parameter (1), is the window style the command is run in. Finally the third parameter (vbTrue), WaitOnReturn. This value is false by default, so setting it to true allows you to capture that code. Now, I didn’t know all the codes that would be returned from the command, but after some diligent Googling, I found something better than what I was originally looking for, a post on the Symantec connect site called Windows System Error Codes (exit codes) Description.  This appears to be quite the list of codes returned from Windows, and the really nice thing is that they appear to be either current, or Microsoft has never really changed them. Being the geek that I am I copied that list into a .csv and have placed it on my server every now and again I need access to that information.

I’m sure that this information is also located somewhere on the Microsoft site, but at least it’s documented someplace else.

Enjoy!