То, что вы показываете, это строковая форма пользовательского объекта , которая использует hashtable- как текстовое представление .
Определение этого пользовательского объекта выглядит примерно так:
# Construct a custom object with .ResourceType, .Id, and .Name properties.
$response = [pscustomobject] @{
ResourceType = 'UserStory'
Id = 202847
Name = 'Professional Lines: 2,800,000 Policy Aggregate Limit update'
}
Если вы включите эту переменную в расширяемую строку (интерполирующую строку), вы получите представление в своем вопросе [1] :
PS> "$response" # Note the enclosing "..."
@{ResourceType=UserStory; Id=202847; Name=Professional Lines: 2,800,000 Policy Aggregate Limit update}
Обратите внимание, что без вложенного "..."
вы получите более качественное табличное представление благодаря системе форматирования вывода PowerShell.
PS> $response # direct output of the object
ResourceType Id Name
------------ -- ----
UserStory 202847 Professional Lines: 2,800,000 Policy Aggregate Limit update
Предполагая, что $response
на самом деле все еще пользовательский объект , а не его строковое представление , вы можете просто получить доступ к пользовательскому объекту свойства для построения вашей строки , снова с использованием расширяемой строки :
PS> "TP Id:$($response.Id) $($response.Name)"
TP Id:202847 Professional Lines: 2,800,000 Policy Aggregate Limit update
Обратите внимание на необходимость использования $(...)
вокруг ссылок на свойства - см. этот ответ для краткого изложения правил расширения строк PowerShell.
Альтернативный подход заключается в использовании оператора -f
, который использует строки форматирования, такие как метод .NET String.Format()
:
PS> 'TP ID:{0} {1}' -f $response.Id, $response.Name
TP ID:202847 Professional Lines: 2,800,000 Policy Aggregate Limit update
[1] Вы также можете получить это представление, вызвав .psobject.ToString()
для пользовательского объекта; любопытно, что .ToString()
не работает, как в PowerShell Core 6.1.0; это удивительное несоответствие обсуждается в этом выпуске GitHub .