Не могу получить правильный синтаксис конвейера PowerShell - PullRequest
0 голосов
/ 24 сентября 2019

Я хочу запустить простой скрипт, который показывает всех привилегированных пользователей в Active Directory.Я близок, но не совсем понимаю синтаксис.Я думаю, что код довольно понятен:

'Domain Admins', 'Administrators', 'Enterprise Admins', 'Schema Admins', 'Server Operators', 'Backup Operators' | 
    ForEach-Object {$groupName = $_ Get-ADGroupMember -Identity $_ -Recursive |
    Get-ADUser | Select-Object Name, DisplayName, @{n='GroupName';e={ $groupName }}} 

В PowerShell ISE он подчеркивает Get-ADGroupMember и заявляет: «Неожиданный токен« Get-ADGroupMember »в выражении или выражении».

Что я делаю не так?

Заранее спасибо,

- Джим

Приложение - еще одна проблема, которую я упустил из виду, но не задал в вопросе:Get-ADUser не возвращает свойство DisplayName, поэтому мы должны явно запросить его:

 'Domain Admins', 'Administrators', 'Enterprise Admins', 'Schema Admins', 'Server Operators', 'Backup Operators' |
    ForEach-Object {$groupName = $_; Get-ADGroupMember -Identity $_ -Recursive | Get-ADUser -Properties Name, DisplayName |
    Select-Object Name, DisplayName, @{n='GroupName';e={ $groupName }}}

1 Ответ

3 голосов
/ 24 сентября 2019

Вы забыли точку с запятой в качестве разделителя операторов:

'Domain Admins', 'Administrators', 'Enterprise Admins', 'Schema Admins', 'Server Operators', 'Backup Operators' | 
    ForEach-Object {$groupName = $_; Get-ADGroupMember -Identity $_ -Recursive |
    Get-ADUser | Select-Object Name, DisplayName, @{n='GroupName';e={ $groupName }}} 

Обратите внимание на точку с запятой после $groupname = $_.Если вы объединяете несколько блоков в блоке сценария и не разбиваете их на новые строки, вам нужно использовать точку с запятой для их разделения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...