【发布时间】:2020-09-11 06:29:43
【问题描述】:
我已经复制/创建了一个脚本来获取用户所属组的所有成员,包括嵌套组。但是,我的输出并不是我想要的那样。
它有两种方式之一。要么输出为一个大字符串,看起来不错,但每行都有尾随空格,所以我不能简单地将其复制并粘贴到 AD 中。或者,如果我将 Out-String 更改为使用 -stream,它会显示为乱码,但可能允许我修剪空格。
我目前在一个简单的 GUI 中将输出输入到 TextBox。
Function Get-ADUserNestedGroups {
Param
(
[string]$DistinguishedName,
[array]$Groups = @()
)
#Get the AD object, and get group membership.
$ADObject = Get-ADObject -Filter "DistinguishedName -eq '$DistinguishedName'" -Properties memberOf, DistinguishedName;
#If object exists.
If($ADObject)
{
#Enummurate through each of the groups.
Foreach($GroupDistinguishedName in $ADObject.memberOf)
{
#Get member of groups from the enummerated group.
$CurrentGroup = Get-ADObject -Filter "DistinguishedName -eq '$GroupDistinguishedName'" -Properties memberOf, DistinguishedName;
#Check if the group is already in the array.
If(($Groups | Where-Object {$_.DistinguishedName -eq $GroupDistinguishedName}).Count -eq 0)
{
#Add group to array.
$Groups += $CurrentGroup;
#Get recursive groups.
$Groups = Get-ADUserNestedGroups -DistinguishedName $GroupDistinguishedName -Groups $Groups;
}
}
}
#Return groups.
Return $Groups;
}
Function Display-UserGroups {
#Get all groups.
$Groups = Get-ADUserNestedGroups -DistinguishedName (Get-ADUser -Identity $userSAM).DistinguishedName;
$ResultsTextBox.Text = $Groups | Select-Object Name| Sort-Object name | Out-String
第一种方式的输出如下:
组名1(这里八个空格)
组名2(这里八个空格)
第二种方式的输出如下:
组名1组名2组名3
感谢您的帮助!
【问题讨论】:
-
看起来你做的比这里发布的输出尝试更多。您可以修剪字符串,然后为文本框添加换行符:
($Groups | Select -Expand Name | Sort).Trim() -join "`n"。 -
这成功了!我确实必须使用反引号“r”和n。谢谢@AdminOfThings
标签: powershell