forked from timmcmic/DLConversionV2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Get-CanonicalName.ps1
99 lines (70 loc) · 3.03 KB
/
Get-CanonicalName.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<#
.SYNOPSIS
This function returns the canonicalName associated with a distinguished name.
.DESCRIPTION
This function returns the canonicalName associated with a distinguished name.
.PARAMETER GlobalCatalog
The global catalog to make the query against.
.PARAMETER DN
The DN of the object to pass to normalize.
.OUTPUTS
The canonical name of a given object.
.EXAMPLE
get-canonicalName -globalCatalog GC -DN DN
#>
Function get-canonicalName
{
[cmdletbinding()]
Param
(
[Parameter(Mandatory = $true)]
[string]$globalCatalogServer,
[Parameter(Mandatory = $true)]
[string]$DN,
[Parameter(Mandatory = $true)]
$adCredential
)
#Declare function variables.
$functionTest=$NULL #Holds the return information for the group query.
$functionObject=$NULL #This is used to hold the object that will be returned.
$functionDomain=$NULL
#Start function processing.
Out-LogFile -string "********************************************************************************"
Out-LogFile -string "BEGIN GET-CanoicalName"
Out-LogFile -string "********************************************************************************"
#Log the parameters and variables for the function.
Out-LogFile -string ("GlobalCatalogServer = "+$globalCatalogServer)
OUt-LogFile -string ("DN Set = "+$DN)
out-logfile -string ("Credential user name = "+$adCredential.UserName)
#Get the specific user using ad providers.
try
{
Out-LogFile -string "Gathering the AD object based on distinguished name."
$functionTest = get-adobject -filter {distinguishedname -eq $dn} -properties canonicalName -errorAction STOP
}
catch
{
out-logfile -string $_ -isError:$TRUE
}
try
{
#Now that we have the canonicalName - record it and build just the domain name portion of it for reference.
#Split the string at / -> results in the domain name being in position 0.
$functionDomain=$functiontest.canonicalName.split("/")
$functionObject = New-Object PSObject -Property @{
canonicalName = $functionTest.canonicalName
canonicalDomainName = $functionDomain[0]
distinguishedName = $functiontest.distinguishedName
}
}
catch
{
Out-LogFile -string $_ -isError:$true
}
Out-LogFile -string "END GET-CanonicalName"
Out-LogFile -string "********************************************************************************"
#This function is designed to open local and remote powershell sessions.
#If the session requires import - for example exchange - return the session for later work.
#If not no return is required.
return $functionObject
}