根据字符串捕获命令输出

根据字符串捕获命令输出

我找到了这个脚本,并尝试通过搜索组成员身份来使用它来查找 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 不显示嵌套或间接组。

相关内容