GET не печатать, когда есть еще один GET после него? - PullRequest
1 голос
/ 11 апреля 2019

Я получил этот скрипт, чтобы автоматизировать удаление пользователей для нашего рабочего места, и я не могу понять, почему этот 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 голосов
/ 11 апреля 2019

Чтобы экстраполировать то, что было упомянуто в комментариях:

В настоящее время вы запускаете две отдельные команды Get.Первый, Get-ADPrincipalGroupMembership будет генерировать вывод.Это список групп, в которые входит участник.Вторая команда Get, которую вы запускаете (Get-ADUser), имеет вывод, используемый в цикле, и вы не печатаете этот вывод.Вам нужно сделать что-то вроде Write-Output $_.MemberOf, чтобы увидеть это.

Вы используете $_.MemberOf в качестве другого ввода для команды Remove-ADGroupMember.Для этой команды в документации указано:

Выходы

Нет или Microsoft.ActiveDirectory.Management.ADGroup

Возвращает измененный объект группы, если указан параметр PassThru.По умолчанию этот командлет не генерирует никаких выходных данных.

Поэтому, если вы не укажете параметр -PassThru, он будет использовать "выходные данные" $_.MemberOf и ничего не отображать.

...