从以某个字符串开头的变量中删除值

时间:2017-05-11 19:13:59

标签: string powershell active-directory startswith

我正在编写一个脚本,将一个用户的组成员身份复制到另一个用户,但我需要排除任何以R-开头的组。我不想删除名称中只包含R-的任何组,即我希望保留的“CPR-Training”,但我想删除“R-Confidential”。我尝试过使用.StartsWith("R-"),但我无法将其输出转换为删除机制。

我拥有的是:

$Groups = Get-ADPrincipalGroupMembership -Id <FirstUser> | select Name
$RMV = $Groups.Name.StartsWith("R-")

但是从那里我不知道如何使用以R-开头的群组,并将其从$Groups中删除。它会像$Groups.Name.Remove($RMV)StartsWith()只是评估为真/假,而不是组名。

从那里我将更新的$Groups应用于第二个用户。那部分我有。

我已经在几个不同的网站上准备了许多类似的问题和主题,但没有一个完全符合我的要求。我找到的所有解决方案都会删除包含R-的所有群组,而不只删除以R-开头的群组。

tl; dr我无法弄清楚如何浏览$groups并删除所有以R-开头的字符串值。

2 个答案:

答案 0 :(得分:2)

试试这个:

$Groups = Get-ADPrincipalGroupMembership -Id <FirstUser> |
          Where-Object {-not ($_.Name.StartsWith("R-"))} |
          select Name

答案 1 :(得分:0)

我试过的两个脚本实际上都在工作。被遗弃的群体在开始时有一个空白区域。所以它不匹配&#34; R - &#34;即使它看起来像它。