我找到了这个脚本,并尝试通过搜索组成员身份来使用它来查找 AD 帐户,如下所示:
ForEach ($Group in (Get-ADGroup -Filter * -searchbase "dc=acme,dc=local"))
{
$output = Get-ADGroupMember $Group | Select @{Label="Group";Expression={$Group.Name}},Name,SamAccountName
}
我不知道如何将 if 语句添加到此代码中。如果有更好的方法可以完成同样的事情,请提供建议。主要目标是搜索 AD 组中的用户名并返回指定用户所属的组名。
谢谢
答案1
听起来你对 PowerShell 和 ADDS 脚本还不熟悉。花点时间通过以下方式在线查看所有免费培训和视频至关重要……
在以下位置搜索初级 PowerShell
- 微软虚拟学院
- TechNet 虚拟实验室
- YouTube
- MS 频道 9
…以便获得坚实的基础。此外,尽管有点过时,但仍建议阅读 Don Jones 撰写的《PowerShell in a Month of Lunches》。
网络上有很多现成的示例,甚至还有完全预构建的脚本,可以准确说明如何执行此操作。MS PowerShellGallery 应该是您的起点。
Get the group membership of a given AD group and return a user-specified list of attributes to a CSV file.
https://www.powershellgallery.com/packages/getADGroupMembershipWithProperties/1.1/DisplayScript
您也可以直接使用 ADDS cmdlet。无需 if 语句。内置 PowerShell 帮助文件中的文本和帮助文件中提供的示例显示了这一点。只需过滤名称即可
仅使用内置的东西。
Clear-Host
$TargetUsername = Read-Host -Prompt 'Enter a username'
"Getting groups for user $TargetUsername"
Get-ADPrincipalGroupMembership -Identity $TargetUsername |
Select-Object -Property @{Name = 'GroupName';Expression = {$_.Name}},SamAccountName |
Format-Table -AutoSize
如果要获取嵌套组,则需要更多代码。内置 cmdlet 不显示嵌套或间接组。