我正在编写一个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。