【问题标题】:Powershell script - get Distinguised Name from AD based on either username OR e-mail addressPowershell 脚本 - 根据用户名或电子邮件地址从 AD 获取专有名称
【发布时间】:2020-06-04 16:15:21
【问题描述】:

我在工作中编写了一个 Powershell 脚本,根据 CSV 中的给定用户名批量禁用用户。

这周我被要求做一份批量工作,但只得到了电子邮件地址,所以我修改了脚本和 CSV。

我现在想做的是保留带有标题“用户名”和“电子邮件”的 CSV,然后让脚本根据给定的值找到可分辨名称。

例如:

这是我目前拥有的脚本,其中包含两个值(脚本稍作修改以删除敏感数据)。该脚本必须在两个不同的服务器上进行搜索,因为我们的用户跨两个域:

$Imported_csv | ForEach-Object {

$UserDN = $null
$TargetOU = $Null
$Server= $null

# Retrieve Username Address of user.
$User = $_.UserName

# Retrieve E-mail Address of User
$Email = $_.Email

# Retrieve DN of user based on e-mail address
$UserDNxxx  = (Get-ADUser -Server xxx -Filter {mail -eq $Email}).distinguishedName 
$UserDNxxx = (Get-ADUser -Server xxx -Filter {mail -eq $Email}).distinguishedName

# Retrieve DN of user based on Username address
$UserDNxxx  = (Get-ADUser -Server xxx -Identity $_.UserName).distinguishedName
$UserDNxxx  = (Get-ADUser -Server xxx -Identity $_.UserName).distinguishedName

任何提示将不胜感激。

【问题讨论】:

  • 你是如何定义$Importedcsv的?
  • 听起来像是 If 的工作。如果用户名有值,请使用它。否则,请尝试电子邮件地址。
  • 所以,你知道你需要做什么,你已经把一个脚本放在一起——问题是什么? :)
  • 道歉 - 我应该更清楚。 $Importedcsv 定义如下:$import = $DataSource+"\Disable Users.csv" $Imported_csv = Import-Csv -Path $import 我确实相信 If 语句就是答案。但我的 Powershell 经验非常有限,我不完全确定/自信如何正确构建它。

标签: powershell active-directory


【解决方案1】:

听起来你只需要一个If 块:

If ($_.UserName) {
    # Username has a value
    $UserDNxxx  = (Get-ADUser -Server xxx -Identity $_.UserName).distinguishedName
} elseif ($_.Email) {
    # Email has a value
    $UserDNxxx = (Get-ADUser -Server xxx -Filter {mail -eq $_.Email}).distinguishedName
} else {
    # It doesn't have either, so throw an error if you want
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-25
    • 2022-01-15
    • 1970-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 2012-04-28
    相关资源
    最近更新 更多