簡體   English   中英

PowerShell腳本,用於返回多個安全組的成員

[英]PowerShell script to return members of multiple security groups

我需要使用PowerShell返回多個安全組的所有成員。 很方便,所有小組都以相同的字母開頭。

我可以使用以下代碼返回所有相關安全組的列表:

Get-ADGroup -filter 'Name -like"ABC*"' | Select-Object Name

我知道我可以使用以下代碼返回特定安全組的成員資格列表:

Get-ADGroupMember "Security Group Name" -recursive | Select-Object Name

然而,我似乎無法把它們放在一起,雖然我認為我所追求的應該是這樣的(請隨意糾正我,這就是為什么我在這里!):

$Groups = Get-ADGroup -filter 'Name -like"ABC*"' | Select-Object Name
ForEach ($Group in $Groups) {Get-ADGroupMember -$Group -recursive | Select-Object Name

關於如何正確構建的任何想法將不勝感激!

謝謝,

克里斯

這是更清潔,將放入csv。

Import-Module ActiveDirectory

$Groups = (Get-AdGroup -filter * | Where {$_.name -like "**"} | select name -expandproperty name)


$Table = @()

$Record = [ordered]@{
"Group Name" = ""
"Name" = ""
"Username" = ""
}



Foreach ($Group in $Groups)
{

$Arrayofmembers = Get-ADGroupMember -identity $Group | select name,samaccountname

foreach ($Member in $Arrayofmembers)
{
$Record."Group Name" = $Group
$Record."Name" = $Member.name
$Record."UserName" = $Member.samaccountname
$objRecord = New-Object PSObject -property $Record
$Table += $objrecord

}

}

$Table | export-csv "C:\temp\SecurityGroups.csv" -NoTypeInformation
Get-ADGroupMember "Group1" -recursive | Select-Object Name | Export-Csv c:\path\Groups.csv

我讓這個為我工作......我會假設你可以把“Group1,Group2等” 或嘗試使用通配符。 我事先將AD預先加載到PowerShell中:

Get-Module -ListAvailable | Import-Module

這將為您提供單個組的列表以及每個組的成員。

param
(   
    [Parameter(Mandatory=$true,position=0)]
    [String]$GroupName
)

import-module activedirectory

# optional, add a wild card..
# $groups = $groups + "*"

$Groups = Get-ADGroup -filter {Name -like $GroupName} | Select-Object Name

ForEach ($Group in $Groups)
   {write-host " "
    write-host "$($group.name)"
    write-host "----------------------------"

    Get-ADGroupMember -identity $($groupname) -recursive | Select-Object samaccountname

 }
write-host "Export Complete"

如果您需要友好名稱或其他詳細信息,請將它們添加到select-object查詢的末尾。

如果您不關心用戶所在的群組,並且只想要一個大的用戶列表 - 這就完成了工作:

$Groups = Get-ADGroup -Filter {Name -like "AB*"}

$rtn = @(); ForEach ($Group in $Groups) {
    $rtn += (Get-ADGroupMember -Identity "$($Group.Name)" -Recursive)
}

然后結果:

$rtn | ft -autosize

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM