This is a very nice article with great step-by-step screen shots for migrating your master domain controller from an older 2008r2 box to a new 2012 server.
Thanks for this Naresh!
This is a very nice article with great step-by-step screen shots for migrating your master domain controller from an older 2008r2 box to a new 2012 server.
Thanks for this Naresh!
Like many of my step-by-step articles, it’s mostly for corporate level documentation purposes.
I won’t describe every screen, only those that include important decision points that affect my particular use case.
The above dialog is warning me that the firewall does not allow remote database connectivity. The below command line can be used to open up the SQL port. The cmd prompt must be opened with administrative permissions for this to work.
netsh advfirewall firewall add rule name = SQLPort dir = inprotocol = tcp action – allow localport = 1433 remoteip = localsubnet profile = DOMAIN
This is one of those major decision points. My purpose for this database is to house the newest IBM Endpoint Manager v9 database… nothing else. So I only require a few items to accomplish this simple task. The following items are needed for my particular use case:
In order to get IEM installed properly… an SA account is required. So I’ll configure the database authentication in “Mixed Mode” and specify a password for the SA account.
That’s all there is to it. Installations are almost always straight forward… but some corporations require complete step-by-step documentation, I hope this fits the bill.
Recently I’ve had a need to setup a Windows Server 2012 and wanted to document the process for future attempts.
I won’t document every single screen, only those that include decisions to be made and considerations to be considered.
I’ll be using this server as a root server for my new IBM Endpoint Manager v9, so a GUI would be very handy during install and general maintenance of that application.
At first I wanted to go with a regular install… not Custom… so I chose the top option.
Turns out this is for upgrading an existing OS installation. Since this is a brand new hard drive with no pre-existing OS, I should have chosen the “Custom” option. After hitting Close, I was sent back to the very beginning of the installation.
Once I arrived at the start up screen… it hung there for nearly 30 minutes. Turns out since I was setting this up on a VMWare ESXi v5.0 server it doesn’t support Windows Server 2012. So after some research I came across this article: http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2006859
I learned that I had to upgrade my VMWare ESXi server to a patch or v5.1… I opted for v5.1 and was able to get past this sticky part.
The server manager has been redesigned for the new GUI. Interesting choices…
I don’t want this application to come up every time I log in… so choosing the Manager –> Server Manager Properties, I was able to check the “Do not start Server Manager automatically at logon”.
Now I need to add my new server to my LDAP domain. Choosing “Local Server” from the left menu…
Click on “WORKGROUP” and the familiar computer properties dialog opens where you can change these settings.
One restart later I was able to log in and I’m done.
First let me send a shout out to my reference for this little tidbit of information: How to add a Uninstall option in Visual Studio Setup project without writing code GoGoToTo created a very nice article on this. I simply expanded it further to include getting your application “registered” so within BigFix it will show up as one of the registered apps.
First View your File System so we can add the special folder “System”
If your application is x86, then we’ll want to add the msiexec.exe from the c:\windows\SysWow64 folder.
Left click to highlight the msiexec.exe file and in the properties window, adjust as indicated in the following image:
Next we’ll need to add a shortcut to the “User’s Program Menu”. In my example, I’ve created a sub-folder named after my application. Click that folder and in the right window, right-click and create a shortcut.
Navigate to the System Folder and select the msiexe.exe file.
Before we modify the shortcut’s properties, we’ll need to copy the ProductCode from the Setup Application Properties.
Using that ProductCode, modify the shortcut’s properties as follows:
Now we get to register our application… Open the Registry View.
Under HKEY_LOCAL_MACHINE add the following sub-keys:
Microsoft\Windows\CurrentVersion\App Paths\[name of your exe]
Remember to specify the last key to “DeleteAtUninstall” = True
Add the following 2 string values with the values as shown.
That’s it. You now have an uninstall link that will be created upon installation of your app. You will also have your application properly “registered” so BigFix can properly detect it.
There are a few requirements for the BigFix console to run on your admin machine. I’ll discuss only one of them here.
Office Web Controls is a Microsoft Office Components requirement which allows us to display charts and graphs within the console. It can be found here.
The installation of this requirement is relatively easy… here are my screen shots of the process:
Once the components are installed, you will need to restart your console. But once you do, the console fills with beautiful shapes and bars.
If you have any questions about the process or would like to share your comments, please do so below.
If you’d like to see some of the screen shots I skipped in this article, visit http://www.flickr.com/photos/danielheth/sets/72157629877524866/
This afternoon I have finally completed my Metro style Windows 8 application. I’m still entering data into the database, but the app itself is completed. When the app is launched it pulls that data and displays it to the users.
Here are a few screen shots of my application:
My application is based on the House of Representatives. It allows you to quickly discover your congress person and provides you with contact information including Twitter, Facebook and other links they’ve shared on their websites.
The contest started here: https://buildwindowscontest.com/
If I win, I will be included in the first round of apps added to the new Microsoft App store… very exciting!
Wish me luck!
Lately I’ve decided to build a .NET v4 website…. thus I needed to add the IIS capabilities… after an exhaustive search, I found what I needed thanks to Brad over at StackOverflow:
cmd
and press ENTER cd C:\Windows\Microsoft.NET\Framework\v4.0.30319\
and press ENTER.
aspnet_regiis.exe -ir
and press ENTER again.
(You can repeat steps 7-on for every site you want to apply .NET 4 on as well).
Here I am again working on my House of Congress/Windows 8/Metro app contest when I’m wanting to show the individual districts each Congress person represents. Using a Bing search I found myself back at the Census website. This time looking at the congressional boundary files: http://www.census.gov/geo/www/cob/cd110.html
I don’t know anything about the e00 or shp files, so I’ll be working with the available ascii files.
Each state’s zip file contains two dat files. One dat contains the Long/Lat coordinates for various map-polygons which represent districts that are defined in the other dat file. What I wanted was a way to tie together the dat files with the Districts table I’d already defined at the start of my development.
I need this information to be in the most covenant format for my application, therefore, I’ll be importing the information for each state into my SQL database. I created a new table defined as follows:
Like many of my tables, I’ve setup an Id which auto increments and is the primary key for each row. Next we have the linked DistrictID, the PolygonID identified within the dat file as well as the Latitude and Longitude values.
First thing was to download each individual ascii file, unblock (windows 7 “feature”), extract and rename each file… only took 20min.
Then using my import program, I follow the following sudo code to get into my database:
foreach DAT file
read in dat and def files
extract state name //will use this later to get district reference
open databasefind stateforeach dat file line
parse Long/Lat and cur Polygon # if available
if cur Polygon # found, then
foreach def file line
if cur polygon # then
district id = lineif have district id and current polygon
insert new coordinates into database
In the end we have a database called Boundaries that looks something like this:
If you have any questions or would like to see the source code for my importer mention it in the comments section below.
So, you have an XML document, your programming in Visual Studio 11 for your new Windows 8 Metro app, and you need to access the data within? I’m here to help…
DE serializing your XML document is very simple. First you’ll need to define a CLASS object the way your XML document is…
Here’s my example XML document:
<?xml version="1.0" encoding="UTF-8" ?><Congress><Regions><Region><Title>Northeast</Title><States><State><Title>Connecticut</Title><Districts><District><Title>District 1</Title><SubTitle>Larson, John B.</SubTitle></District></Districts></State></States></Region></Regions></Congress>This is an example of an XML document I’m currently using in my contest application. As you can see there can be multiple Regions, States or Districts. Each organized in sub objects… I am showing you only one of each since it would get pretty long otherwise…
Now, we’ll need a few classes organized just like this XML document:
[XmlRoot("Congress")]
public class clsCongress{[XmlArray("Regions")]
[XmlArrayItem("Region", typeof(clsRegion))]public clsRegion[] Region { get; set; }}[XmlRoot("Regions")]
public class clsRegion{[XmlElement("Title")]
public string Title { get; set; }[XmlArray("States")]
[XmlArrayItem("State", typeof(clsState))]public clsState[] State { get; set; }}[XmlRoot("States")]
public class clsState{[XmlElement("Title")]
public string Title { get; set; }[XmlArray("Districts")]
[XmlArrayItem("District", typeof(clsDistrict))]public clsDistrict[] District { get; set; }}[XmlRoot("Districts")]
public class clsDistrict{[XmlElement("Title")]
public string Title { get; set; }[XmlElement("SubTitle")]
public string SubTitle { get; set; }}As you can see form my class objects, you’ll need to specify the XmlRoot for each class as well as each XmlElement so everything maps correctly. In my example, the elements match, but they don’t have to so long as they’re mapped with the XmlElement tag.
Now, I know you can find this code anywhere on the net… but what they don’t go into detail explaining is the array variables I have shown here.
In my example, I have Congress which is made up of multiple Regions, which is made up of multiple States, and Districts. In my example here, I demonstrate how to get multiple sub-objects pulled in easily and quickly.
Here is the code I use to load up the XML text, oh and I’m downloading this content using the new fancy async features from VS11 and Windows 8:
internal async Task PullRegionsAsync(Uri baseUri)
{string baseUrl = "https://danielheth.com/myexample.xml";//download the data xml
//http://msdn.microsoft.com/en-us/library/windows/apps/system.net.http.httpclienthandler.maxrequestcontentbuffersize(v=VS.110).aspx
//says there is a 65k limit on the size of what this function will download...
var client = new HttpClient();
var response = await client.GetAsync(baseUrl + "Data.xml");
//------------------------------------------------
//convert xml into an easily digestable object
clsCongress congress = null;
XmlSerializer des = new XmlSerializer(typeof(clsCongress));congress = (clsCongress)des.Deserialize(response.Content.ContentReadStream);//------------------------------------------------
foreach (clsRegion r in congress.Region){string RegionTitle = r.Title;
foreach (clsState s in r.State){string StateTitle = s.Title;
foreach (clsDistrict d in s.District){string DistrictTitle = d.Title;
}}}}There you have it… deserializing your XML document into an easily digestible object within C#.
If you have any questions or comments please leave them below…
I’ve entered myself into a new Windows 8 application contest. I’ve come up with a wonderful idea which includes utilizing Bing Maps. After an awful lot of research I’ve come up with something that works… Perfectly!!!
Since this is a Windows 8 application, I’m writing this in Visual Studio 11 express which utilizes an awesome multi-threading feature called async/await. So I’ll be taking advantage of that here.
First thing I needed to do was acquire my Bing Map Developers key… Acquire yours free from: https://www.bingmapsportal.com
Let’s start coding!!!
I followed the following MSDN article to setup my app for access to the Bing SOAP API’s. http://msdn.microsoft.com/en-us/library/cc966738.aspx
Then added the following to the top of my code:
using HouseofRepresentatives.GeocodeService;
using HouseofRepresentatives.SearchService;
using HouseofRepresentatives.ImageryService;
using HouseofRepresentatives.RouteService;
private ImageSource _map = null;public String Latitude = "";
public String Longitude = "";
public ImageSource Map
{get
{if (this._map == null) UpdateMap();return this._map;}set
{if (this._map != value){this._map = value;this.OnPropertyChanged("Map");}}}I had two situations for my locations… in one case I knew the exact Lat/Lon, and in others I only knew an address… in my case a state name. First I needed to turn that address into a Lat/Lon for passing onto the get map function.
private async Task<string> getLocationPoint(string address){if (address != null && address != ""){GeocodeRequest request = new GeocodeRequest();
request.ExecutionOptions = new HouseofRepresentatives.GeocodeService.ExecutionOptions();
request.ExecutionOptions.SuppressFaults = true;
GeocodeServiceClient geocodeClient =new GeocodeServiceClient(GeocodeServiceClient.EndpointConfiguration.BasicHttpBinding_IGeocodeService);
HouseofRepresentatives.GeocodeService.Credentials t =new HouseofRepresentatives.GeocodeService.Credentials();
t.Token = "[[put your Bing Maps Key Here]]";
request.Query = address;request.Credentials = t;GeocodeResponse response = await geocodeClient.GeocodeAsync(request);if (response.Results.Count() > 0)
{return response.Results[0].Locations[0].Latitude.ToString() +
"," + response.Results[0].Locations[0].Longitude.ToString();
}}return "";
}Next I needed to actually get the Image from Bing. Now let’s do that using the following function:
private async Task<string> GetImagery(string locationString){ //http://msdn.microsoft.com/en-us/library/dd221354.aspx
string key = "[[insert your Bing Maps Key here]]";MapUriRequest mapUriRequest = new MapUriRequest();
// Set credentials using a valid Bing Maps key
mapUriRequest.Credentials =new HouseofRepresentatives.ImageryService.Credentials();
mapUriRequest.Credentials.ApplicationId = key;// Set the location of the requested image
mapUriRequest.Center = new HouseofRepresentatives.ImageryService.Location();
string[] digits = locationString.Split(',');
mapUriRequest.Center.Latitude = double.Parse(digits[0].Trim());
mapUriRequest.Center.Longitude = double.Parse(digits[1].Trim());
// Set the map style and zoom level
MapUriOptions mapUriOptions = new MapUriOptions();
mapUriOptions.Style = MapStyle.AerialWithLabels;mapUriOptions.ZoomLevel = 17;// Set the size of the requested image in pixels
mapUriOptions.ImageSize = new HouseofRepresentatives.ImageryService.SizeOfint();
mapUriOptions.ImageSize.Height = 240;mapUriOptions.ImageSize.Width = 480;mapUriRequest.Options = mapUriOptions;//Make the request and return the URI
ImageryServiceClient imageryService =new ImageryServiceClient(ImageryServiceClient.EndpointConfiguration.BasicHttpBinding_IImageryService);
try
{MapUriResponse mapUriResponse = await imageryService.GetMapUriAsync(mapUriRequest);if (mapUriResponse.Uri != null){return mapUriResponse.Uri;
}else { return ""; }}catch (Exception ex)
{return "";
}}Ok… now that I have my image Uri, it’s time to use it to load a picture:
public async Task<bool> UpdateMap(string address = ""){if (address != "")
{//then user is specifying an address instead of a specific long/lat.
//We need to get that info in order to proceed...
string point = await getLocationPoint(address);
if (point != "")
{string[] p = point.Split(',');
Latitude = p[0];Longitude = p[1];}}if (Longitude != "" && Latitude != "")
{string uripath = await GetImagery(Longitude + "," + Latitude);if (uripath != "")
{this.Map = new BitmapImage(new Uri(uripath));return true;}else
{this.Map = new BitmapImage(new Uri(imageBaseUri, "Data/blank.png"));return false;}}else
{this.Map = new BitmapImage(new Uri(imageBaseUri, "Data/blank.png"));return false;}}If you’ve stuck with me this far… you are a programmer… LOL.
In each of my functions I utilized the new async/await features. This means when I call either of the two functions as below, it will load the image once the OS has downloaded and cached it. The image will automatically appear when ready…
//calling the get-map function with an address
UpdateMap("Arkansas");
//or
UpdateMap("1 Microsoft Way, Redmond, Washington");
//or i can configure my lat/lon then update
Latitude = "39.450000762939453";
Longitude = "-98.907997131347656";
UpdateMap();If you guys have any questions or comments, be sure to post them below!