JRN*_*JRN 1 powershell active-directory
我正在尝试使用用户电子邮件地址的文本文件来查找相应用户的samaccountname名称.
Clear-Host
Import-Module ActiveDirectory
$File = "C:\T2\Users.csv"
$Users = Get-Content $File
ForEach ($User in $Users)
{ Get-ADUser -Filter * | Where { $_.EmailAddress -eq $User } | Select SamAccountName -ExpandProperty SamAccountName }
Run Code Online (Sandbox Code Playgroud)
我想知道我做错了什么
如果您的文件实际上是.csv(以逗号分隔的值),那么您正在使用的是获取原始字符串内容Get-Content.有一个cmdlet,Import-Csv它将获取您的CSV并将其转换为powershell对象,以便您可以迭代它并访问标题作为您尝试在代码中执行的属性:
$users = Import-Csv -Path '/path/to/file.csv'
Run Code Online (Sandbox Code Playgroud)
然后在循环中,您可以通过不查询每个用户的整个AD树来清理和加速代码:
foreach ($user in $users)
{
Get-ADUser -Filter "EmailAddress -eq '$($user.EmailAddress)'" |
Select-Object -ExpandProperty SamAccountName
}
Run Code Online (Sandbox Code Playgroud)
超简化版:
#requires -Module ActiveDirectory
foreach ($user in Import-Csv -Path '/path/to/file.csv')
{
(Get-ADUser -Filter "EmailAddress -eq '$($user.EmailAddress)'").SamAccountName
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |