PowerShell 从多个组中获取所有用户
PowerShell Getting All Users From Multiple Groups
我正在尝试为每个组获取用户。然后获取有关用户的更多详细信息。
有人能看出下面为什么不起作用吗?
do
{
$Group=@('"Group1"'
'"Group2"',
'"Group3"',
'"Group4"',
'"Group5"')
try{
$Group | ForEach{
ForEach ($member in (Get-ADGroupMember $_ ))
{
$user = Get-ADUser $member -Properties *
$useracc = $user.samaccountname
$userid = $user.EmployeeID
$userout = $useracc + " - " + $userid
write-output $userout | out-file -filepath c:\temp\New.txt -Append -NoClobber
}
}
}
Catch
{
write-output $userout | out-file -filepath c:\temp\error.txt }
}
until ($memeber -eq $Null)
好的,让我们开始吧,您的 Do{}Until()
循环毫无意义,至少在您提供的示例代码中是这样。接下来,您的 Try/Catch
应该不那么全球化。我避免将 ForEach
循环放在 ForEach-Object
循环中,因为跟踪事情真的很难,但我就是这样。
所以,你有以上功能。我将“'Group1'”替换为我所在域中的一个组的可分辨名称,运行 您的代码按原样,它输出预期的文件。没有理由不能与多个组一起使用。它有点慢,但我将其归因于脚本的编写方式。我重写了一下,这应该做同样的事情,但速度更快,并且错误处理稍微好一些:
$Groups=@('"Group1"'
'"Group2"',
'"Group3"',
'"Group4"',
'"Group5"')
ForEach($Group in $Groups){
Try{
Get-ADGroupMember $Group | Where {$_.objectClass -eq 'user' } | Select -expand distinguishedName | Get-ADUser -Properties EmployeeID | ForEach {
"{0}`t-`t{1}" -f $_.samaccountname, $_.employeeid | Add-Content C:\Temp\New.txt
}
}
Catch{
"Error getting members for $Group" | Add-Content C:\Temp\Errors.txt
}
}
我正在尝试为每个组获取用户。然后获取有关用户的更多详细信息。
有人能看出下面为什么不起作用吗?
do
{
$Group=@('"Group1"'
'"Group2"',
'"Group3"',
'"Group4"',
'"Group5"')
try{
$Group | ForEach{
ForEach ($member in (Get-ADGroupMember $_ ))
{
$user = Get-ADUser $member -Properties *
$useracc = $user.samaccountname
$userid = $user.EmployeeID
$userout = $useracc + " - " + $userid
write-output $userout | out-file -filepath c:\temp\New.txt -Append -NoClobber
}
}
}
Catch
{
write-output $userout | out-file -filepath c:\temp\error.txt }
}
until ($memeber -eq $Null)
好的,让我们开始吧,您的 Do{}Until()
循环毫无意义,至少在您提供的示例代码中是这样。接下来,您的 Try/Catch
应该不那么全球化。我避免将 ForEach
循环放在 ForEach-Object
循环中,因为跟踪事情真的很难,但我就是这样。
所以,你有以上功能。我将“'Group1'”替换为我所在域中的一个组的可分辨名称,运行 您的代码按原样,它输出预期的文件。没有理由不能与多个组一起使用。它有点慢,但我将其归因于脚本的编写方式。我重写了一下,这应该做同样的事情,但速度更快,并且错误处理稍微好一些:
$Groups=@('"Group1"'
'"Group2"',
'"Group3"',
'"Group4"',
'"Group5"')
ForEach($Group in $Groups){
Try{
Get-ADGroupMember $Group | Where {$_.objectClass -eq 'user' } | Select -expand distinguishedName | Get-ADUser -Properties EmployeeID | ForEach {
"{0}`t-`t{1}" -f $_.samaccountname, $_.employeeid | Add-Content C:\Temp\New.txt
}
}
Catch{
"Error getting members for $Group" | Add-Content C:\Temp\Errors.txt
}
}