后面还有另一个GET时,GET无法打印?

时间:2019-04-11 03:30:02

标签: powershell active-directory powershell-ise

我已经将此脚本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..."

它只是返回列表应该在的空白处。

1 个答案:

答案 0 :(得分:0)

要推断评论中提到的内容:

您当前正在运行两个单独的Get命令。第一个Get-ADPrincipalGroupMembership将生成输出。这是校长所属的组的列表。您正在运行的第二个Get命令(Get-ADUser)的输出在循环中使用,并且您不打印该输出。您需要执行类似Write-Output $_.MemberOf的操作才能看到它。

您将$_.MemberOf用作命令Remove-ADGroupMember的另一个输入。对于该命令,文档说明:

  

输出

     

无一或Microsoft.ActiveDirectory.Management.ADGroup

     

在指定PassThru参数时返回修改后的组对象。默认情况下,此cmdlet不会生成任何输出。

因此,除非您提供参数-PassThru,否则它将消耗$_.MemberOf的“输出”并且不显示任何内容。