Лучший отвечающий
форматирование вывода -powershell 2.0

Вопрос
-
Всем привет.
Есть такой скриптик
Get-ADGroup -Filter {(GroupCategory -eq 'Distribution') -and (GroupScope -eq 'Universal')} -Properties Members | Select-Object DistinguishedName, members | Ft
он выдает информацию о пользователях и группах в формате cn=..., ou=...
Подскажите пожалуйста, как заставить его выдавать только cn и выводить список полностью ( сейчас обрезает его многоточием)?
Спасибо2 июля 2010 г. 10:11
Ответы
-
Странно, а почему вы не написали этого в первом посте? :)
get-adgroup -filter {Name -like "условие"} | foreach {write-host `nГруппа: $_.name; Get-ADGroupMember $_|select -expandproperty name}
AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com- Помечено в качестве ответа Graill 3 июля 2010 г. 8:18
2 июля 2010 г. 22:31Модератор
Все ответы
-
>Подскажите пожалуйста, как заставить его выдавать только cn
Как-то так
...| Select-Object DistinguishedName, members | Ft
заменить на
...| Select-Object @{N="GroupName";E={(GetADGroup $_.DistinguishedName).Name}}, @{N="MembersNames";E={$_.members -replace ",.+$" -replace "^CN="}}| ft -AutoSize
Если по прежнему не будет помещаться на эране, то можно либо добавить параметр -Wrap к ft, либо, вообще, заменить ft на fl
blog: http://shss.wordpress.com/- Предложено в качестве ответа s.h.s. _ 2 июля 2010 г. 12:47
2 июля 2010 г. 12:16 -
Спасибо за ответ )
Попробовал - он group name не пишет теперь совсем и вывод по-прежнему не помещается (
уже пробовал ft -wrap, verbose и fl - все равно обрубает вывод многоточием
2 июля 2010 г. 12:56 -
Вы хотите получить список членов групп? Для этого специальный командлет есть:
get-adgroup -filter {условие} | Get-ADGroupMember | Sort -Unique | ft name
Можно впрочем и через свойство, надо только понимать что там массив строк, и его нужно развернуть, а затем преобразовать в объекты AD, затем вывести их свойство Name. Это будет длиннее и менее красиво (Получаем объекты, получаем свойство объекта содержащее строки, получаем из этих строк объекты...):
get-adgroup -filter {условие} -Properties members | select -ExpandProperty members | Get-ADObject | select -Unique | ft name
Можно конечно использовать и регулярные выражения, это совсем некрасиво (тем более что никаких причин здесь этого делать нет), и не надежно:
(get-adgroup -filter {условие} -Properties members | select -ExpandProperty members) -replace '^CN=([^,]+),.+$','$1' | sort -Unique
AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com- Предложено в качестве ответа Vasily GusevModerator 2 июля 2010 г. 15:13
2 июля 2010 г. 15:13Модератор -
>Попробовал - он group name не пишет теперь совсем
Возможно потому, что я допустил небольшую опечатку (пропустил знак "тире") вместо @{N="GroupName";E={(GetADGroup...
должно быть @{N="GroupName";E={(Get-ADGroup...
>и вывод по-прежнему не помещается
здесь вам лучше прислушаться к совету Василия, ибо, как говорит всезнающий All - "Василий, вы, как всегда, правы" ;)
blog: http://shss.wordpress.com/2 июля 2010 г. 17:27 -
Задачей скрипта должен быть вывод списка пользователей в группах, но так чтобы было понятно к какой группе они принадлежат. Т.е, желательно чтобы в начале списка пользователей выводилось имя соответствующей группы2 июля 2010 г. 20:53
-
Странно, а почему вы не написали этого в первом посте? :)
get-adgroup -filter {Name -like "условие"} | foreach {write-host `nГруппа: $_.name; Get-ADGroupMember $_|select -expandproperty name}
AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com- Помечено в качестве ответа Graill 3 июля 2010 г. 8:18
2 июля 2010 г. 22:31Модератор -
виноват, это я сглупил )
за решение спасибо огромное - работает замечательно
но остался еще такой вопрос - почему если добавить в конце скрипта |out-file, то он выводит в файл только список пользователей, без указания имени группы?
3 июля 2010 г. 8:18 -
Потому что командлет write-host выводит текст на экран, и этот текст не передается по конвейеру дальше. Вы можете заменить его на write-output
AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com3 июля 2010 г. 8:24Модератор -
спасибо!3 июля 2010 г. 8:33