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

转换 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 等等。(我也会接受这样的评论:我处理这个问题的方式完全是错误的,而且这种方法坐标好多了。

答案1

好吧,我并不是想说显而易见的事情,但你试图粘贴一个 Powershell 对象,其中infoAD 用户的属性只接受字符串。你需要先将组成员列表转换为字符串,然后自己添加逻辑,在每个组名之间放置你选择的分隔符,可以是逗号、分号或换行符。

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}

答案2

您还可以通过管道将输出传输至:

Select-Object -ExpandProperty name

这只允许您选择一个属性,但 PowerShell 会将其转换为字符串。

相关内容