我已经将此脚本gt自动化,以自动删除工作场所中的用户,但我不知道为什么此Get不能打印任何东西(如果后面有另一个get)。这是延迟问题吗?或我的语法有问题”
#Requests user input username
$_Name=Read-Host "Enter account name you wish to disable"
#Lists the users AD groups and removes them
Get-ADPrincipalGroupMembership $_Name | select name
Get-ADUser -Identity $_Name -Properties MemberOf -Credential $_Creds| ForEach-Object {
$_.MemberOf | Remove-ADGroupMember -Members $_.DistinguishedName -Credential $_Creds -Confirm:$false
}
write-host "User has been removed from the listed groups..."
它只是返回列表应该在的空白处。
答案 0 :(得分:0)
要推断评论中提到的内容:
您当前正在运行两个单独的Get命令。第一个Get-ADPrincipalGroupMembership
将生成输出。这是校长所属的组的列表。您正在运行的第二个Get命令(Get-ADUser
)的输出在循环中使用,并且您不打印该输出。您需要执行类似Write-Output $_.MemberOf
的操作才能看到它。
您将$_.MemberOf
用作命令Remove-ADGroupMember
的另一个输入。对于该命令,文档说明:
输出
无一或Microsoft.ActiveDirectory.Management.ADGroup
在指定PassThru参数时返回修改后的组对象。默认情况下,此cmdlet不会生成任何输出。
因此,除非您提供参数-PassThru
,否则它将消耗$_.MemberOf
的“输出”并且不显示任何内容。