Powershell 将电子邮件地址转换为SamAccountName

Powershell 将电子邮件地址转换为SamAccountName,powershell,active-directory,Powershell,Active Directory,我有这样一个csv: Group;User TestGroup1;test1@domain.com TestGroup2;test2@domain.com 现在我想将组添加到用户。我不能通过邮件地址添加它们,所以我必须获得SamAccountName。这就是我想到的: Import-module ActiveDirectory foreach ($item in (Import-CSV users.csv -delimiter ";")) { $userMail = $item.("

我有这样一个csv:

Group;User
TestGroup1;test1@domain.com
TestGroup2;test2@domain.com
现在我想将组添加到用户。我不能通过邮件地址添加它们,所以我必须获得SamAccountName。这就是我想到的:

Import-module ActiveDirectory

foreach ($item in (Import-CSV users.csv -delimiter ";"))
{
    $userMail = $item.("User")
    $userSAM = Get-ADUser -Filter {mail -eq $userMail} -Properties SamAccountName
    Write-Host $item.("Group") $userSAM
}

但是变量UserSAM保持emtpy。

这应该只返回可用于将用户添加到组中的用户名

Import-Module ActiveDirectory
foreach ($item in (Import-CSV users.csv -Delimiter ";")) {
      $userMail = $item.User
      $userSAM = Get-ADUser -Filter {mail -eq $userMail} | Select-Object -ExpandProperty SamAccountName
      Write-Host $item.Group $UserSAM
}
如果返回所需内容,只需将此行添加到循环末尾:

    Add-ADGroupMember -Identity $item.Group -Members $UserSAM

您确定$userMail不是空的吗?请尝试$item.User而不是$item.User。@JeffZeitlin他们的计算结果是相同的,但这是我见过的最糟糕的语法,我想使用Get-ADUser-Filter$SID-Properties*并确保您访问的是正确的成员,即。,mail可能是错误的属性名称。$item.User仅在意外情况下工作;它在语义上不正确。