2016-08-24 2 views
1

Я ищу способ добавить дополнительный элемент к объекту в PowerShell без создания нового объекта и цикла.Append Member/Column to PSObject

Обычно, когда я запускаю скрипт, он снова будет списком серверов, и я хочу добавить дополнительную информацию к возвращаемым данным, но я не могу найти способ сделать это, не создавая новый PSObject и перекручивание через существующий объект и добавить дополнительный ряд элементов на основе ряда (упрощенный пример ниже)

$FileList = get-childitem | Select-Object Name, DirectoryName 
$FileListOBJ = @() 

foreach ($item in $FileList) 
{  
    $Temp = New-Object PSObject 
    $Temp | Add-Member NoteProperty ServerName "XServerName" 
    $Temp | Add-Member NoteProperty FileName $item.Name 
    $Temp | Add-Member NoteProperty Directory $item.DirectoryName  

    $FileListOBJ += $Temp 
} 

$FileListOBJ 

есть ли способ сделать это вдоль этих линий ...

get-childitem | Select-Object "ServerName", Name, DirectoryName 

Приведенный выше код создает дополнительный член, но я не смог найти способ заполнить addi я с деталями.

ответ

0

Конечно, вы можете использовать вычисляемое свойство (подробнее о них here):

get-childitem | Select-Object @{l="ServerName"; e={"XServerName"}}, Name, DirectoryName 
+0

Отлично, Я знал, что должен быть более простой способ сделать это – Doug

1

вы можете также создать новый объект без звонков надстройки членов:

$FileList = get-childitem | Select-Object Name, DirectoryName 
$FileListOBJ = @() 
foreach ($item in $FileList) 
{  
    $FileListOBJ += [PSCustomObject]@{ServerName="ServerName";FileName=$item.Name;Directory=$item.DirectoryName} 
} 

$FileListOBJ