Powershell - Add-LocalGroupMember - faz silêncio quando o membro existe

1

Posso usar o Add-LocalGroupMember para adicionar um usuário ao grupo local:

Add-LocalGroupMember -Group  "Administrators" -Member  "foobar"

mas não é idempotente. Se o usuário já existe, você recebe este erro

Add-LocalGroupMember : foobar is already a member of group Administrators

Qual é a melhor maneira de fazer com que este comando não seja um erro quando você deseja executar este comando repetidamente?

O motivo é que isso faz parte de uma implantação do Octopus e não quero usar uma etapa pré-escrita para algo tão simples.

    
por fiat 17.10.2017 / 01:57

3 respostas

2

Você pode simplificar seu wrapper em um bloco try / catch. Este exemplo só captura quando o membro já existe, então você ainda pode avaliar e lidar com outros erros.

try {
    Add-LocalGroupMember -Group $group -Member $member -ErrorAction Stop
} catch [Microsoft.PowerShell.Commands.MemberExistsException] {
    Write-Warning "$member already in $group"
}
    
por 17.10.2017 / 02:33
1

Eu criei essa função para envolvê-la

function Add-LocalGroupMemberSilent($groupName, $username)
{
    $existingMember = Get-LocalGroupMember -Name $groupName | Where {$_.Name -eq "$username"}

    if ($existingMember)
    {
        Write-Host "'$username' is already a member of '$groupName'"
    }
    else
    {
        Write-Host "Adding '$username' to '$groupName'"
        Add-LocalGroupMember -Group "$groupName" -Member "$username"
    }
}

mas eu sinto que pode haver uma maneira mais elegante que me escapa

    
por 17.10.2017 / 01:57
1

Eu acho que você pode estar procurando por 'erroractionpreference', este artigo explica alguns exemplos de como isso funciona.

link

Dada a outra resposta, se o seu script for maior do que essa função e você precisar continuar com a solução de problemas, será necessário agrupar esse código definindo-o no início e definindo-o como "continuar" depois de são feitos o processamento. Isso suprimirá erros que não terminam assim, de modo que não sejam impressos no seu host.

    
por 17.10.2017 / 02:41