转换Get-ADPrincipalGroupMembership,以便我可以将它写入注释字段

我正在编写一个PowerShell脚本来自动放置用户请假。 作为这个过程的一部分,如果要阻止他们回到数以千计的电子邮件,那么我们会将他们从DL中删除。

我打算将成员名单保存在电话标签下的注释字段中,以便我们可以在返回时手动轻松地进行恢复(一次一个自动化步骤)

我没有问题拉动通讯组列表:

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

遇到麻烦的部分是当我尝试将它保存到注释字段中时:

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

我得到的错误:

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

我已经尝试用-split和-join将数据按摩成形,但要么我没有正确地做,要么这些不是正确的命令。 ConvertTo-CSV“作品”,但增加了很多额外的东西。

如何转换这些数据,以便电话标签可以接受? 我的首选格式是我可以用来复制/粘贴组后面的后缀,即。 group1; group2; group3等(我也会采取评论,我接近这一切都是错误的,方法xyz好多了。)

那么,我并不是想说明这一点,但是你正试图粘贴一个Powershell对象,在这个对象中,AD用户的info属性只接受string。 您需要首先将组成员身份列表转换为string,然后自行添加逻辑,以将您的select分隔符置于每个组名称之间,无论是逗号,分号还是换行符。

 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} 

您还可以将输出传送到:

 Select-Object -ExpandProperty name 

这只允许您select一个属性,但PowerShell会将其转换为string。