0
Я создал класс:Могу ли я использовать файл format.ps1xml для форматирования класса, созданного в PowerShell, и если да, то каким образом?
Class Group {
[Guid]$Id
[String]$DisplayName
[String[]]$Schemas
}
и Test.format.ps1xml файл:
<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
<SelectionSets>
</SelectionSets>
<Controls>
</Controls>
<ViewDefinitions>
<View>
<Name>Group</Name>
<ViewSelectedBy>
<TypeName>Group</TypeName>
</ViewSelectedBy>
<ListControl>
<ListEntries>
<ListEntry>
<ListItems>
<ListItem>
<PropertyName>Id</PropertyName>
</ListItem>
<ListItem>
<PropertyName>DisplayName</PropertyName>
</ListItem>
</ListItems>
</ListEntry>
</ListEntries>
</ListControl>
</View>
</ViewDefinitions>
</Configuration>
добавить формат для текущего экземпляра PowerShell:
Update-formatdata –prependpath "C:\Work\Test.format.ps1xml"
Но , когда я создаю экземпляр группы, формат не применяется, и я вижу всех членов класса.
E.g.
$group = New-Object Group
$group.Id = [Guid]::NewGuid()
$group.DisplayName = 'Name'
$group.Schemas = @('schema1', 'schema2')
$group
генерирует:
PS C:\Work> $group
Id : e2b6ccff-e72d-4494-8242-975618889c9c
DisplayName : Name
Schemas : {schema1, schema2}
Я бы ожидать, чтобы не видеть линию Schemas.
1) Убедитесь, что вы используете чистый сеанс PowerShell для тестирования ('PowerShell -noprofile'). 2) Показать '$ group.PSTypeNames'. 3) Построить [mcve] (ваш код отлично работает для меня). – PetSerAl
Вы правы. Это то, что я пытался сделать, потому что это было частью модуля PowerShell, который не вел себя, но я не смог сохранить файл формата после удаления строки для члена Schemas. Doh! Спасибо, что заставил меня вернуться к нему. +1 для этого. – serialhobbyist