O primeiro problema é a sua comparação. A linha que atribui um valor a $ member retorna uma lista, não um único item. Então você está basicamente perguntando no teste "se essa lista grande é igual a um único item". Essa condição nunca será verdadeira, exceto, talvez, o grupo tenha apenas um membro (não tenho certeza se você obterá um único item nesse caso ou um objeto de matriz com um membro).
A segunda questão é que você não faz nada com os resultados deste teste - você ainda executa a adição do grupo mesmo que o usuário já esteja no grupo (supondo que seu teste foi escrito corretamente). Por quê?
Ele também tem muita sobrecarga, já que ele executará esse despejo do conteúdo do grupo toda vez que você executá-lo. Melhor seria obter os membros do grupo uma vez, fora de seu loop foreach, e então usar uma busca de array nessa lista dentro do loop foreach. Isso é menos preocupante, mas pode valer a pena consertar.
PS - você pode adicionar um usuário a um grupo, mesmo que ele já seja membro do grupo. Então você pode querer remover essa comparação completamente:
foreach ($user in get-content $userspath) {
Add-ADGroupMember -Identity $group -Member $user
}
Editar: Se você ainda quiser pesquisar a existência de um membro no grupo, poderá fazer assim:
$u = get-aduser $user -properties "memberof"
if ($u.memberOf -contains (get-adgroup $group) )
...