Проблема порядка выполнения команд Powershell - PullRequest
0 голосов
/ 28 марта 2019

Я новичок в изучении Powershell и столкнулся с проблемой, которая заставляет меня сходить с ума. Я хочу написать простой скрипт Powershell, который можно использовать как для получения членства в группах определенных пользователей ActiveDirectory, так и для пользователей определенных групп ActiveDirectory, и в конце дает возможность записать результат на консоль или сохранить его. как CSV. Все отлично работает, за исключением того, что я делаю, я не могу остановить закрытие окна сразу после того, как оно пишет результаты на консоли. Я знаю, что могу запустить PS1 из командной строки так, чтобы окно не закрывалось, но я бы хотел, чтобы Powershell сделал это сам.

Я пытался использовать как «пауза», так и Read-Host после сценария запроса, но событие остановки всегда происходит ДО того, как результат появится на консоли, независимо от порядка между ними. Я просто не могу понять, почему порядок выполнения двух команд обратный. Не могли бы вы дать мне некоторое представление о том, почему Powershell делает это?

$nameofgroup = Read-Host -Prompt "`nPlease enter the name of the group!`n"
Get-ADGroupMember -identity $nameofgroup | Get-ADObject -Properties description, samAccountName | select @{n='Name'; e='name'}, @{n='Description'; e='description'}, @{n='Username'; e='samAccountName'}
$temp = Read-Host "Press Enter to continue..."

1 Ответ

0 голосов
/ 28 марта 2019

Так что вам нужно явно указать powershell для вывода строки. Я также добавил некоторую обработку ошибок, чтобы вам не приходилось каждый раз запускать скрипт. Например, если группа была введена неправильно или не существует.

Do
{
    $nameofgroup = Read-Host -Prompt "`nPlease enter the name of the group!`n"

    try
    {
        Get-ADGroupMember -identity $nameofgroup | Get-ADObject -Properties description, samAccountName | select @{n='Name'; e='name'}, @{n='Description'; e='description'}, @{n='Username'; e='samAccountName'} | Out-String
        $errorMessage = 'False'
        Read-Host -Prompt 'Press Enter key to exit'
    }
    catch
    {
        Write-Host "Could not find group please try again"
        $errorMessage = 'True'
    }
}
while($errorMessage -eq 'True')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...