电子邮件地址字段不正确,我不确定如何更正
The email address field is incorrect and I'm not sure how to correct it
下面的一段代码确定了本地计算机的OU,并且应该给出OU的IT管理员的电子邮件地址。我想在另一段代码中使用电子邮件地址,但返回的输出将电子邮件字段显示为 OU 字段。我添加了最后一行以查看我得到的输出。我将如何更改代码以更正此问题?
# This section finds the OU of the local computer
$rootDse = New-Object System.DirectoryServices.DirectoryEntry("LDAP://RootDSE")
$Domain = $rootDse.DefaultNamingContext
$root = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$Domain")
$ComputerName = $env:COMPUTERNAME
$searcher = New-Object System.DirectoryServices.DirectorySearcher($root)
$searcher.Filter = "(&(objectClass=computer)(name=$ComputerName))"
[System.DirectoryServices.SearchResult]$result = $searcher.FindOne()
$dn = $result.Properties["distinguishedName"]
$ouResult = $dn.Substring($ComputerName.Length + 4)
$email = $ouResult
Switch ($Email)
{
'OU=a,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test1@domain.com' }
'OU=a,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test1@domain.com' }
'OU=b,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test2@domain.com' }
'OU=c,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test3@domain.com' }
'OU=d,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test4@domain.com' }
'OU=e,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test5@domain.com' }
'OU=f,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test6@domain.com' }
Default { 'Unable to determine $Email' }
}
New-Object PSObject -Property @{"Name" = $ComputerName; "OU" = $ouResult; "Email" = $email}
不确定我是否在这里遗漏了其他内容,但您并没有分配您的电子邮件地址的值,只是将其作为输出发送。你应该这样做:
# Remove this line > $email = $ouResult
Switch ($ouResult)
{
'OU=a,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { $email = 'test.test1@domain.com' }
'OU=a,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { $email = 'test.test1@domain.com' }
# ... trucated
'OU=f,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { $email = 'test.test6@domain.com' }
Default { '$ouResult not mapped to email address' }
}
此外,由于大部分查询是相同的,只是第一个不同的 OU,您可以使用 -wildcard
开关 switch
Switch -Wildcard ($ouResult)
{
'OU=a,*' { $email = 'test.test1@domain.com' }
'OU=a,*' { $email = 'test.test1@domain.com' }
# ... trucated
'OU=f,*' { $email = 'test.test6@domain.com' }
Default { '$ouResult not mapped to email address' }
}
下面的一段代码确定了本地计算机的OU,并且应该给出OU的IT管理员的电子邮件地址。我想在另一段代码中使用电子邮件地址,但返回的输出将电子邮件字段显示为 OU 字段。我添加了最后一行以查看我得到的输出。我将如何更改代码以更正此问题?
# This section finds the OU of the local computer
$rootDse = New-Object System.DirectoryServices.DirectoryEntry("LDAP://RootDSE")
$Domain = $rootDse.DefaultNamingContext
$root = New-Object System.DirectoryServices.DirectoryEntry("LDAP://$Domain")
$ComputerName = $env:COMPUTERNAME
$searcher = New-Object System.DirectoryServices.DirectorySearcher($root)
$searcher.Filter = "(&(objectClass=computer)(name=$ComputerName))"
[System.DirectoryServices.SearchResult]$result = $searcher.FindOne()
$dn = $result.Properties["distinguishedName"]
$ouResult = $dn.Substring($ComputerName.Length + 4)
$email = $ouResult
Switch ($Email)
{
'OU=a,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test1@domain.com' }
'OU=a,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test1@domain.com' }
'OU=b,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test2@domain.com' }
'OU=c,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test3@domain.com' }
'OU=d,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test4@domain.com' }
'OU=e,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test5@domain.com' }
'OU=f,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { 'test.test6@domain.com' }
Default { 'Unable to determine $Email' }
}
New-Object PSObject -Property @{"Name" = $ComputerName; "OU" = $ouResult; "Email" = $email}
不确定我是否在这里遗漏了其他内容,但您并没有分配您的电子邮件地址的值,只是将其作为输出发送。你应该这样做:
# Remove this line > $email = $ouResult
Switch ($ouResult)
{
'OU=a,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { $email = 'test.test1@domain.com' }
'OU=a,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { $email = 'test.test1@domain.com' }
# ... trucated
'OU=f,OU=Euro,OU=NB,OU=xxComputers,DC=xxx,DC=com' { $email = 'test.test6@domain.com' }
Default { '$ouResult not mapped to email address' }
}
此外,由于大部分查询是相同的,只是第一个不同的 OU,您可以使用 -wildcard
开关 switch
Switch -Wildcard ($ouResult)
{
'OU=a,*' { $email = 'test.test1@domain.com' }
'OU=a,*' { $email = 'test.test1@domain.com' }
# ... trucated
'OU=f,*' { $email = 'test.test6@domain.com' }
Default { '$ouResult not mapped to email address' }
}