First of all will get Domain name and pass Distinguished name to function DNStoDN.
1: function PassPath 2: { 3: 4: $DC = Convert-DNStoDN (gwmi WIN32_ComputerSystem).Domain 5: 6: return "OU=$OU, $DC"
7: } 1: # This function to get 2: function Convert-DNStoDN ([string]$DNSName)
3: { 4: # Create an array of each item in the string separated by "."
5: $DNSArray = $DNSName.Split(".")
6: # Let's go through our new array and do something with each item
7: for ($x = 0; $x -lt $DNSArray.Length ; $x++) 8: { 9: #I don't want a comma after my last item, so check to see if I am on my last one and set
10: # $Separator equal to nothing. 11: # Remember that we need to go to Length-1 because arrays are "0 based indexes"
12: if ($x -eq ($DNSArray.Length - 1)){$Separator = ""}else{$Separator =","}
13: [string]$DN += "DC=" + $DNSArray[$x] + $Separator
14: } 15: return $DN
16: }Now I’ll check OU is exists, If it does not will create new OU. You can change the name of OU given in the beginning.
1: 2: function CheckOU 3: {4: [string] $path = PassPath #Calling function PassPath
5: [string] $fPassPath = Convert-DNStoDN (gwmi WIN32_ComputerSystem).Domain
6: try {
7: if(([adsi]::Exists("LDAP://$fPassPath")))
8: {9: #return $true #Throw("Supplies Path does not exists.")
10: if(([adsi]::Exists("LDAP://$path")))
11: {12: return $true
13: } 14: } 15: }16: catch {
17: Write-Host "Please check Domain of your machine" -ForegroundColor red
18: exit 19: } 20: } 21: 22: if((CheckOU))
23: {24: Write-Host "OU exits"
25: }26: else
27: {28: try {
29: [string] $fPassPath = Convert-DNStoDN (gwmi WIN32_ComputerSystem).Domain
30: Write-Host $fPassPath31: if(([adsi]::Exists("LDAP://$fPassPath")))
32: {33: $Connect = [adsi]"LDAP://$fPassPath"
34: 35: $CreateOU = $Connect.Create("OrganizationalUnit","OU= $OU")
36: $CreateOU.SetInfo()37: if((CheckOU))
38: {39: Write-Host "`nOU" $OU " has been created!" -ForegroundColor green
40: 41: 42: 43: } 44: } 45: }46: catch {
47: Write-Host "Can't create OU." -ForegroundColor red
48: exit 49: } 50: } 1: Import-Module ActiveDirectory 2: 3: $OU = "myOU" # Organizational Unit Name
4: 5: 6: # This function to get 7: function Convert-DNStoDN ([string]$DNSName)
8: { 9: # Create an array of each item in the string separated by "."
10: $DNSArray = $DNSName.Split(".")
11: # Let's go through our new array and do something with each item
12: for ($x = 0; $x -lt $DNSArray.Length ; $x++) 13: { 14: #I don't want a comma after my last item, so check to see if I am on my last one and set
15: # $Separator equal to nothing. 16: # Remember that we need to go to Length-1 because arrays are "0 based indexes"
17: if ($x -eq ($DNSArray.Length - 1)){$Separator = ""}else{$Separator =","}
18: [string]$DN += "DC=" + $DNSArray[$x] + $Separator
19: } 20: return $DN
21: } 22: 23: 24: function CheckOU 25: {26: [string] $path = PassPath #Calling function PassPath
27: [string] $fPassPath = Convert-DNStoDN (gwmi WIN32_ComputerSystem).Domain
28: try {
29: if(([adsi]::Exists("LDAP://$fPassPath")))
30: {31: #return $true #Throw("Supplies Path does not exists.")
32: if(([adsi]::Exists("LDAP://$path")))
33: {34: return $true
35: } 36: } 37: }38: catch {
39: Write-Host "Please check Domain of your machine" -ForegroundColor red
40: exit 41: } 42: } 43: 44: if((CheckOU))
45: {46: Write-Host "OU exits"
47: }48: else
49: {50: try {
51: [string] $fPassPath = Convert-DNStoDN (gwmi WIN32_ComputerSystem).Domain
52: Write-Host $fPassPath53: if(([adsi]::Exists("LDAP://$fPassPath")))
54: {55: $Connect = [adsi]"LDAP://$fPassPath"
56: 57: $CreateOU = $Connect.Create("OrganizationalUnit","OU= $OU")
58: $CreateOU.SetInfo()59: if((CheckOU))
60: {61: Write-Host "`nOU" $OU " has been created!" -ForegroundColor green
62: 63: 64: 65: } 66: } 67: }68: catch {
69: Write-Host "Can't create OU." -ForegroundColor red
70: exit 71: } 72: }Thanks.