Converta Get-ADPrincipalGroupMembership de tal forma que eu possa escrevê-lo no campo de notas

3

Estou escrevendo um script do PowerShell para automatizar a colocação de usuários em uma licença. Como parte desse processo, removemos o usuário de suas DLs se for uma ausência longa para impedi-las de retornar a milhares de e-mails.

Estou planejando salvar a lista de membros no campo de anotações na guia do telefone, para que eu possa restaurá-lo manualmente quando eles voltarem (uma etapa de automação por vez)

Não tenho nenhum problema em puxar uma lista de grupos de distribuição com:

 Get-ADPrincipalGroupMembership $user | Where-Object GroupCategory -eq Distribution | select name

A parte em que tenho problemas é quando tento salvá-lo no campo de anotações com:

Set-ADUser $user -replace @{info=(Get-ADPrincipalGroupMembership $user | Where-Object GroupCategory -eq Distribution |select name)} 

Eu recebo o erro:

Set-ADUser : Invalid type 'System.Management.Automation.PSObject'.

Eu tentei massagear os dados em forma com -split e -join, mas ou não estou fazendo certo ou não são os comandos certos. O ConvertTo-CSV "funciona", mas adiciona muito lixo extra.

Como posso transformar esses dados para que a guia telefônica aceite isso? Meu formato preferido é algo que eu posso usar para copiar / colar os grupos de volta no pós-i. group1; group2; group3 etc. (também vou comentar que o modo como estou abordando isso está errado e que o método xyz é muito melhor.)

    
por David 29.11.2013 / 18:40

2 respostas

3

Bem, não quero declarar o óbvio, mas você está tentando colar em um objeto Powershell, em que o atributo info de um usuário do AD só aceitará strings. Você precisa converter a lista de membros do grupo em uma string primeiro e adicionar a lógica você mesmo para colocar seu delimitador de escolha entre cada nome de grupo, seja uma vírgula, um ponto-e-vírgula ou um caractere de nova linha.

Foreach($grp In Get-ADPrincipalGroupMembership $usr | Where-Object GroupCategory -eq Distribution) 
{ 
    $GroupString += $grp.Name + ';' 
}
$GroupString = $GroupString.TrimEnd(';') # Remove the last delimiter off the end
Set-ADUser $usr -Replace @{info=$GroupString}
    
por 29.11.2013 / 20:41
1

Você também pode enviar a saída para:

Select-Object -ExpandProperty name

Isso só permite selecionar uma propriedade, mas o PowerShell a converterá em uma string.

    
por 20.12.2013 / 15:32