Every once in a while I need to get the domain name from a computer and use it in a PowerShell script. But when you do something like “Get-WMIObject –Class Win32_ComputerSystem | Select-Object –ExpandProperty Domain” you’ll get an output such as “jeffwouters.lan”.
But most of the times, a script will require an input like “DC=jeffwouters,DC=lan” Image may be NSFW.
Clik here to view.
Now let’s say that we have a given variable:
$DomainName = “jeffwouters.lan”
By using the “split” method, you can split a string into separate values:
$DomainSplit = $DomainName.split(“.”)
This will give you a value “jeffwouters” and a value “lan” instead of the given value “jeffwouters.lan”.
Next, we would want to put something in front of the values, namely the “DC=” characters.
This can be done easily, just by creating a new variable with something like “DC=$(DomainSplit)”… but this will provide you with a nasty.
Why? Because there are multiple values in the variable (it has become an array Image may be NSFW.
Clik here to view.). The correct way to select the separate values is to add [0] or [1] after the variable where the number specifies the character.
Ow, and not to forget… between both values you will need to add a “,” since that’s the correct format for a distinguished name Image may be NSFW.
Clik here to view.
So, to get the format you desire, the following command will do the trick:
$DomainName = “DC=$($DomainSplit[0]),DC=$($DomainSplit[1])”
This way, you’ve just converted “jeffwouters.lan” to “DC=jeffwouters,DC=lan” Image may be NSFW.
Clik here to view.
Now, there is also a possibility that you have a child domain… something like “test.jeffwouters.lan”. You can convert this the same way as before, simply by adding another “DC=$($DomainSplit[2])”.
And to create a function out of this (since I like re-usable code…):
Function Convert-ToDistinguishedName()
{
<#
.Synopsis
Function to convert a domain name into a distinguished name format..Description
Function to convert a domain name into a distinguished name format.
No default is used..Example
Convert-ToDistinguishedName -DomainName “jeffwouters.lan”.Example
Convert-ToDistinguishedName -Name “jeffwouters.lan”.Notes
Author: Jeff Wouters | Methos IT
#>
param ( [Parameter(Position=0, Mandatory=$True)][ValidateNotNullOrEmpty()][Alias('Name')][String]$DomainName )
$DomainSplit = $DomainName.split(“.”)
if ($DomainSplit[2] -ne $null) {
$DomainName = “DC=$($DomainSplit[0]),DC=$($DomainSplit[1]),DC=$($DomainSplit[2])”
$DomainName
} else {
$DomainName = “DC=$($DomainSplit[0]),DC=$($DomainSplit[1])”
$DomainName
}
}
Now, this is a part of a larger deployment script I’m working on which I will be posting parts of during the coming weeks.
After the script is finished, I’ll post it in the Microsoft Script Library and on this blog Image may be NSFW.
Clik here to view.