从列表中删除特定项目

Remove specific items from a list

我正在创建一个脚本来帮助我的同事创建一个新的 AD 用户。这是我到目前为止所做的:

ipmo activedirectory
$users = import-csv C:\Users\...\Desktop\test_bulk.csv -delimiter ";"
foreach ($User in $users) 
{
    $Displayname = $User.Givenname + " " + $User.Surname
    $Usersurname = $User.Surname
    $Userfirstname = $User.Givenname
    $SAM = $User.Samaccountname
    $OU = $User.path
    $password = $User.Password
    $newuser = New-ADUser -PassThru -Name $Displayname -SamAccountName $SAM -
    GivenName $Userfirstname -Surname $Usersurname -AccountPassword (ConvertTo-SecureString $password -AsPlainText -Force)-Enabled $true -Path $OU -ChangePasswordAtLogon $false -PasswordNeverExpires $true -OtherAttributes  @{businesscategory="Internal"}
    $gpuser = Get-ADPrincipalGroupMembership $User.gpuser | select -ExpandProperty name

    Add-ADPrincipalGroupMembership -Identity $newuser -MemberOf $gpuser
}

如您所见,我设置了一个变量$gpuser,这样我就可以输出用户的组成员身份,将所有这些设置到新用户的成员身份中。

但是有一点障碍...我需要从检索到的列表中删除最多三个组。 我的意思是,每次我输出一个用户的成员资格时,我需要删除一些组,如果它们出现在列表中的话。

问题是我不知道如何编写脚本以及从哪里开始。

您应该看看 Where-Object cmdlet and the -notin 运算符。

基本上你会做这样的事情:

$excludeFromThisList = @("group1", "group2")
$newGroupList = $gpuser | Where-Object { $_ -notin $excludeFromThisList }