Удалите символы из вывода в каждой строке

#powershell #exchange-server-2010 #exchange-management-shell

Вопрос:

Я новичок в PowerShell и изо всех сил пытаюсь изменить вывод в соответствии с тем, как я хочу.

Команда, которую я выполняю в командной консоли MS Exchange, такова:

 Get-Mailbox user1 | Get-ADPermission | ? {($_.ExtendedRights -like "*send-as*") -and -not ($_.User -like "NT AUTHORITYSELF")} | Select User
 

Результат, который я получаю от приведенной выше команды, таков:

 User              
----              
AGLuser4
AGLuser5
AGLgroupX
 

Однако я хотел бы получить результат в виде:

 User              
----              
user4
user5
groupX
 

Возможно ли это сделать?

Заранее огромное спасибо.

Ответ №1:

Для этого используйте Вычисляемое свойство для вывода объектов только с их именами:

 Get-Mailbox -Identity user1 | 
    Get-ADPermission | 
    Where-Object {($_.ExtendedRights -like "*send-as*") -and ($_.User -ne "NT AUTHORITYSELF")} | 
    Select-Object @{Name = 'User'; Expression = {$_.User.Split("",2)[1]}}
 

Комментарии:

1. Большое тебе спасибо, Тео, твое решение работает.

Ответ №2:

После небольшого тестирования Вы можете попробовать

 (Get-Mailbox user1 | Get-ADPermission | ? {($_.ExtendedRights -like "*send-as*") -and -not ($_.User -like "NT AUTHORITYSELF")} | Select User).TrimStart("AGL")
 

Если это не сработает, вы можете попробовать

 $Rights = Get-Mailbox user1 | Get-ADPermission | ? {($_.ExtendedRights -like "*send-as*") -and -not ($_.User -like "NT AUTHORITYSELF")} | Select User

$Rights = $Rights.TrimStart("AGL")
 

Отделка будет обрезать начало до точки задней косой черты, пока строка остается прежней.