gpt4 book ai didi

Powershell:计算 AD 组的成员

转载 作者:行者123 更新时间:2023-12-04 14:28:54 25 4
gpt4 key购买 nike

收到一个我可以使用和更正代码的示例

我目前的问题是如何计算组中成员的数量,而不是打印出组中的所有成员(包括他们的 ID 名称或 PC 名称)。注释掉的代码打印每个成员。我只想数一数。

我在 foreach 循环中尝试了 $members.count、$member.count 和 $string.count,但没有打印出来。请帮忙

Import-Module ActiveDirectory

$pathEmpty = "C:\Temp\groupsEmpty.txt"

Clear-Content $pathEmpty

$Header = `
"Group ID Name" + "|" + `
"Display Name" + "|" + `
"Description" + "|" + `
"Members"


#Write out the header
$Header | Out-File $pathEmpty -Append


$emptys = get-adgroup -properties name, displayname, description, members -filter name -like "WA*" -or name -like "workstation*"} `
| Select name, displayname, description, members

foreach ($empty in $emptys)
{
#clears previous
$members = ""
foreach ($member in $empty.members)
{
$string = $member.substring(3,$member.indexof(",")-3)
#$members = $members + ":" + $string
$string.count
}
$listing =`
$empty.Name + "|" + `
$empty.DisplayName + "|" + `
$empty.Description + "|" + `
$members

$listing | Out-File $pathEmpty -Append
}

我根据 Alex McKenzie 的评论进行了编辑。你给我的最初的例子有问题。
我尝试对其进行一些编辑,但出现错误: 无法验证参数“身份”的参数。参数为 null 或为空。提供一个非 null 或空的参数,然后尝试
再次命令。

foreach ($empty in $emptys)
{
#clears previous
$members = ""
foreach ($member in $empty.members)
{
#$string = $member.substring(3,$member.indexof(",")-3)
#$members = $members + ":" + $string

if($member -eq $null){
$users = 0
}
else{
$users = (Get-ADGroupMember -Identity $($_.DistinguishedName)).Count
#$users.count
}
}

下面是我完成的代码。我只是为我需要的每个东西制作了单独的 .txt 文件,然后将它们单独导入到 excel 中。 问题已解决
Import-Module ActiveDirectory

##########################################################################
#This Section involves filtering WA groups and retriving their information
#In the info section (aka Notes section) is very important to look
#over if groups require approvals or not

##########################################################################

$pathAll = "C:\Temp\groupsEALL.txt"

Clear-Content $pathALL

$Header = `
"Group ID Name" + "|" + `
"Description" + "|" + `
"Notes Field" + " |" + "Members"


#Write out the header
$Header | Out-File $pathALL -Append

$emptys = get-adgroup -properties name, description, members, info -filter {name -like "WA*" -or name -like "workstation*"} `
| Select name, description, members, info

foreach ($empty in $emptys)
{

#clears previous
$members = ""
foreach ($member in $empty.members)
{
#$users = (Get-ADGroupMember -Identity $member.DistinguishedName).Count
$string = $member.substring(3,$member.indexof(",")-3)
$members = $members + ":" + $string
}

$listing =`
$empty.Name + "|" + `
$empty.Description + "|" + `
$empty.Info + "|" + `
$members

$listing | Out-File $pathALL -Append
}

################################################################
#This next section will determine the member count in the groups

################################################################

$pathCount = "C:\Temp\Groupcount.txt"
Clear-Content $pathcount

$groups = Get-ADGroup -filter {(name -like "WA*") -or (name -like "workstation*")}
foreach($group in $groups){
#initializing
$countUser = ""
$countUser = ((get-Adgroup $group -properties members).members).count


"The group $($group.Name) has $countUser user(s)." | Out-File $pathCount -Append
}

如果我希望它也被计数,我会在原始脚本中添加一个计数器
foreach ($empty in $emptys)
{

#clears previous
$members = ""
#initialize member counting
$count = 0
foreach ($member in $empty.members)
{
#counts how many members
$count += 1
$countSum = "The group $($group.Name) has $count user(s)."
$string = $member.substring(3,$member.indexof(",")-3)
$members = $members + ":" + $string
}
$listing =`
$empty.Name + "|" + `
$empty.Description + "|" + `
#$empty.Info + "|" + `
$empty.info + "|" + `
$members + "|" + $countSum

$listing | Out-File $pathALL -Append
}

最佳答案

Get-ADGroupMember cmdlet 会以比您绑定(bind)的方式更有效的方式解决此问题。
举个例子:

$users = @(Get-ADGroupMember -Identity 'Group Name')
$users.count
132
编辑:
为了澄清事情,并使您的脚本更简单。这是一个适用于您的环境的通用脚本,该脚本输出与您的过滤器匹配的每个组的用户数。
$groups = Get-ADGroup -filter {(name -like "WA*") -or (name -like "workstation*")}
foreach($group in $groups){
$countUser = @(Get-ADGroupMember $group.DistinguishedName).count
Write-Host "The group $($group.Name) has $countUser user(s)."
}

关于Powershell:计算 AD 组的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26977379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com