【发布时间】:2020-05-15 04:59:00
【问题描述】:
我有一个包含 2000 个电子邮件地址的 CSV 文件。我正在使用 PowerShell 检查用户是否在 AD 中处于活动状态。另一位开发人员为我编写了一个 PowerShell 脚本来执行此操作,但他只使用主域来匹配电子邮件格式,他没有添加它可能具有的子域。我们的一些电子邮件地址在 @ 符号后有一个由 3 部分组成的电子邮件地址。
比如他的代码:
foreach ($user in $users) {
Write-Host $user.email
if ($user.email -match "\@mycompany\.com$") {
$status = "NOT FOUND"
# loop through possible AD domains until there is a hit
foreach ($domain in "na","au","eu","as") {
if ($status -eq "NOT FOUND") {
Write-Host " $($domain)" -NoNewline
$status = Get-UserFromEmail -EMail $user.email -ADDomain $domain
Write-Host $status
}
else {
break
}
}
Write-Host
Add-Content -Path $outcsv -Value "$($user.email),$($user.type),`"$($status)`""
}
else {
Add-Content -Path $outcsv -Value "$($user.email),$($user.type),NOT MYCOMPANY"
}
我需要做的是获取匹配以检查它是由两部分还是三部分组成的电子邮件地址。 @consultant.mycompany.com 或 @mycompany.com。
对于这个 PowerShell 新手的任何见解将不胜感激。
【问题讨论】:
-
这真的需要在 PoSh v2 上工作吗?
-
我不知道,我是 powershell 的新手。该代码适用于单域电子邮件,但我不知道是否可以添加某种“或”语句来添加子域。
-
如果您不需要 PoSh v2,请删除该标签。许多人会忽略您的问题,因为我们大多数人不再拥有任何带有 psv2 的系统 ...
-
谢谢,已删除。
-
不客气!很高兴能帮上一点忙。 [grin] 我发布了一个答案,似乎涵盖了你在做什么的基本想法。看看这个想法是否符合您的需求......
标签: powershell