从列表中删除特定项目

时间:2018-02-19 09:42:50

标签: powershell scripting conditional

我正在创建一个脚本,可以帮助我的同事创建一个新的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,因此我可以输出用户的组成员资格,将所有这些设置为新用户的成员资格。

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

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

1 个答案:

答案 0 :(得分:2)

您应该查看Where-Object cmdlet和-notin运算符。

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

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