Posts

Showing posts from June, 2018

Configuring Azure VMs using Desired State Configuration

Image
Lately I've been working on a project to automate the provisioning of virtual machines on Azure using Azure Resource Manager. The need to apply configuration on the OS level came up and the proffered way was Desired State Configuration. On this article, we are going to publish a configuration and configure a virtual machine to apply it.

First we are going to log in and select the subscription that we are going to use:

PS C:\>Login-AzureRmAccount
Account          : c******s.p******ou@*******
SubscriptionName : Pay-As-You-Go
SubscriptionId   : e******a-8**c-4**3-9**7-b**********9
TenantId         : 5******f-d**2-4**4-a**e-7**********7
Environment      : AzureCloud

PS C:\>Get-AzureRmSubscription |
           Out-GridView -PassThru -Title "Select the subscription to use" |
               Select-AzureRmSubscription

Name             : [c*****s.p******ou@*******, e*******a-8**c-4**3-9**7-b**********9]
Account          : c******s.p********u@********
SubscriptionName : Pay-…

Monitoring Active Directory Health using OMS

Image
Following the last OMS article about the update management solution, I would like to show you two more, this time about Active Directory.
The Active Directory Health Check solution provides information on many aspects of your Active Directory environment such as Security, Compliance, Business Continuity and Performance.
Each group performs a number of checks against the logs, to find possible issues.


Good news, apart from the backup issue, my AD is looking great!!!
The second solution I'm using for Active Directory is AD Replication Status. It examines the domain controller logs and provides useful insights on the health of the replication of your Active Directory environment.

I've left the DC4 domain controller on my lab disconnected from the network on purpose in order to create replication issues. Replication between DC3 and DC4 is broken, since the servers hadn't communicated for a while.

Those two solutions can save you from a lot of trouble when it comes to monitori…

Update Management using OMS

Image
Writing your own queries for OMS is great, it gives you the flexibility to get the data in the exact form you want it and full control over the data to return, not to mention the ability to create an alert using the very same query. 
There are however solutions that can be added to your workspace that already have logic and display reports in form of charts or lists. Adding a solution is a matter of seconds, although may of them require and automation account (that's pretty straight forward, don't worry!). You just have to browse the solution gallery from the OMS portal and hit the add button.
The first solution I've added to my workspace was Update Management. This solution provides statistics about the update status of your Windows and Linux computers.
The first two charts display information about the Windows and Linux computers that have been assessed:

The information here is scoped to the computer level as opposed to the next two that show statistics about the update…

Generating Alerts On OMS

Image
On the previous articles about Microsoft OMS, we've configured event and log collection from various systems and we've queried the workspace for information. We have the information, wouldn't it be great if we could also act on it?

The Operations Management Suite has a feature named "Alerts" that provides this functionality. Creating alerts is a straight forward and only takes a few minutes. To illustrate the process, we are going to configure an alert for a Windows Server Failover Cluster that hosts the File Server role.

When a cluster resource is moving to another node of the cluster, an event with id 1641 is generated under the source "FaileoverClustering" of the log "Microsoft-Windows-FailoverClustering/Operational".

To create the alert, we are going to need a query that returns the above events:


Let's create the alert. From the main OMS blade, select "Alerts" and then "Create New Rule":


This will bring you to the n…

Introducing the CPolydorou.ActiveDirectoryLDAP PowerShell module

I've been working with Active Directory for a very long time, even back when there was no PowerShell! Over those years, I've developed some functions to query the directory with the help of .NET and surprisingly those functions are still useful!

I've decided to try to convert them to PowerShell so that the can be an addition to my Active Directory module, when the Remote Server Administration Tools are not available. For that reason, I've created and published a new module named CPolydorou.ActiveDirectoryLDAP on the PowerShell gallery.
At this time, the module contains only two functions, Get-ActiveDirectoryDomainLDAP and Get-ActiveDirectoryForestLDAP. Those two return information about Active Directory domains and forests respectively.
Let's take a look on some examples.
Executing the "Get-ActiveDirectoryDomainLDAP" without parameters, will return information about the domain the local computer is joined to.

PS C:\> Get-ActiveDirectoryDomainLDAP

Name…

CPolydorou.Exchange v2.8.1

Image
Hi, its Chris and I have updates on my Microsoft Exchange module to share!

A new function is added to version 2.8.1, named "Copy-RecipientAddress". This function copies proxy addresses from one object to another. This is a very common scenario when synchronizing recipients between directories since ambiguous objects may be created.

Usually, a mail contact is created by the synchronization service that has the smtp address of an existing recipient. Removing the contact will resolve the issue - provided that the object coming from the remote organization will be joined on the next synchronization operation, but if the contact has been available on the GAL for a while, users may have sent messages to this contact. If this is the case, outlook keeps a copy of the Legacy-Exchange-DN address of the contact in it's cache and when the user will try to send a message to the contact you've removed, the message will not be delivered.

Enter Copy-RecipientAddress! If you copy the…