Поскольку ваш код создает $menu
как ArrayList
, вы можете использовать метод Add(System.Object value)
для добавления в коллекцию. Один из вариантов - добавить желаемое строковое значение в общее свойство нового объекта. Здесь 'Custom'
можно изменить на любую строку.
[void]$menu.Add([pscustomobject]@{'Teammember' = 'Custom'})
Второй вариант - просто добавить строковое значение в коллекцию. Однако позже это уменьшит гибкость при выборе меню.
[void]$menu.Add("Custom Selection")
Поскольку Add()
производит вывод int
(индекс, содержащий дополнение), мы используем приведение [void]
для подавления.
$menu
в конечном итоге представляет собой набор объектов, которые содержат свойства Teammember
, Name
и mail
. Вы можете просто добавить к этому списку другой объект с любым количеством указанных свойств. Вы можете добавить новые свойства к новому объекту, но у вас будут проблемы с отображением в табличном представлении.
В дополнение, используйте только команды Format-*
для отображения вывода. Не рекомендуется хранить Format-*
выходные данные в переменных, которые, как ожидается, будут иметь будущие изменения свойств или дополнения объектов. Ваш новый код может выглядеть примерно так:
$Manager = Get-ADUser (Get-ADUser $Aduser.SamAccountName -properties Manager | Select -ExpandProperty Manager)
$Team = Get-ADUser $Manager.SamAccountName -Properties DirectReports |
Select-Object -ExpandProperty DirectReports |
Get-ADUser -Properties Name,mail | Select-Object Name,mail
$null = $Team | Select-Object @{Name="Teammember";Expression={$global:i++;$global:i}},Name,Mail -OutVariable menu
[void]$menu.Add([pscustomobject]@{'Teammember' = 'Custom'})
# If you want to output Menu as a table
$menu | Format-Table -AutoSize
$r = Read-Host "Select which team member to use via number"
$replacement = $menu | where {$_.teammember -eq $r}