使用PowerShell通过AD获取用户名

时间:2014-09-23 15:20:34

标签: powershell active-directory

我一直在反对这个问题,并且无法弄清楚为什么这不起作用。

Import-Module ActiveDirectory
$Users = Get-ADGroupMember -identity “Accounting” -recursive | select name | export-csv -path "D:\group.csv"
$csv = Import-Csv "D:\group.csv"
foreach ($user in $csv) {Get-ADUser -filter "'Name -eq  ""$user""'"}

2 个答案:

答案 0 :(得分:1)

我认为你有几个问题。

  1. 您导出数据只是为了再次导入它。你甚至需要第二份数据吗?
  2. Import-Csv将返回一个对象数组,而不仅仅是名称。解决这个问题的方法不止一种,但这应该是你想要的更多

  3. Import-Module ActiveDirectory
    $Users = Get-ADGroupMember -identity “Accounting” -recursive | select name
    foreach ($user in $Users) {Get-ADUser -filter {Name -eq $user.Name}}
    

    即便如此,也不仅仅是需要。它是多余的,因为Get-ADGroupMember已经返回了你需要的类似对象。你需要对这些数据做什么?如果你确实需要Get-AdUser,那么只需将输出传递给它。

    Get-ADGroupMember -identity “Accounting” -recursive | Get-Aduser
    

答案 1 :(得分:0)

$user是CSV文件中的一行。你需要解决该行的Name字段(你也有太多的单引号和双引号)。

foreach ($user in $csv) {Get-ADUser -filter "Name -eq  '$($user.name)'"}

或者您可以将CSV文件设为名称的香草列表,而不是将其视为CSV:

Get-ADGroupMember -identity “Accounting” -recursive | select -expandproperty name | out-file "c:\group.txt"

$csv = get-content -path "c:\group.txt"
foreach ($user in $csv) {Get-ADUser -filter "Name -eq  '$user'"}

但是,如果您仅将该文件用作组搜索和用户查找之间的管道,则可以通过将Get-ADGroupMember的输出直接汇总到Get-ADUser来完全跳过该文件。 / p>

Get-ADGroupMember -identity “Accounting” -recursive | Get-ADUser;